local UIAnniversaryLuckyDrawMain = UIViewClass() local ItemIconPath = ConstAssetPathConfig.ItemIconPath local RewardCollectAnimationLoop = DataSheetManager.ConstData:GetDataByID("OnlineDialCartoon1").IntValue local NormalGapTime = FP.tonumberV1(DataSheetManager.ConstData:GetDataByID("OnlineDialCartoon2").FloatValue) local GapTimeList = DataSheetManager.ConstData:GetDataByID("OnlineDialCartoon3").IntListValue local FlashHoldTime = FP.tonumberV1(DataSheetManager.ConstData:GetDataByID("OnlineDialCartoon5").FloatValue) local FlashGapTime = FP.tonumberV1(DataSheetManager.ConstData:GetDataByID("OnlineDialCartoon6").FloatValue) local FlashTimes = DataSheetManager.ConstData:GetDataByID("OnlineDialCartoon4").IntValue local MilliCoefficient = 1000 local CellsMaxCount = 8 function UIAnniversaryLuckyDrawMain:OnOpened(context) self.activityId = context.activityId self:RegistSystemEvent(EventID.UI_AnniversaryLuckyDraw_OpenLuckyFish, self.OpenLuckyFishReward) --锦鲤大奖开奖 self:RegistSystemEvent(EventID.UI_AnniversaryLuckyFish_RewardRecord, self.RefreshLuckyFishReward) --锦鲤大奖记录数据更新 self:RegistSystemEvent(EventID.UI_AnniversaryLuckyDraw_AllRewardRecord, self.RefreshDrawRecord) --所有人抽奖记录数据更新 self:RegistSystemEvent(EventID.UI_AnniversaryLuckyDraw_RemainCount_Refresh, self.RefreshDrawTimes) --抽奖次数刷新 self:RegistSystemEvent(EventID.New_Day_Refresh, self.RefreshLuckyFish) --跨天 self:RegistSystemEvent(EventID.UI_AnniversaryLuckyDraw_Start, self.ShowRewardCollectAnimation) --开始抽奖 self.allowClose = true --抽奖动画期间不允许关闭界面 MDL.AnniversaryLuckyDraw.NewYearLuckyDrawRecordReq(self.activityId, MDL.AnniversaryLuckyDraw.RecordType.RecordTypeLuckyFish) MDL.AnniversaryLuckyDraw.NewYearLuckyDrawRecordReq(self.activityId, MDL.AnniversaryLuckyDraw.RecordType.RecordTypeAll) UIUtils.SetLabelText(self.UITemplateTitlePanel.lab_Title, Const_IDS["IDS_AnniversaryLuckyDraw_Title"]) UIUtils.SetActive(self.drawing_mask, false) self:StartRepeatFunc(self.UpdateLastDrawRecord, 10) if not MDL.AnniversaryLuckyDraw.IsOpenedLuckyFishReward() then self:StartRepeatFunc(self.RefreshLuckyFishTime, 1) end self:InitRewardPoolData() self:RefreshDrawTimes() self:RefreshLuckyFish() self:RefreshLuckyFishTime() self:RefreshEnterRedPointStatus() end function UIAnniversaryLuckyDrawMain:InitRewardPoolData() self.randomIndexList = {} self.loopBoxList = {} for i,v in DataSheetManager.LuckyDrawReward:GetEnumerator() do table.insert(self.loopBoxList, v.Reward) end for k,v in DataSheetManager.LuckyDrawReward:GetEnumerator() do local itemData = DataSheetManager.ItemData:GetDataByID(v.RewardItem) local itemIcon = string.format(ItemIconPath, itemData.Icon) UIUtils.SetImageByAssetBundle(self.rewards_group[k].icon, itemIcon) UIUtils.SetLabelText(self.rewards_group[k].txt_Name, Const_IDS[itemData.Name]) self.rewards_group[k].uiScrollTxt:SetText(UIUtils.GetLocalizedTxt(Const_IDS[itemData.Name])) UIUtils.SetLabel(self.rewards_group[k].txt_Num, v.RewardNum) end end function UIAnniversaryLuckyDrawMain:ShowRewardCollectAnimation(rewardId) self.allowClose = false UIUtils.SetActive(self.drawing_mask, true) self.effect_Draw:PlayUIEffect() self.index = 1 table.clear(self.randomIndexList) self.flashTimes = FlashTimes --获取该rewardId在列表的位置 local orderIndex = 0 for i,v in ipairs(self.loopBoxList) do if v == rewardId then orderIndex = i end end self.needNum = CellsMaxCount * RewardCollectAnimationLoop + orderIndex --随机不重复闪烁格子 for i=1,self.needNum-1 do local n = math.random(1,CellsMaxCount) if i > 1 and n == self.randomIndexList[i-1] then n = n-1 < 1 and CellsMaxCount or n-1 end table.insert(self.randomIndexList, n) end if self.randomIndexList[self.needNum-1] == orderIndex then self.randomIndexList[self.needNum-1] = orderIndex + 1 > CellsMaxCount and 1 or orderIndex + 1 end table.insert(self.randomIndexList, orderIndex) self:StartRepeatFunc(self.OnUpdateFun, NormalGapTime) end function UIAnniversaryLuckyDrawMain:OnUpdateFun(deltaTime, timeSinceUpdate) if self.needNum > 0 then ---转动格子数(通过显隐选中态) local gapTime = self.needNum <= #GapTimeList and (GapTimeList[self.needNum] / MilliCoefficient) or NormalGapTime if timeSinceUpdate >= gapTime then self:PlaySelectAnimation() self.needNum = self.needNum - 1 self.index = self.needNum > 0 and self.index + 1 or self.index self:ResetRepeatFunc(self.OnUpdateFun) end else if self.flashTimes > 0 then ---走到被抽中的格子,闪烁 if timeSinceUpdate >= FlashHoldTime + FlashGapTime then self:FlashSelectActive(true) self.flashTimes = self.flashTimes - 1 self:ResetRepeatFunc(self.OnUpdateFun) elseif timeSinceUpdate >= FlashHoldTime then self:FlashSelectActive(false) end else ---结束了抽奖动画要发送领奖协议 local realIndex = self.randomIndexList[self.index] UIUtils.SetActive(self.rewards_group[realIndex].img_Light, false) MDL.AnniversaryLuckyDraw.NewYearLuckyDrawReceive(self.activityId) self.allowClose = true UIUtils.SetActive(self.drawing_mask, false) self:StopRepeatFunc(self.OnUpdateFun) self.index = 1 self.effect_Draw:StopUIEffect() end end end function UIAnniversaryLuckyDrawMain:PlaySelectEffect() local realIndex = self.randomIndexList[self.index] UIUtils.SetActive(self.rewards_group[realIndex].img_Light, true) end function UIAnniversaryLuckyDrawMain:PlaySelectAnimation() local realIndex = self.randomIndexList[self.index] UIUtils.SetActive(self.rewards_group[realIndex].img_Light, true) CTL.Sound.PlayGameSound("UI_treasures_roll") local lastIndex = self.index - 1 if lastIndex > 0 then local realIndex = self.randomIndexList[lastIndex] UIUtils.SetActive(self.rewards_group[realIndex].img_Light, false) end end function UIAnniversaryLuckyDrawMain:FlashSelectActive(active) local realIndex = self.randomIndexList[self.index] UIUtils.SetActive(self.rewards_group[realIndex].img_Light, active) end function UIAnniversaryLuckyDrawMain:OpenLuckyFishReward(data) MDL.AnniversaryLuckyDraw.SetLuckyDrawPushInterface() MDL.AnniversaryLuckyDraw.NewYearLuckyDrawRecordReq(self.activityId, MDL.AnniversaryLuckyDraw.RecordType.RecordTypeLuckyFish) CTL.AnniversaryLuckyDraw.CloseAllPopUpUI() if data.acid == BattleDataGetter.GetAcID() then UIManager.OpenView(Const_UI_Lua.UIEnum.UIAnniversaryLuckyDrawJackpotListPanel,{openType = CTL.AnniversaryLuckyDraw.LuckyFishUIOpenType.Draw , data = data}) else UIManager.OpenView(Const_UI_Lua.UIEnum.UIAnniversaryLuckyDrawJackpotListPanel,{openType = CTL.AnniversaryLuckyDraw.LuckyFishUIOpenType.NotDraw, data = data}) end end function UIAnniversaryLuckyDrawMain:RefreshLuckyFishReward() self:TryOpenLuckyFishRewardUI() self:RefreshLuckyFish() self:RefreshLuckyFishTime() end function UIAnniversaryLuckyDrawMain:TryOpenLuckyFishRewardUI() if MDL.AnniversaryLuckyDraw.IsShowLuckyDrawPushInterface() then local data = MDL.AnniversaryLuckyDraw.GetTodayLuckyFishRewardPlayerInfo() if data.acid == BattleDataGetter.GetAcID() then UIManager.OpenView(Const_UI_Lua.UIEnum.UIAnniversaryLuckyDrawJackpotListPanel,{openType = CTL.AnniversaryLuckyDraw.LuckyFishUIOpenType.Draw , data = data}) else UIManager.OpenView(Const_UI_Lua.UIEnum.UIAnniversaryLuckyDrawJackpotListPanel,{openType = CTL.AnniversaryLuckyDraw.LuckyFishUIOpenType.NotDraw, data = data}) end end end function UIAnniversaryLuckyDrawMain:RefreshEnterRedPointStatus() MDL.RedPoint.OneTimeRedPointRequest(MDL.RedPoint.RedPointType.AnniversaryLuckyDraw, 1, true) MDL.AnniversaryLuckyDraw.SetRedPointStatus(self.activityId, false) end function UIAnniversaryLuckyDrawMain:UpdateLastDrawRecord(deltaTime, timeSinceUpdate) if not MDL.AnniversaryLuckyDraw.IsOpeningReward() then MDL.AnniversaryLuckyDraw.NewYearLuckyDrawRecordReq(self.activityId, MDL.AnniversaryLuckyDraw.RecordType.RecordTypeAll) end end function UIAnniversaryLuckyDrawMain:RefreshDrawRecord() local latestLuckyPlayerInfo = MDL.AnniversaryLuckyDraw.GetLatestLuckyPlayerInfo() if latestLuckyPlayerInfo then local itemName = DataSheetManager.ItemData:GetDataByID(latestLuckyPlayerInfo.rewardId).Name local str = string.FormatByIdsKey("IDS_AnniversaryLuckyDraw_Hint_4", latestLuckyPlayerInfo.name.." "..latestLuckyPlayerInfo.serverName, UIUtils.GetLocalizedTxt(Const_IDS[itemName]), latestLuckyPlayerInfo.rewardNum) UIUtils.SetLabel(self.txt_Info, str) else UIUtils.SetLabelText(self.txt_Info, Const_IDS.IDS_AnniversaryLuckyDraw_Hint_19) end end function UIAnniversaryLuckyDrawMain:RefreshDrawTimes() local drawTimes = MDL.AnniversaryLuckyDraw.GetLeftDrawTimes(self.activityId) local timeStr = drawTimes == 0 and UTL.Color.FormatRedColor(0) or UTL.Color.FormatGreenColor(drawTimes) UIUtils.SetLabel(self.lab_Times, string.FormatByIdsKey("IDS_AnniversaryLuckyDraw_Hint_5", timeStr)) self.btn_Gacha1:SetRedPoint(drawTimes > 0) end function UIAnniversaryLuckyDrawMain:RefreshLuckyFish() local luckyDrawData = DataSheetManager.LuckyDraw:GetDataByModeTypeID(1) local itemData = DataSheetManager.ItemData:GetDataByID(luckyDrawData.LuckyReward) local itemIcon = string.format(ItemIconPath, itemData.Icon) if luckyDrawData.LuckyRewardNum > 1 then UIUtils.SetLabel(self.luckyFishNum, luckyDrawData.LuckyRewardNum) else UIUtils.SetLabel(self.luckyFishNum, "") end UIUtils.SetImageByAssetBundle(self.luckyFishIcon, itemIcon) UIUtils.SetLabelText(self.txt_Reward, Const_IDS[itemData.Name]) if MDL.AnniversaryLuckyDraw.IsOpenedLuckyFishReward() then self.state_Jackpot:SetState(1) local todayLuckyFishLuckyPlayerInfo = MDL.AnniversaryLuckyDraw.GetTodayLuckyFishRewardPlayerInfo() if todayLuckyFishLuckyPlayerInfo then UIUtils.SetLabel(self.txt_PlayerName, todayLuckyFishLuckyPlayerInfo.name) UIUtils.SetLabel(self.txt_Sever, " "..todayLuckyFishLuckyPlayerInfo.serverName) end else self.state_Jackpot:SetState(0) local luckyDrawRule = string.FormatByIdsKey("IDS_AnniversaryLuckyDraw_Hint_2", UTL.Time.GetDiffLocalStrById(luckyDrawData.LuckyDrawTime), luckyDrawData.LuckyPlayerNum) UIUtils.SetLabel(self.txt_RuleInfo, luckyDrawRule) self.txt_TimeNum:ResetAndBeginCustomTimer(false, MDL.AnniversaryLuckyDraw.GetLuckyFishLeftTime(), 0, "{0}:{1}:{2}") end end function UIAnniversaryLuckyDrawMain:RefreshLuckyFishTime() if MDL.AnniversaryLuckyDraw.IsOpeningReward() then UIUtils.SetActive(self.txt_TimeNum.gameObject, false) UIUtils.SetActive(self.txt_opening, true) UIUtils.SetLabelText(self.txt_opening, Const_IDS.IDS_AnniversaryLuckyDraw_Hint_21) else UIUtils.SetActive(self.txt_TimeNum.gameObject, true) UIUtils.SetActive(self.txt_opening, false) end end function UIAnniversaryLuckyDrawMain:OnBackButtonPressed() self:OnButtonClicked(self.UITemplateTitlePanel.btn_close) end function UIAnniversaryLuckyDrawMain:OnButtonClicked(comp) if comp == self.UITemplateTitlePanel.btn_close then self:CloseView() elseif comp == self.UITemplateTitlePanel.btn_Home then CTL.HomeMain.CloseViewBackHomeMain() elseif comp == self.UITemplateTitlePanel.btn_Info then local luckyDrawData = DataSheetManager.LuckyDraw:GetDataByModeTypeID(1) local timeStr = UTL.Time.GetDiffLocalStrById(luckyDrawData.LuckyDrawTime) UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonNoteView, {id = LuaConst.NoteID.AnniversaryLuckyDraw, params = {timeStr}}) elseif comp == self.btn_List or comp == self.btn_Info then UIManager.OpenView(Const_UI_Lua.UIEnum.UIAnniversaryLuckyDrawListPanel, {activityId = self.activityId}) elseif comp == self.btn_GachaRecord then UIManager.OpenView(Const_UI_Lua.UIEnum.UIAnniversaryLuckyDrawRewardListPanel, {activityId = self.activityId}) elseif comp == self.btn_JackpotInfo then UIManager.OpenView(Const_UI_Lua.UIEnum.UIAnniversaryLuckyDrawJackpotListPanel,{openType = CTL.AnniversaryLuckyDraw.LuckyFishUIOpenType.Default, activityId = self.activityId}) elseif comp == self.btn_Gacha1 then self:OnClickCollect() elseif comp == self.add_Count then UIManager.OpenView(Const_UI_Lua.UIEnum.UIAnniversaryLuckyDrawGachaResourcePanel,{activityId = self.activityId}) elseif comp == self.luckyFishBtn then local luckyDrawData = DataSheetManager.LuckyDraw:GetDataByModeTypeID(1) UTL.ItemTips.ShowCommonTipsById(luckyDrawData.LuckyReward) else for i = 1, CellsMaxCount do if comp == self.rewards_group[i].btn_Click then CTL.Sound.PlayGameSound("UI_trial") UTL.ItemTips.ShowCommonTipsById(DataSheetManager.LuckyDrawReward:GetDataByReward(i).RewardItem) break end end end end function UIAnniversaryLuckyDrawMain:OnClickCollect() if MDL.AnniversaryLuckyDraw.GetLeftDrawTimes(self.activityId) <= 0 then CTL.Tips.AddTipsMsg(Const_IDS["IDS_AnniversaryLuckyDraw_Hint_17"]) else MDL.AnniversaryLuckyDraw.NewYearLuckyDrawReq(self.activityId) end end function UIAnniversaryLuckyDrawMain:OnClosed() if not self.allowClose then UIUtils.SetActive(self.drawing_mask, false) MDL.AnniversaryLuckyDraw.NewYearLuckyDrawReceive(self.activityId) end end return UIAnniversaryLuckyDrawMain