local UILuckyLotterySelectReward = UIViewClass() function UILuckyLotterySelectReward:OnOpened(context) self.activityId = context.activityId UIUtils.SetLabelText(self.UITemplateTitlePanel.lab_Title, Const_IDS.IDS_LuckyLottery_Button_1) UIUtils.SetActive(self.UITemplateTitlePanel.btn_Info, false) self.totalRoundNum = MDL.OperationActivity.LuckyLotteryModeData:GetDataByActivityID(self.activityId).TotalRound self.roundSelectNum = MDL.OperationActivity.LuckyLotteryModeData:GetDataByActivityID(self.activityId).RoundOptionalRewardNum self.selectItemList = {} for i = 1, self.totalRoundNum do self.selectItemList[i] = {} end self.selectRound = 1 self:RefreshPanelByRound() end function UILuckyLotterySelectReward:OnClosed() UIUtils.SetActive(self.UITemplateTitlePanel.btn_Info, true) end function UILuckyLotterySelectReward:RefreshPanelByRound() UIUtils.SetActive(self.btn_Front, self.selectRound ~= 1) UIUtils.SetActive(self.btn_Next, self.selectRound ~= self.totalRoundNum) UIUtils.SetActive(self.btn_Finish, self.selectRound == self.totalRoundNum) self.txt_Title.text = string.FormatByIdsKey("IDS_LuckyLottery_ChooseRewardHint_1", self.selectRound, self.totalRoundNum) self.maxSelectNum = self.roundSelectNum[self.selectRound] self:RefreshItemLoop() self:RefreshSelectedItem() end function UILuckyLotterySelectReward:OnButtonClicked(comp) if comp == self.UITemplateTitlePanel.btn_close then self:CloseView() elseif comp == self.UITemplateTitlePanel.btn_Home then CTL.HomeMain.CloseViewBackHomeMain() elseif comp == self.btn_Front then self.selectRound = self.selectRound - 1 self:RefreshPanelByRound() elseif comp == self.btn_Next then if table.getDictCount(self.selectItemList[self.selectRound]) < self.maxSelectNum then CTL.Tips.AddTipsMsg(Const_IDS.IDS_LuckyLottery_ChooseRewardHint_6) else self.selectRound = self.selectRound + 1 self:RefreshPanelByRound() end elseif comp == self.btn_Finish then if table.getDictCount(self.selectItemList[self.selectRound]) < self.maxSelectNum then CTL.Tips.AddTipsMsg(Const_IDS.IDS_LuckyLottery_ChooseRewardHint_6) else local list = {} for roundId, roundList in ipairs(self.selectItemList) do for i, v in ipairs(roundList) do table.insert(list, v) end end --打开确认奖励界面 UIManager.OpenView(Const_UI_Lua.UIEnum.UILuckyLotteryConfirmReward, {activityId = self.activityId, rewardList = list}) end else for i, v in ipairs(self.group_Selected) do if comp == v.btn_Item then local rewardId = self.selectItemList[self.selectRound][i] if rewardId then self.selectItemList[self.selectRound][i] = nil self:RefreshSelectedItem() self.loop_PreReward:RefreshCells() return end end end end end function UILuckyLotterySelectReward:OnBackButtonPressed() self:OnButtonClicked(self.UITemplateTitlePanel.btn_close) end function UILuckyLotterySelectReward:RefreshItemLoop() self.loop_PreReward:ReloadAll(MDL.LuckyLottery.GetOptionRewardByRound(self.activityId, self.selectRound)) if self.loop_PreReward.Count > 7 then self.loop_PreReward:SetMovementType(1) self.loop_PreReward:MoveIndex(0) else self.loop_PreReward:SetMovementType(3) end end function UILuckyLotterySelectReward:RefreshSelectedItem() local list = self.selectItemList[self.selectRound] local isNow = true for i, v in ipairs(self.group_Selected) do if i > self.maxSelectNum then UIUtils.SetActive(v.gameObject, false) else UIUtils.SetActive(v.gameObject, true) local rewardId = list[i] v.effect_Rare:StopUIEffect() v.effect_Now:StopUIEffect() v.state_Item:SetState(rewardId and 1 or 0) if rewardId then local data = MDL.OperationActivity.LuckyLotteryOptionalReward:GetDataByActivityID_ID(self.activityId, list[i]) UTL.Item.ItemIconWithoutBg(v.img_Item, data.ItemID) CTL.LuckyLottery.SetQualityBg(v.img_Quality, data.ItemID) v.txt_Num.text = data.ItemNum if data.FinalRewardSign > 0 then v.effect_Rare:PlayUIEffect() end else CTL.LuckyLottery.SetQualityBg(v.img_Quality) if isNow then v.effect_Now:PlayUIEffect() isNow = false end end end end end function UILuckyLotterySelectReward:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_PreReward then UTL.Item.SetItemCell(cellTable.item, data.ItemID, data.ItemNum) cellTable.state_Select:SetState(self:IsSelected(data.RoundID, data.ID) and 1 or 0) end end function UILuckyLotterySelectReward:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_PreReward then if target == cellTable.toggle_IsSelect then local roundId = data.RoundID local rewardId = data.ID local IsSelected, selectedIndex = self:IsSelected(roundId, rewardId) if IsSelected then self.selectItemList[roundId][selectedIndex] = nil else if table.getDictCount(self.selectItemList[roundId]) >= self.maxSelectNum then CTL.Tips.AddTipsMsg(Const_IDS.IDS_LuckyLottery_ChooseRewardHint_5) return end for i = 1, self.maxSelectNum do if not self.selectItemList[roundId][i] then self.selectItemList[roundId][i] = rewardId break end end end self.loop_PreReward:UpdateIndex(index) self:RefreshSelectedItem() elseif target == cellTable.item.event_Click then UTL.ItemTips.ShowCommonTipsById(data.ItemID) end end end function UILuckyLotterySelectReward:IsSelected(roundId, rewardId) local list = self.selectItemList[roundId] if list and next(list) then for i, v in pairs(list) do if v == rewardId then return true, i end end end return false, nil end return UILuckyLotterySelectReward