PGRData/Script/matrix/xoverseas/xui/xuislotmachine/XUiSlotMachineRewardPanel.lua

139 lines
5.5 KiB
Lua
Raw Normal View History

local tableInsert = table.insert
local Vector3 = CS.UnityEngine.Vector3
local XUiSlotMachineRewardItem = require("XOverseas/XUi/XUiSlotMachine/XUiSlotMachineRewardItem")
local XUiSlotMachineRewardPanel = XClass(nil, "XUiSlotMachineRewardPanel")
function XUiSlotMachineRewardPanel:Ctor(rootUi, ui)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.RectTransform = ui
self.RootUi = rootUi
XTool.InitUiObject(self)
self:Init()
end
function XUiSlotMachineRewardPanel:Init()
self.RewardsPool = {}
end
function XUiSlotMachineRewardPanel:Refresh(machineId, isResetContentPos)
self.CurMachineEntity = XDataCenter.SlotMachineManager.GetSlotMachineDataEntityById(machineId)
self.CurMachineConfig = XSlotMachineConfigs.GetSlotMachinesTemplateById(machineId)
self.CurMachineActAmount = #(XSlotMachineConfigs.GetSlotMachinesActivityTemplate())
local totalScore = self.CurMachineEntity:GetTotalScore()
self.TxtCurScore.text = totalScore
--self.ImgProgress.fillAmount = totalScore / self.CurMachineEntity:GetScoreLimit()
if isResetContentPos then
self.Content.transform.localPosition = Vector3(self.Content.transform.localPosition.x, 0, 0)
end
self:RefreshRewardGrid()
self:SetMoreWardsState()
self.Content.transform:DOLocalMoveY(self.Content.transform.localPosition.y - 1, 0.05):OnComplete(function() -- 这里目的是让content移动一下规避奖励特效不出现问题
self.Content.transform:DOLocalMoveY(self.Content.transform.localPosition.y + 1, 0.05)
end)
end
function XUiSlotMachineRewardPanel:RefreshRewardGrid()
if self.CurMachineEntity then
local rewardList = self:GetReverseTable(self.CurMachineEntity:GetRewardIds())
local rewardScore = self:GetReverseTable(self.CurMachineEntity:GetRewardScores())
local totalScore = self.CurMachineEntity:GetTotalScore()
local rewardDatas = {}
local rewardCount = #rewardList
local curReachIndex = 0
for index, rewardId in ipairs(rewardList) do
local data = {
Index = (rewardCount-index+1),
RewardId = rewardId,
RewardScore = rewardScore[index],
}
if totalScore>=rewardScore[index] then
curReachIndex = curReachIndex+1
end
tableInsert(rewardDatas, data)
end
local onCreatCb = function (item, data)
item:SetActiveEx(true)
item:OnCreat(data)
item:SetTakedState(XDataCenter.SlotMachineManager.CheckRewardState(self.CurMachineEntity:GetId(), data.Index))
item:SetBtnActiveCallBack(function () self:TakeReward(data.Index) end)
end
local process = 0
local oneProcess = math.floor(1/rewardCount*100)/100 --每一份奖励所占进度
if curReachIndex <= rewardCount then
local nextReachIndex = rewardCount-curReachIndex
if nextReachIndex == 0 then
process = 1
elseif nextReachIndex <= rewardCount then
local temp = rewardScore[nextReachIndex]
local tempL = 0
if nextReachIndex < rewardCount then
tempL = rewardScore[nextReachIndex+1]
end
local processL = ((totalScore-tempL)/(temp-tempL))*oneProcess
process = (math.floor((curReachIndex/rewardCount)*100)/100)+processL
process = math.floor(process*100)/100
end
end
self.ImgProgress.fillAmount = process
XUiHelper.CreateTemplates(self.RootUi, self.RewardsPool, rewardDatas, XUiSlotMachineRewardItem.New, self.RewardRoot, self.RewardPanel, onCreatCb)
end
end
function XUiSlotMachineRewardPanel:SetMoreWardsState()
if self.CurMachineEntity then
local rewardList = self.CurMachineEntity:GetRewardIds()
local rewardScore = self.CurMachineEntity:GetRewardScores()
if #rewardList > 5 then
for i = 6, #rewardList do
local rewardState = XDataCenter.SlotMachineManager.CheckRewardState(self.CurMachineEntity:GetId(), i)
if rewardState == XSlotMachineConfigs.RewardTakeState.NotTook then
--self.PanelMorerewards.gameObject:SetActiveEx(true)
self:SetMoreRewardPanelActive(true)
return
end
end
end
end
--self.PanelMorerewards.gameObject:SetActiveEx(false)
self:SetMoreRewardPanelActive(false)
end
function XUiSlotMachineRewardPanel:SetMoreRewardPanelActive(flag)
if not flag then
for i = 1, self.CurMachineActAmount do
if self["Highlight"..i] then
self["Highlight"..i].gameObject:SetActiveEx(false)
end
end
else
for i = 1, self.CurMachineActAmount do
if self["Highlight"..i] then
if i == self.CurMachineConfig.HighLight then
self["Highlight"..i].gameObject:SetActiveEx(true)
else
self["Highlight"..i].gameObject:SetActiveEx(false)
end
end
end
end
end
function XUiSlotMachineRewardPanel:TakeReward(index)
XDataCenter.SlotMachineManager.GetSlotMachineReward(self.CurMachineEntity:GetId(), index)
end
function XUiSlotMachineRewardPanel:GetReverseTable(arr) -- 翻转数组(只能是数组)
local tmp = {}
for i = #arr, 1, -1 do
tableInsert(tmp, arr[i])
end
return tmp
end
return XUiSlotMachineRewardPanel