local YiJingBaoKu = {} local sortingOrder = 0 local trigger = true local BlessingConfig = ConfigManager.GetConfig(ConfigName.BlessingRewardPoolNew) function YiJingBaoKu:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = YiJingBaoKu }) return b end function YiJingBaoKu:InitComponent() self._itemsList = {} self._itemsPosList={} self.itemViewList = {} -- top self.name = Util.GetGameObject(self.gameObject, "top/name/Text"):GetComponent("Text") self.itemFinal = Util.GetGameObject(self.gameObject, "top/reward/icon") self.addBtn = Util.GetGameObject(self.gameObject, "top/reward/add") self.refrashBtn = Util.GetGameObject(self.gameObject, "top/reward/refrash") self.tip = Util.GetGameObject(self.gameObject, "top/reward/tips/Text"):GetComponent("Text") --leftUp self.leftTime = Util.GetGameObject(self.gameObject, "leftUp/time"):GetComponent("Text") --rightUp self.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn") self.helpPosition=self.helpBtn:GetComponent("RectTransform").localPosition self.rewardPre = Util.GetGameObject(self.gameObject, "rightUp/rewardPre") --mid self.grid = Util.GetGameObject(self.gameObject, "mid/content/grid") for i = 1, self.grid.transform.childCount do self._itemsList[i] = self.grid.transform:GetChild(i - 1) self._itemsPosList[i] = self._itemsList[i]:GetComponent("RectTransform").localPosition end --bottom self.tip2 = Util.GetGameObject(self.gameObject, "tip"):GetComponent("Text") --effect self.effect = Util.GetGameObject(self.gameObject, "UI_Effect_YJBK_Zao") end --绑定事件(用于子类重写) function YiJingBaoKu:BindEvent() Util.AddClick(self.addBtn,function() UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.YiJingBaoKu,self.ActData,function() self:SetFinalReward() self:FrontToBack() self.refrashBtn:SetActive(self.ActData.selectId ~= 0) end) end) Util.AddClick(self.refrashBtn,function() UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.YiJingBaoKu,self.ActData,function() self:SetFinalReward() end) end) Util.AddClick(self.helpBtn,function() UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.YiJingBaoKu,self.helpPosition.x,self.helpPosition.y) end) Util.AddClick(self.rewardPre,function() if self.ActData.selectId == 0 then PopupTipPanel.ShowTip(Language[10522]) return end UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.YiJingBaoKuRewardPreview,self.ActData) end) end --添加事件监听(用于子类重写) function YiJingBaoKu:AddListener() end --移除事件监听(用于子类重写) function YiJingBaoKu:RemoveListener() end --界面打开时调用(用于子类重写) function YiJingBaoKu:OnOpen(_activityConfig,_index,parent) self.actConfig = _activityConfig self.pageIndex = _index self.parent = parent end --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function YiJingBaoKu:OnShow(_sortingOrder) self.gameObject:SetActive(true) Util.AddParticleSortLayer(self.effect, _sortingOrder - sortingOrder) sortingOrder = _sortingOrder self.actId = self.actConfig.ActId self.actType = self.actConfig.ActiveType > 0 and self.actConfig.ActiveType or self.actConfig.FunType if self.actConfig.IfBack == 1 then if self.actConfig.ActiveType > 0 then local id = ActivityGiftManager.IsActivityTypeOpen(self.actConfig.ActiveType) if id and id > 0 then self.actId = id local config = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"PageType",self.actConfig.PageType,"ActiveType",self.actConfig.ActiveType,"ActId",id) if config then self.actConfig = config end end end end local image = Util.GetGameObject(self.effect, "UI_Effect_YJBK_Zao/GameObject/Image (2)"):GetComponent("Canvas") image.sortingOrder = _sortingOrder + 1 sortingOrder = _sortingOrder self:Refresh() end function YiJingBaoKu:OnSortingOrderChange(_sortingOrder) Util.AddParticleSortLayer(self.effect, _sortingOrder - sortingOrder) local image = Util.GetGameObject(self.effect, "UI_Effect_YJBK_Zao/GameObject/Image (2)"):GetComponent("Canvas") image.sortingOrder = _sortingOrder + 1 sortingOrder = _sortingOrder end --刷新 function YiJingBaoKu:Refresh() self.ActData = DynamicActivityManager.GetBaoKuData() if self.ActData.selectId == 0 then--如果没有选择了最终奖励 self:ResetCardToFront()--把卡片全部翻到正面 self:InitSetAllCard()--显示所有奖励 self.tip.text = Language[10523] else--选择了最终奖励 self:ResetCardToBack()--把卡片全部翻到背面 self:SetFinalReward()--设置最终奖励 self:SetCardData()--把抽取过的卡翻过来 self.tip.text = Language[10524] end self:TimeCountDown()--时间 self:AddBackToFrontClick()--增加背面的带点击事件 trigger = true self.addBtn:GetComponent("Button").enabled = self.ActData.selectId == 0 self.name.text = Language[10262]..NumToSimplenessFont[self.ActData.curLevel]..Language[10269] self.tip2.text = Language[10525] local t1 = true for i = 1, #self.ActData.finalCardDatas do if self.ActData.selectId == self.ActData.finalCardDatas[i].rewardId then t1 = false end end self.refrashBtn:SetActive((self.ActData.selectId ~= 0) and t1) end function YiJingBaoKu:SetCardData() for i = 1, #self.ActData.finalCardDatas do local v = self.ActData.finalCardDatas[i] if v.rewardId ~= 0 then local item = self._itemsList[i] local cFront = Util.GetGameObject(item, "front") local cBack = Util.GetGameObject(item, "back") if not self.itemViewList[i] then self.itemViewList[i] = SubUIManager.Open(SubUIConfig.ItemView,cFront.transform) end self.itemViewList[i]:OnOpen(false, v.reward, 1.1, false, false, false, sortingOrder) self.itemViewList[i].transform.localPosition = Vector2.New(-73.5,78.5) cFront:GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 0, 0)) cBack:GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 90, 0)) self.itemViewList[i].gameObject:SetActive(true) end end end function YiJingBaoKu:SetFinalReward() self.ActData = DynamicActivityManager.GetBaoKuData() if not self.finalReward then self.finalReward = SubUIManager.Open(SubUIConfig.ItemView,self.addBtn.transform) end self.finalReward:OnOpen(false, BlessingConfig[self.ActData.selectId].Reward, 1.1, false, false, false, sortingOrder) self.finalReward.transform.localPosition = Vector2.New(-73.5,78.5) self.finalReward.gameObject:SetActive(true) end --初始化给所有坑赋值 function YiJingBaoKu:InitSetAllCard() for i = 1, #self._itemsList do if self.ActData.initCardDatas[i].reward then self:SetSingleCardData(i,self._itemsList[i],self.ActData.initCardDatas[i].reward) end end end ----单个的卡增加点击 function YiJingBaoKu:AddBackToFrontClick() for index, value in ipairs(self._itemsList) do local cFront = Util.GetGameObject(value, "front") local cBack = Util.GetGameObject(value, "back") local btn = Util.GetGameObject(value, "back/btn") Util.AddOnceClick(btn,function() --请求奖励 if BagManager.GetTotalItemNum(1004) <= 0 then PopupTipPanel.ShowTip(Language[10526]) return end if not trigger then return end trigger = false -- LogYellow("请求的MissionId:"..self.ActData.finalCardDatas[index].Id) NetManager.GetActivityRewardRequest(self.ActData.finalCardDatas[index].Id,self.ActData.activityId,function (drop) local tempData = self:RebuildDrop(drop) self:SetSingleCardData(index,value,tempData) local thread=coroutine.start(function() self.effect.transform:SetParent(value.transform) self.effect:GetComponent("RectTransform").localPosition = Vector3.zero self.effect:SetActive(true) coroutine.wait(1) self.effect:SetActive(false) cBack.transform:DORotate(Vector3.New(0, 90, 0), 0.3) coroutine.wait(0.3) cFront.transform:DORotate(Vector3.New(0, 0, 0), 0.3) coroutine.wait(0.2) UIManager.OpenPanel(UIName.RewardItemPopup, drop, 1,function () trigger = true if tempData[1] == BlessingConfig[self.ActData.selectId].Reward[1] then self.finalReward.gameObject:SetActive(false) if self.itemViewList[18] then self.itemViewList[18].gameObject:SetActive(false) else Util.GetGameObject(self._itemsList[18],"front"):GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 0, 0)) end self:Refresh() end end) end) end) end) end end function YiJingBaoKu:RebuildDrop(drop) local tempTable = BagManager.GetTableByBackDropData(drop) local reward = {tempTable[1].sId,tempTable[1].num} return reward end --单个翻卡赋值 function YiJingBaoKu:SetSingleCardData(index,item,reward) local root = Util.GetGameObject(item,"front") if not self.itemViewList[index] then self.itemViewList[index] = SubUIManager.Open(SubUIConfig.ItemView,root.transform) end self.itemViewList[index]:OnOpen(false, reward, 1.1, false, false, false, sortingOrder) self.itemViewList[index].transform.localPosition = Vector2.New(-73.5,78.5) self.itemViewList[index].gameObject:SetActive(true) end --所有奖励翻面 function YiJingBaoKu:FrontToBack() local thread=coroutine.start(function() for index, value in ipairs(self._itemsList) do local cFront = Util.GetGameObject(value, "front") cFront.transform:DORotate(Vector3.New(0, 90, 0), 0.3) end coroutine.wait(0.3) for index, value in ipairs(self._itemsList) do local cBack = Util.GetGameObject(value, "back") cBack.transform:DORotate(Vector3.New(0, 0, 0), 0.3) end coroutine.wait(0.3) for index, value in ipairs(self._itemsList) do value.transform:DOLocalMove(Vector3.New(0,0,0), 0.3) end coroutine.wait(0.3) for index, value in ipairs(self._itemsList) do value.transform:DOLocalMove(Vector3.New(self._itemsPosList[index].x,self._itemsPosList[index].y,self._itemsPosList[index].z), 0.3) end end) end --把所有卡置为正面 function YiJingBaoKu:ResetCardToFront() for index, value in ipairs(self._itemsList) do local cFront = Util.GetGameObject(value, "front") cFront:GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 0, 0)) end for index, value in ipairs(self._itemsList) do local cBack = Util.GetGameObject(value, "back") cBack:GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 90, 0)) end end --把所有卡置为背面 function YiJingBaoKu:ResetCardToBack() for index, value in ipairs(self._itemsList) do local cFront = Util.GetGameObject(value, "front") cFront:GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 90, 0)) end for index, value in ipairs(self._itemsList) do local cBack = Util.GetGameObject(value, "back") cBack:GetComponent("RectTransform").rotation = Quaternion.Euler(Vector3.New(0, 0, 0)) end end --时间 function YiJingBaoKu:TimeCountDown() local time = self.ActData.endTime - GetTimeStamp() self.leftTime.text = Language[10023]..TimeToFelaxible(time) if self.timer1 then self.timer1:Stop() self.timer1 = nil end self.timer1 = Timer.New(function() self.leftTime.text = Language[10023]..TimeToFelaxible(time) if time < 1 then self.timer1:Stop() self.timer1 = nil self:ClosePanel() end time = time -1 end, 1, -1, true) self.timer1:Start() end function YiJingBaoKu:OnClose() self.gameObject:SetActive(false) if self.timer1 then self.timer1:Stop() self.timer1 = nil end end --界面销毁时调用(用于子类重写) function YiJingBaoKu:OnDestroy() self._itemsList = {} self._itemsPosList={} self.itemViewList = {} self.finalReward = nil end return YiJingBaoKu