From 4a452addd1cf80b8f4fd0f3befdc4f8f591861a2 Mon Sep 17 00:00:00 2001 From: ZhangBiao Date: Thu, 27 Aug 2020 22:10:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A9=E5=AE=AB=E7=A7=98=E5=AE=9D=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Expedition/ExpeditionMainPanel.lua | 4 +- .../~Lua/Modules/Net/IndicationManager.lua | 8 +- .../~Lua/Modules/Net/NetManager.lua | 4 +- ...eralPopup_HeavenUnlockExtraRewardPanel.lua | 6 +- .../TreasureOfHeavenManager.lua | 95 ++++++++++--------- .../TreasureOfHeavenPanel.lua | 86 ++++++++--------- 6 files changed, 99 insertions(+), 104 deletions(-) diff --git a/Assets/ManagedResources/~Lua/Modules/Expedition/ExpeditionMainPanel.lua b/Assets/ManagedResources/~Lua/Modules/Expedition/ExpeditionMainPanel.lua index 3f96b237fc..bfa4a3af20 100644 --- a/Assets/ManagedResources/~Lua/Modules/Expedition/ExpeditionMainPanel.lua +++ b/Assets/ManagedResources/~Lua/Modules/Expedition/ExpeditionMainPanel.lua @@ -189,8 +189,8 @@ end --大闹天宫入口是否开启 function ExpeditionMainPanel:IsTreasureOpen() - self.Btn4:SetActive(TreasureOfHeavenManger.GetLimitTime() ~= -1) - Util.GetGameObject(self.parent, "upLeftGo/Image"):SetActive(TreasureOfHeavenManger.GetLimitTime() ~= -1) + self.Btn4:SetActive(TreasureOfHeavenManger.resetTime ~= -1) + Util.GetGameObject(self.parent, "upLeftGo/Image"):SetActive(TreasureOfHeavenManger.resetTime ~= -1) end --实例化层数信息 diff --git a/Assets/ManagedResources/~Lua/Modules/Net/IndicationManager.lua b/Assets/ManagedResources/~Lua/Modules/Net/IndicationManager.lua index 28564f7d92..1b266d9821 100644 --- a/Assets/ManagedResources/~Lua/Modules/Net/IndicationManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Net/IndicationManager.lua @@ -765,11 +765,9 @@ function this.TreasureStateIndicaion(buffer) local msg = Expedition_pb.TreasureStateIndicaion()--ExpeditionResetIndication() msg:ParseFromString(data) -- LogGreen("msg.score :"..msg.score.." msg.resetTime:"..msg.resetTime) - TreasureOfHeavenManger.SetScore(msg.score) - TreasureOfHeavenManger.SetLimitTime(msg.resetTime) - for i = 1, #msg.treasureRewardState do - TreasureOfHeavenManger. SetSingleRewardState(msg.treasureRewardState[i].id,msg.treasureRewardState[i].state) - end + TreasureOfHeavenManger.UpdateData(msg) + LogPink("推回来的数据长度"..#msg.treasureRewardState) + end function this.GuildTranscriptIndication(buffer) local data = buffer:DataByte() diff --git a/Assets/ManagedResources/~Lua/Modules/Net/NetManager.lua b/Assets/ManagedResources/~Lua/Modules/Net/NetManager.lua index abe3318a22..12a930213f 100644 --- a/Assets/ManagedResources/~Lua/Modules/Net/NetManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Net/NetManager.lua @@ -4189,9 +4189,7 @@ function NetManager.TreasureOfHeavenScoreRequest(func) local data = buffer:DataByte() local msg = Expedition_pb.ExpeditionTreasureInfoResponse() msg:ParseFromString(data) - TreasureOfHeavenManger.SetScore(msg.score) - TreasureOfHeavenManger.SetLimitTime(msg.resetTime) - TreasureOfHeavenManger.SetState(msg.treasureRewardState) + TreasureOfHeavenManger.UpdateData(msg) if func then func(msg) end diff --git a/Assets/ManagedResources/~Lua/Modules/Popup/View/GeneralPopup_HeavenUnlockExtraRewardPanel.lua b/Assets/ManagedResources/~Lua/Modules/Popup/View/GeneralPopup_HeavenUnlockExtraRewardPanel.lua index b26b87386f..bb9d13979e 100644 --- a/Assets/ManagedResources/~Lua/Modules/Popup/View/GeneralPopup_HeavenUnlockExtraRewardPanel.lua +++ b/Assets/ManagedResources/~Lua/Modules/Popup/View/GeneralPopup_HeavenUnlockExtraRewardPanel.lua @@ -54,7 +54,7 @@ function this:OnShow(_parent,...) local temp = {...} curType = temp[1] if curType == 1 then - rewardStateData = TreasureOfHeavenManger.GetState() + rewardStateData = TreasureOfHeavenManger.rewardStateData rewardData = TreasureOfHeavenManger.GetAllRewardData() this:showRewardTianGong() this.tip.text = Language[12366] @@ -84,8 +84,10 @@ function this:showRewardTianGong() local direct = {} local indirect ={} - local curScore = TreasureOfHeavenManger.GetScore()--当前分数 + local curScore = TreasureOfHeavenManger.curScore--当前分数 + LogPink("sssss"..#rewardData) + LogBlue("aaaaaa"..#rewardStateData) for i = 1, #rewardData do if curScore >= rewardData[i].Integral then if rewardStateData[i].state == 1 or rewardStateData[i].state == 0 then--已达成但不能领取的 diff --git a/Assets/ManagedResources/~Lua/Modules/TreasureOfHeaven/TreasureOfHeavenManager.lua b/Assets/ManagedResources/~Lua/Modules/TreasureOfHeaven/TreasureOfHeavenManager.lua index f6a5be6a3c..470fb29766 100644 --- a/Assets/ManagedResources/~Lua/Modules/TreasureOfHeaven/TreasureOfHeavenManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/TreasureOfHeaven/TreasureOfHeavenManager.lua @@ -1,23 +1,36 @@ TreasureOfHeavenManger = {} local this = TreasureOfHeavenManger -local WorldBossTreasureConfig = ConfigManager.GetConfig(ConfigName.WorldBossTreasureConfig) +local ConfigData = ConfigManager.GetConfig(ConfigName.WorldBossTreasureConfig) -local curScore--当前分数 -local limitTime--倒计时 -local rewardStateData = {}--各个任务状态数据 -local rewardData = {}--表内活动任务数据 +this.curScore = 0--当前分数 +this.resetTime = 0--倒计时 +this.rewardStateData = {}--各个任务状态数据 +-- local rewardData = {}--表内活动任务数据 this.TreasrueState = nil--礼包购买状态 -function this.Initialize() - rewardData = {} - for i, v in ConfigPairs(WorldBossTreasureConfig) do - table.insert(rewardData, v) +function this.UpdateData(msg) + -- rewardData = {} + -- for i, v in ConfigPairs(ConfigData) do + -- table.insert(rewardData, v) + -- end + if msg.score then + this.curScore = msg.score + end + if msg.resetTime then + this.resetTime = msg.resetTime + end + if msg.treasureRewardState then + if #msg.treasureRewardState == 1 then + for i = 1, #this.rewardStateData do + if this.rewardStateData[i].id == msg.treasureRewardState.id then + this.rewardStateData[i].state = msg.treasureRewardState.state + end + end + elseif #msg.treasureRewardState > 1 then + this.rewardStateData = msg.treasureRewardState + end end -end - -function this.GetTreasureState() this.TreasrueState = OperatingManager.GetGoodsBuyTime(GoodsTypeDef.TreasureOfHeaven,106) - return this.TreasrueState end function this.SetTreasureState() @@ -25,45 +38,29 @@ function this.SetTreasureState() return this.TreasrueState end -function this.SetScore(score) - curScore = score -end -function this.GetScore() - return curScore -end - -function this.SetLimitTime(time) - limitTime = time -end -function this.GetLimitTime() - return limitTime -end - -function this.SetState(treasureRewardState) - rewardStateData = {} - for i, v in ipairs(treasureRewardState) do - table.insert(rewardStateData, v) - end -end -function this.GetState() - return rewardStateData -end - function this.SetSingleRewardState(id,state) - for i = 1, #rewardStateData do - if(rewardStateData[i].id == id)then - rewardStateData[i].state = state + for i = 1, #this.rewardStateData do + if(this.rewardStateData[i].id == id)then + this.rewardStateData[i].state = state end end CheckRedPointStatus(RedPointType.Expedition_Treasure) end function this.GetAllRewardData() - return rewardData + local data={} + for i = 1, #this.rewardStateData do + for k, v in ConfigPairs(ConfigData) do + if this.rewardStateData[i].id == v.Id then + table.insert(data, v) + end + end + end + return data end --红点检测 function this.RedPointState(singleRewardData,TreasrueState) - if curScore >= rewardData[singleRewardData.id].Integral then + if this.curScore >= ConfigData[singleRewardData.id].Integral then if singleRewardData.state==0 and this.TreasrueState==1 or singleRewardData.state==1 and this.TreasrueState==1 or singleRewardData.state==0 and this.TreasrueState==0 then @@ -75,12 +72,16 @@ function this.RedPointState(singleRewardData,TreasrueState) end function this.RedPoint() - for i =1, #rewardStateData do + local data={} + for i, v in ConfigPairs(ConfigData) do + table.insert(data, v) + end + for i =1, #this.rewardStateData do local curTreasrueState = OperatingManager.GetGoodsBuyTime(GoodsTypeDef.TreasureOfHeaven,106) - if curScore >= rewardData[rewardStateData[i].id].Integral then - if rewardStateData[i].state==0 and curTreasrueState==1 or - rewardStateData[i].state==1 and curTreasrueState==1 or - rewardStateData[i].state==0 and curTreasrueState==0 then + if this.curScore >= ConfigData[this.rewardStateData[i].id].Integral then + if this.rewardStateData[i].state==0 and curTreasrueState==1 or + this.rewardStateData[i].state==1 and curTreasrueState==1 or + this.rewardStateData[i].state==0 and curTreasrueState==0 then return true end end diff --git a/Assets/ManagedResources/~Lua/Modules/TreasureOfHeaven/TreasureOfHeavenPanel.lua b/Assets/ManagedResources/~Lua/Modules/TreasureOfHeaven/TreasureOfHeavenPanel.lua index 68b314e9d3..f8e75b3c7b 100644 --- a/Assets/ManagedResources/~Lua/Modules/TreasureOfHeaven/TreasureOfHeavenPanel.lua +++ b/Assets/ManagedResources/~Lua/Modules/TreasureOfHeaven/TreasureOfHeavenPanel.lua @@ -1,10 +1,11 @@ require("Base/BasePanel") local TreasureOfHeavenPanel = Inherit(BasePanel) local this = TreasureOfHeavenPanel -local curScore = 0--当前分数 -local rewardStateData = {} +-- local curScore = 0--当前分数 +-- local rewardStateData = {} local treasureState = nil -local rewardData--表内活动数据 +local rewardData--后端活动数据 +local ConfigData = ConfigManager.GetConfig(ConfigName.WorldBossTreasureConfig) --初始化组件(用于子类重写) function TreasureOfHeavenPanel:InitComponent() @@ -67,23 +68,19 @@ end -- 打开,重新打开时回调 function TreasureOfHeavenPanel:OnShow() this.tips.text = Language[11988] - this.time.text=TimeToDHMS(TreasureOfHeavenManger.GetLimitTime()-GetTimeStamp()) + this.time.text=TimeToDHMS(TreasureOfHeavenManger.resetTime - GetTimeStamp()) TreasureOfHeavenPanel:ShowTime() TreasureOfHeavenPanel:refresh() end function TreasureOfHeavenPanel:refresh() - rewardData = TreasureOfHeavenManger.GetAllRewardData() - treasureState = TreasureOfHeavenManger.GetTreasureState()--秘宝礼包状态 0:可购买 1:已购买 - rewardStateData = TreasureOfHeavenManger.GetState()--任务状态 - if #rewardStateData <= 0 then - curScore = TreasureOfHeavenManger.GetScore()--当前分数 - rewardStateData = TreasureOfHeavenManger.GetState()--任务状态 - + treasureState = TreasureOfHeavenManger.TreasrueState + rewardData = TreasureOfHeavenManger.rewardStateData + LogGreen("#rewardData长度:"..#rewardData) + if #TreasureOfHeavenManger.rewardStateData <= 0 then TreasureOfHeavenPanel:topBar() TreasureOfHeavenPanel:showTaskList() else - curScore = TreasureOfHeavenManger.GetScore()--当前分数 TreasureOfHeavenPanel:topBar() TreasureOfHeavenPanel:showTaskList() end @@ -101,8 +98,7 @@ function TreasureOfHeavenPanel:topBar() UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.HeavenUnlockExtraRewardPanel,1) end) end - - this.scoreText.text = curScore + this.scoreText.text = TreasureOfHeavenManger.curScore end @@ -114,16 +110,16 @@ function TreasureOfHeavenPanel:showTaskList() --定位打开界面时位置 local t = 0 - if treasureState == 0 then - for i = 1, #rewardStateData do - if rewardStateData[i].state == 0 then + if TreasureOfHeavenManger.TreasrueState == 0 then + for i = 1, #rewardData do + if rewardData[i].state == 0 then t = i break end end - elseif treasureState == 1 then - for i = 1, #rewardStateData do - if rewardStateData[i].state == 1 or rewardStateData[i].state == 0 then + elseif TreasureOfHeavenManger.TreasrueState == 1 then + for i = 1, #rewardData do + if rewardData[i].state == 1 or rewardData[i].state == 0 then t = i break end @@ -134,7 +130,7 @@ end local itemsList={} --单个任务 -function TreasureOfHeavenPanel:SingleTask(rewardItem, rewardSingleData) +function TreasureOfHeavenPanel:SingleTask(rewardItem, singleData) local scoreLevel = Util.GetGameObject(rewardItem, "scoreLevel"):GetComponent("Text") local pos1 = Util.GetGameObject(rewardItem, "itemPos_1") local pos3 = Util.GetGameObject(rewardItem, "itemPos_3") @@ -147,16 +143,16 @@ function TreasureOfHeavenPanel:SingleTask(rewardItem, rewardSingleData) itemsList[rewardItem] ={item1,item3,item4} end - scoreLevel.text = rewardSingleData.Integral - itemsList[rewardItem][1]:OnOpen(false, {rewardSingleData.Reward[1][1], rewardSingleData.Reward[1][2]}, 0.8, false) - itemsList[rewardItem][2]:OnOpen(false, {rewardSingleData.TreasureReward[1][1], rewardSingleData.TreasureReward[1][2]}, 0.8, false) - itemsList[rewardItem][3]:OnOpen(false, {rewardSingleData.TreasureReward[2][1], rewardSingleData.TreasureReward[2][2]}, 0.8, false) + scoreLevel.text = ConfigData[singleData.id].Integral + itemsList[rewardItem][1]:OnOpen(false, {ConfigData[singleData.id].Reward[1][1], ConfigData[singleData.id].Reward[1][2]}, 0.8, false) + itemsList[rewardItem][2]:OnOpen(false, {ConfigData[singleData.id].TreasureReward[1][1], ConfigData[singleData.id].TreasureReward[1][2]}, 0.8, false) + itemsList[rewardItem][3]:OnOpen(false, {ConfigData[singleData.id].TreasureReward[2][1], ConfigData[singleData.id].TreasureReward[2][2]}, 0.8, false) --初始化按钮状态 - TreasureOfHeavenPanel:InitButtonState(rewardItem, rewardSingleData) + TreasureOfHeavenPanel:InitButtonState(rewardItem, singleData) end --初始化按钮状态 -function TreasureOfHeavenPanel:InitButtonState(rewardItem, rewardSingleData) +function TreasureOfHeavenPanel:InitButtonState(rewardItem, singleData) local btnDeal = Util.GetGameObject(rewardItem, "btnDeal") local get = Util.GetGameObject(rewardItem, "btnDeal/get") @@ -165,9 +161,9 @@ function TreasureOfHeavenPanel:InitButtonState(rewardItem, rewardSingleData) local finished = Util.GetGameObject(rewardItem, "finished") local redPoint = Util.GetGameObject(rewardItem, "btnDeal/redPoint") --当前任务领取情况 - local state = rewardStateData[rewardSingleData.Id].state + local state = singleData.state --判断 - if curScore >= rewardSingleData.Integral then + if TreasureOfHeavenManger.curScore >= ConfigData[singleData.id].Integral then if (state == -1) then btnDeal.gameObject:SetActive(false) get.gameObject:SetActive(false) @@ -196,17 +192,17 @@ function TreasureOfHeavenPanel:InitButtonState(rewardItem, rewardSingleData) end --添加点击事件 Util.AddOnceClick(btnDeal,function() - TreasureOfHeavenPanel:OnBtnDealClicked(rewardItem,rewardSingleData) + TreasureOfHeavenPanel:OnBtnDealClicked(rewardItem,singleData) end) --红点状态 - redPoint:SetActive(TreasureOfHeavenManger.RedPointState(rewardStateData[rewardSingleData.Id],treasureState)) + redPoint:SetActive(TreasureOfHeavenManger.RedPointState(singleData,treasureState)) end --按钮事件 -function TreasureOfHeavenPanel:OnBtnDealClicked(rewardItem,rewardSingleData) +function TreasureOfHeavenPanel:OnBtnDealClicked(rewardItem,singleData) local btnDeal = Util.GetGameObject(rewardItem, "btnDeal") local get = Util.GetGameObject(rewardItem, "btnDeal/get") @@ -214,21 +210,21 @@ function TreasureOfHeavenPanel:OnBtnDealClicked(rewardItem,rewardSingleData) local unfinished = Util.GetGameObject(rewardItem, "btnDeal/unfinished") local finished = Util.GetGameObject(rewardItem, "btnDeal/finished") - if curScore >= rewardSingleData.Integral then--分数达到要求 - if (rewardStateData[rewardSingleData.Id].state == 0 and treasureState == 0) or--任务未领取+礼包未购买 - (rewardStateData[rewardSingleData.Id].state == 1 and treasureState == 1) or--任务已领取+礼包已购买 - (rewardStateData[rewardSingleData.Id].state == 0 and treasureState == 1)then--任务未领取+礼包已购买 - NetManager.GetTreasureOfHeavenRewardRequest(rewardStateData[rewardSingleData.Id].id,function(msg) + if TreasureOfHeavenManger.curScore >= ConfigData[singleData.id].Integral then--分数达到要求 + if (singleData.state == 0 and treasureState == 0) or--任务未领取+礼包未购买 + (singleData.state == 1 and treasureState == 1) or--任务已领取+礼包已购买 + (singleData.state == 0 and treasureState == 1)then--任务未领取+礼包已购买 + NetManager.GetTreasureOfHeavenRewardRequest(singleData.id,function(msg) UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1) --需要刷新界面 if treasureState == 0 then--判断是否已经购买了礼包 - TreasureOfHeavenManger.SetSingleRewardState(rewardStateData[rewardSingleData.Id].id,1) + TreasureOfHeavenManger.SetSingleRewardState(singleData.id,1) else - TreasureOfHeavenManger.SetSingleRewardState(rewardStateData[rewardSingleData.Id].id,-1) + TreasureOfHeavenManger.SetSingleRewardState(singleData.id,-1) end TreasureOfHeavenPanel:refresh()--刷新界面 end) - elseif rewardStateData[rewardSingleData.Id].state == 1 and treasureState == 0 then----任务已领取+礼包未购买(弹出购买界面) + elseif singleData.state == 1 and treasureState == 0 then----任务已领取+礼包未购买(弹出购买界面) UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.HeavenUnlockExtraRewardPanel,1) end else--分数未达到要求 @@ -241,13 +237,13 @@ function TreasureOfHeavenPanel:ShowTime() self.localTimer:Stop() self.localTimer = nil end - local t = TreasureOfHeavenManger.GetLimitTime() + local t = TreasureOfHeavenManger.resetTime local time self.localTimer = Timer.New(function() - time = t-GetTimeStamp() - if t-GetTimeStamp() <= 0 then + time = t - GetTimeStamp() + if t - GetTimeStamp() <= 0 then time = 0 - t = TreasureOfHeavenManger.GetLimitTime() + t = TreasureOfHeavenManger.resetTime treasureState = nil TreasureOfHeavenPanel:refresh() end @@ -266,7 +262,7 @@ end --界面销毁时调用(用于子类重写) function TreasureOfHeavenPanel:OnDestroy() - rewardStateData = {} + rewardData = {} end return TreasureOfHeavenPanel \ No newline at end of file