require("Base/BasePanel") PrayMainPanel = Inherit(BasePanel) local this = PrayMainPanel local blessingConfig = ConfigManager.GetConfig(ConfigName.BlessingConfig) --16个祈福奖励 local RewardParentGrid = {} local RewardItemGrid = {} --16个祈福奖励预览 local yunLanRewardParentGrid = {} local yunLanRewardItemGrid = {} --当前祈福完成的个数 local allGetFinishRewardNum = 0 local allGetRewardNum = 0 local blessingConFigData = {} local itemId = 0 local itemNum = 0 local itemData = {} --累计奖励 local extraRewardParentGrid = {} local extraRewardItemGrid = {} --是否在刷新时间范围内 local isRefresh = true local orginLayer = 0 --初始化组件(用于子类重写) function PrayMainPanel:InitComponent() this.spLoader = SpriteLoader.New() orginLayer = 0 self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, { showType = UpViewOpenType.ShowLeft }) self.BtnBack = Util.GetGameObject(self.transform, "btnBack") self.bg = Util.GetGameObject(self.transform, "bg") screenAdapte(self.bg) self.tishiText = Util.GetGameObject(self.gameObject, "downGo/name/tishiText") self.tishiText2 = Util.GetGameObject(self.gameObject, "downGo/name/tishiText2") self.tishiText3 = Util.GetGameObject(self.gameObject, "downGo/name/tishiText3") self.tishiText2Text = Util.GetGameObject(self.gameObject, "downGo/name/tishiText2/tishiText1"):GetComponent("Text") self.tishiText2Image = Util.GetGameObject(self.gameObject, "downGo/name/tishiText2/itemImage"):GetComponent("Image") self.refreshBtn = Util.GetGameObject(self.gameObject, "upGo/refreshBtn") self.yulanBtn = Util.GetGameObject(self.gameObject, "upGo/yulanBtn") self.extraRewardGo = Util.GetGameObject(self.gameObject, "upGo/extraRewardPre") self.extraRewardParent = Util.GetGameObject(self.gameObject, "upGo/extraRewardPre/parent") self.allPrayNum = Util.GetGameObject(self.gameObject, "upGo/extraRewardPre/getNumText"):GetComponent("Text") self.extraRewardExp = Util.GetGameObject(self.transform, "upGo/extraRewardPre/exp"):GetComponent("Slider") self.extraRewardExpText = Util.GetGameObject(self.gameObject, "upGo/extraRewardPre/exp/Text"):GetComponent("Text") self.extraRewardNameText = Util.GetGameObject(self.gameObject, "upGo/extraRewardPre/nameText"):GetComponent("Text") this.RewardGrid = Util.GetGameObject(self.gameObject, "downGo/RewardGrid") for i = 1, 16 do RewardParentGrid[i] = Util.GetGameObject(self.gameObject, "downGo/RewardGrid/ItemView ("..i..")") RewardItemGrid[i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(RewardParentGrid[i].transform, "itemParent").transform) yunLanRewardParentGrid[i] = Util.GetGameObject(self.gameObject, "previewRewardLayout/RewardGrid/ItemView ("..i..")") yunLanRewardItemGrid[i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(yunLanRewardParentGrid[i].transform, "itemParent").transform) end --奖励预览 self.previewRewardLayout = Util.GetGameObject(self.gameObject, "previewRewardLayout") self.previewRewardLayout:SetActive(false) self.yulanMaskBtn = Util.GetGameObject(self.gameObject, "previewRewardLayout/maskBtn") --累计奖励预览 self.extraRewardBtn = Util.GetGameObject(self.gameObject, "upGo/extraRewardPre/extraRewardBtn") self.extraRewardLayout = Util.GetGameObject(self.gameObject, "extraRewardLayout") self.extraRewardLayout:SetActive(false) self.extraMaskBtn = Util.GetGameObject(self.gameObject, "extraRewardLayout/maskBtn") for i = 1, 6 do extraRewardParentGrid[i] = Util.GetGameObject(self.gameObject, "extraRewardLayout/RewardRect/RewardGrid/ItemView ("..i..")") extraRewardItemGrid[i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(extraRewardParentGrid[i].transform, "itemParent").transform) end --时间 self.activeTimeText = Util.GetGameObject(self.gameObject, "upGo/name/time/timeImage/timeText"):GetComponent("Text") self.activeRefreshTimeText = Util.GetGameObject(self.gameObject, "upGo/refreshTimeBg/refreshTimeText") self.refreshTimeBg = Util.GetGameObject(self.gameObject, "upGo/refreshTimeBg") self.effect = Util.GetGameObject(self.gameObject, "effect") effectAdapte(Util.GetGameObject(self.effect, "Partical/ziti mask (1)")) end --绑定事件(用于子类重写) function PrayMainPanel:BindEvent() Util.AddClick(self.BtnBack, function() self:ClosePanel() end) Util.AddClick(self.refreshBtn, function() self:RefreshBtnClick() end) Util.AddClick(self.yulanMaskBtn, function() self.previewRewardLayout:SetActive(false) end) Util.AddClick(self.yulanBtn, function() for i = 1, #PrayManager.patyPreviewRewardData do if allGetRewardNum > 0 then local patyPreviewRewardData = PrayManager.patyPreviewRewardData[i] this:ShowSingleRewardData(false,yunLanRewardParentGrid[i],yunLanRewardItemGrid[i],patyPreviewRewardData,false) end end self.previewRewardLayout:SetActive(true) end) Util.AddClick(self.extraMaskBtn, function() self.extraRewardLayout:SetActive(false) end) Util.AddClick(self.extraRewardBtn, function() --累计奖励 for i = 1, 6 do if i <= #PrayManager.extraRewardData then extraRewardParentGrid[i]:SetActive(true) local patyRewardData = PrayManager.extraRewardData[i] this:ShowSingleExtraRewardData(false,extraRewardParentGrid[i],extraRewardItemGrid[i],patyRewardData) else extraRewardParentGrid[i]:SetActive(false) end end self.extraRewardLayout:SetActive(true) end) end --添加事件监听(用于子类重写) function PrayMainPanel:AddListener() end --移除事件监听(用于子类重写) function PrayMainPanel:RemoveListener() end --界面打开时调用(用于子类重写) function PrayMainPanel:OnOpen(...) Util.GetGameObject(self.gameObject, "upGo/name/time/timeImage/Text"):GetComponent("Text").text = Language[11637]..tostring(16)..Language[11638] SetTextVerTial(Util.GetGameObject(self.gameObject, "upGo/name/time/timeImage/Text"),Vector3.New(0,-6.4,0),"MiddleLeft") end local isPlayAinEnd = true --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function PrayMainPanel:OnShow() isPlayAinEnd = true self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.LightRing }) blessingConFigData = blessingConfig[1].Cost this.ShowRewardDataList() end function PrayMainPanel:OnSortingOrderChange() -- 设置特效 Util.AddParticleSortLayer(self.effect, self.sortingOrder - orginLayer) orginLayer = self.sortingOrder self.previewRewardLayout.transform:GetComponent("Canvas").sortingOrder = self.sortingOrder + 50 self.extraRewardLayout.transform:GetComponent("Canvas").sortingOrder = self.sortingOrder + 50 end --获取活动时间 和 刷新倒计时显示 function PrayMainPanel:SetRemainTime() local activityInfo = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.Pray)--Pray if activityInfo then if activityInfo.endTime ~= 0 then Log("活动时间: "..activityInfo.startTime.." "..activityInfo.endTime) self.activeTimeText.text = Language[10584]..self:TimeStampToDateStr2(activityInfo.startTime).."~"..self:TimeStampToDateStr2(activityInfo.endTime) end end local privilegeId = blessingConfig[1].RefreshCd local maxResreshNum = PrivilegeManager.GetPrivilegeNumber(privilegeId) -- Log("sssssssssssssssss "..PrayManager.lastRefreshTime.." "..maxResreshNum.." "..GetTimeStamp()) self:RemainTimeDown(PrayManager.lastRefreshTime+(maxResreshNum) - GetTimeStamp()) end --刷新倒计时显示 function PrayMainPanel:RemainTimeDown(timeDown) if timeDown > 0 then self.refreshTimeBg:SetActive(true) self.activeRefreshTimeText:GetComponent("Text").text = TimeStampToDateStr3(timeDown) isRefresh = false Util.SetGray(self.refreshBtn, true) if self.timer then self.timer:Stop() self.timer = nil end self.timer = Timer.New(function() self.activeRefreshTimeText:GetComponent("Text").text = TimeStampToDateStr3(timeDown) if timeDown < 0 then isRefresh = true self.refreshTimeBg:SetActive(false) Util.SetGray(self.refreshBtn, false) self.timer:Stop() self.timer = nil end timeDown = timeDown - 1 end, 1, -1, true) self.timer:Start() else isRefresh = true Util.SetGray(self.refreshBtn, false) self.refreshTimeBg:SetActive(false) end end --展示所有祈福奖励 function this.ShowRewardDataList() this:OnShowExtraRewar() this:SetRemainTime() for i = 1, #PrayManager.patyRewardData do local patyRewardData = PrayManager.patyRewardData[i] this:ShowSingleRewardData(false,RewardParentGrid[i],RewardItemGrid[i],patyRewardData,true) --if allGetRewardNum > 0 then -- local patyPreviewRewardData = PrayManager.patyPreviewRewardData[i] -- this:ShowSingleRewardData(false,yunLanRewardParentGrid[i],yunLanRewardItemGrid[i],patyPreviewRewardData,false) --end end --累计奖励 --for i = 1, #PrayManager.extraRewardData do -- local patyRewardData = PrayManager.extraRewardData[i] -- this:ShowSingleExtraRewardData(false,extraRewardParentGrid[i],extraRewardItemGrid[i],patyRewardData) --end end --展示单个祈福奖励 function PrayMainPanel:ShowSingleRewardData(_isGet,_parentGo,_go,patyRewardData,isClick) local PreciousShow = 0 if patyRewardData.rewardId > 0 then local BlessingRewardPoolData = ConfigManager.GetConfigData(ConfigName.BlessingRewardPool,patyRewardData.rewardId) if BlessingRewardPoolData then PreciousShow = BlessingRewardPoolData.PreciousShow end end local _reward = {patyRewardData.itemId,patyRewardData.num,PreciousShow} --Log("item 信息 "..patyRewardData.itemId.." "..patyRewardData.num) local _state = patyRewardData.state local itemParent = Util.GetGameObject(_parentGo.transform, "itemParent") local getBtn = Util.GetGameObject(_parentGo.transform, "getBtn") local wenhaoBtn local addImage if isClick then wenhaoBtn = Util.GetGameObject(_parentGo.transform, "wenhaoBtn") addImage = Util.GetGameObject(_parentGo.transform, "addImage") wenhaoBtn:SetActive(false) addImage:SetActive(false) end getBtn:SetActive(false) itemParent:SetActive(false) if _state == 0 then--0未保存无物品 1 未保存有物品 2 已选择 3 已祈福 if isClick then addImage:SetActive(true) end elseif _state == 1 then itemParent:SetActive(true) if isClick then _go:OnOpen(_isGet,_reward,1) else _go:OnOpen(_isGet,_reward,1,true) end elseif _state == 2 then if isClick then wenhaoBtn:SetActive(true) else itemParent:SetActive(true) if isClick then _go:OnOpen(_isGet,_reward,1) else _go:OnOpen(_isGet,_reward,1,true) end end elseif _state == 3 then itemParent:SetActive(true) if isClick then _go:OnOpen(_isGet,_reward,1) else _go:OnOpen(_isGet,_reward,1,true) end getBtn:SetActive(true) end Util.AddOnceClick(addImage, function() if isPlayAinEnd == false then return end if isClick then UIManager.OpenPanel(UIName.PraySelectRewardPanel,this) end end) if isClick then Util.AddOnceClick(wenhaoBtn, function() if BagManager.GetItemCountById(itemData.Id) < itemNum then --PopupTipPanel.ShowTip("材料不足") --功能快捷购买 UIManager.OpenPanel(UIName.QuickPurchasePanel, { type = UpViewRechargeType.LightRing }) return end if isPlayAinEnd == false then return end MsgPanel.ShowTwo(Language[11639]..itemNum..Language[10200]..GetLanguageStrById(itemData.Name), nil ,function () NetManager.GetSinglePrayRewardRequest(patyRewardData.id, function (_msg) isPlayAinEnd = false PrayManager.SetPatySingleRewardData(patyRewardData.id,_msg.chooseRewardId) PlayUIAnim(_parentGo) Timer.New(function () this.ShowRewardDataList() end, 0.2):Start() Timer.New(function () UIManager.OpenPanel(UIName.PrayRewardItemPopup,_msg.reward,allGetFinishRewardNum,_msg.chooseRewardId,function() -- self:CheckGetMaxReward() end) isPlayAinEnd = true end, 0.4):Start() end) end) end) end end --检测祈福是否满16 满会自动刷新 -- function PrayMainPanel:CheckGetMaxReward() -- local allGetFinishRewardNums = 0 -- for i = 1, #PrayManager.patyRewardData do -- if PrayManager.patyRewardData[i].state >= 3 then -- allGetFinishRewardNums = allGetFinishRewardNums + 1 -- end -- end -- LogYellow("allGetFinishRewardNums "..allGetFinishRewardNums) -- if allGetFinishRewardNums >= 16 then -- local isRefreshConFig = blessingConfig[1].IsRefresh -- if isRefreshConFig == 1 then -- MsgPanel.ShowOne("本轮祈福已全部完成,奖池刷新并重置开启次数。", function () -- NetManager.InitPrayDataRequest(function (_msg) -- PrayManager.ResetPatyRewardData(_msg) -- this.ShowRewardDataList() -- end) -- end) -- return -- end -- end -- end --展示额外奖励 function PrayMainPanel:OnShowExtraRewar() --额外奖励赋值 allGetFinishRewardNum = PrayManager.GetCount() allGetRewardNum = 0 for i = 1, #PrayManager.patyRewardData do -- if PrayManager.patyRewardData[i].state >= 3 then -- allGetFinishRewardNum = allGetFinishRewardNum + 1 -- end if PrayManager.patyRewardData[i].state >= 2 then allGetRewardNum = allGetRewardNum + 1 end end local curGetExtraRewarData = {} local upGetExtraRewarData = 0 for i = 1, #PrayManager.extraRewardData do if allGetFinishRewardNum < PrayManager.extraRewardData[i].extraRewardCount then curGetExtraRewarData = PrayManager.extraRewardData[i] break end end for i = 1, #PrayManager.extraRewardData do if allGetFinishRewardNum >= PrayManager.extraRewardData[i].extraRewardCount then upGetExtraRewarData = PrayManager.extraRewardData[i].extraRewardCount end end --抽取消耗的材料赋值 itemId = blessingConFigData[1][1] itemNum = CalculateCostCount(allGetFinishRewardNum + 1, blessingConFigData[2]) itemData = ConfigManager.GetConfigData(ConfigName.ItemConfig,itemId) self.tishiText3:SetActive(false) self.tishiText:SetActive(false) self.tishiText2:SetActive(false) --Log("allGetFinishRewardNum "..allGetFinishRewardNum) self.allPrayNum.text = Language[11640]..allGetFinishRewardNum if allGetRewardNum > 0 then self.yulanBtn:SetActive(true) self.tishiText:SetActive(false) if allGetFinishRewardNum >= 16 then self.tishiText3:SetActive(true) else self.tishiText2:SetActive(true) self.tishiText2Text.text = Language[11641]..itemNum..Language[10200] self.tishiText2Image.sprite = this.spLoader:LoadSprite(GetResourcePath(itemData.ResourceID)) end else self.yulanBtn:SetActive(false) self.tishiText2:SetActive(false) self.tishiText3:SetActive(false) self.tishiText:SetActive(true) end if curGetExtraRewarData and curGetExtraRewarData.itemId then self.extraRewardGo:SetActive(true) Util.ClearChild(self.extraRewardParent.transform) SubUIManager.Open(SubUIConfig.ItemView, self.extraRewardParent.transform,false,{curGetExtraRewarData.itemId,curGetExtraRewarData.num},1,false) self.extraRewardNameText.text = GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.ItemConfig,curGetExtraRewarData.itemId).Name) self.extraRewardExp.value= (allGetFinishRewardNum)/(curGetExtraRewarData.extraRewardCount) self.extraRewardExpText.text =(allGetFinishRewardNum).."/"..(curGetExtraRewarData.extraRewardCount) else self.extraRewardGo:SetActive(false) end end --展示单个额外奖励 function PrayMainPanel:ShowSingleExtraRewardData(_isGet,_parentGo,_go,patyRewardData) local numText = Util.GetGameObject(_parentGo.transform, "numText/Text"):GetComponent("Text") local _reward = {patyRewardData.itemId,patyRewardData.num} _go:OnOpen(_isGet,_reward,0.9) numText.text = patyRewardData.extraRewardCount end --刷新按钮事件 function PrayMainPanel:RefreshBtnClick() local allGetFinishRewardNums = 0 for i = 1, #PrayManager.patyRewardData do if PrayManager.patyRewardData[i].state >= 3 then allGetFinishRewardNums = allGetFinishRewardNums + 1 end end if allGetFinishRewardNums == 16 then NetManager.ResetAllPrayRewardRequest(function (_msg) PrayManager.ResetPatyRewardData(_msg) -- PrivilegeManager.RefreshPrivilegeUsedTimes(privilegeId, 1) this.ShowRewardDataList() end) else MsgPanel.ShowTwo(Language[11642], nil ,function () NetManager.ResetAllPrayRewardRequest(function (_msg) PrayManager.ResetPatyRewardData(_msg) -- PrivilegeManager.RefreshPrivilegeUsedTimes(privilegeId, 1) this.ShowRewardDataList() end) end) end -- local isRefreshConFig = blessingConfig[1].IsRefresh -- local privilegeId = blessingConfig[1].RefreshCd -- if isRefreshConFig == 0 then -- PopupTipPanel.ShowTip("活动不可刷新") -- return -- end -- if isRefresh == false then -- PopupTipPanel.ShowTip("当前时间不可刷新") -- return -- end end --界面关闭时调用(用于子类重写) function PrayMainPanel:OnClose() if self.timer then self.timer:Stop() self.timer = nil end end -- 将时间戳转换为用于显示的日期字符串(年月日) function PrayMainPanel:TimeStampToDateStr2(timestamp) local date = os.date("*t", timestamp) --local year = string.sub(date.year,3,4) return string.format(Language[11643], date.year, date.month, date.day) end function this.ShowAnimationAndRefreshData() PlayUIAnim(this.RewardGrid) Timer.New(function () this.ShowRewardDataList() PlayUIAnimBack(this.RewardGrid) end, 0.8):Start() end --界面销毁时调用(用于子类重写) function PrayMainPanel:OnDestroy() this.spLoader:Destroy() SubUIManager.Close(self.UpView) end return PrayMainPanel