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