----- --家园建筑升级 ----- local TrainBuildLvUpPanel = Inherit(BasePanel) local this = TrainBuildLvUpPanel local HomeLand = ConfigManager.GetConfig(ConfigName.TrainBuild) local HomeLandLevel = ConfigManager.GetConfig(ConfigName.TrainBuildLevel) local costOneSec = ConfigManager.GetConfigData(ConfigName.SpecialConfig,170).Value local itemConfig=ConfigManager.GetConfigData(ConfigName.ItemConfig,16) --传入父脚本模块 local parent --传入特效层级 local sortingOrder=0 local data=nil local Obj=nil local endCostNum=0 local pro=0 function TrainBuildLvUpPanel:InitComponent() this.spLoader = SpriteLoader.New() --当前两个名字 this.curName = Util.GetGameObject(this.gameObject,"Buildings/curName"):GetComponent("Text") this.nextName = Util.GetGameObject(this.gameObject,"Buildings/nextName"):GetComponent("Text") this.Content = Util.GetGameObject(this.gameObject,"Content") this.Obtain = Util.GetGameObject(this.Content,"Obtain") this.Cost = Util.GetGameObject(this.Content,"Cost") this.tipInfo = Util.GetGameObject(this.gameObject,"tip"):GetComponent("Text") this.tipInfo.text = "每个满级特训神将激活:所有神将礼物属性+5%(最高200%)" --Obtain this.limit = Util.GetGameObject(this.Obtain,"limit") this.gain = Util.GetGameObject(this.Obtain,"gain") this.gainIcon = Util.GetGameObject(this.Obtain,"gain/Icon"):GetComponent("Image") this.gainNum = Util.GetGameObject(this.Obtain,"gain/Num"):GetComponent("Text") this.gainAdd = Util.GetGameObject(this.Obtain,"gain/Add"):GetComponent("Text") --cost this.cost1Icon1 = Util.GetGameObject(this.Cost,"cost1/Icon"):GetComponent("Image") this.cost1Num1 = Util.GetGameObject(this.Cost,"cost1/Num"):GetComponent("Text") this.cost2 = Util.GetGameObject(this.Cost,"cost2") this.cost2Name = Util.GetGameObject(this.Cost,"cost2/Text"):GetComponent("Text") this.cost2Num = Util.GetGameObject(this.Cost,"cost2/Num"):GetComponent("Text") --fastDone this.fastDoneMoney = Util.GetGameObject(this.gameObject,"Btns/fastDone/Money") this.fastDoneIcon = Util.GetGameObject(this.fastDoneMoney,"Icon"):GetComponent("Image") this.fastDoneNum = Util.GetGameObject(this.fastDoneMoney,"Num"):GetComponent("Text") this.fastDoneBtn = Util.GetGameObject(this.gameObject,"Btns/fastDone/BtnDo") --Done this.doneNum = Util.GetGameObject(this.gameObject,"Btns/Done/Money/Text"):GetComponent("Text") this.doneBtn = Util.GetGameObject(this.gameObject,"Btns/Done/BtnDo") end function TrainBuildLvUpPanel:BindEvent() Util.AddClick(this.fastDoneBtn, function() -- local priviId = PrivilegeManager.GetPrivilegeRemainValue() TrainBuildManager.ResumeCost(data.dataSingle,string.split(costOneSec,"#"),function (num) MsgPanel.ShowTwo(string.format("是否花费%s%s立即升级?",endCostNum,itemConfig.Name),function() end,function() NetManager.TrainingArchitectureUpRequest(data.dataMain.Id,2,function () --特效 Obj.effect2:SetActive(true) Timer.New(function () Obj.effect2:SetActive(false) end,1):Start() PopupTipPanel.ShowTip(string.format("%s已升级至%s级",data.dataMain.Name,data.dataSingle.level)) self:ClosePanel() Game.GlobalEvent:DispatchEvent(GameEvent.UI.OnUpdateData) end) end,"取消","确定") end) end) Util.AddClick(this.doneBtn, function() if data.endTime and data.endTime>0 then PopupTipPanel.ShowTip("升级中") return end TrainBuildManager.ResumeCost(data.dataSingle,nil,function () NetManager.TrainingArchitectureUpRequest(data.dataMain.Id,1,function () Game.GlobalEvent:DispatchEvent(GameEvent.UI.OnUpdateData) self:ClosePanel() end) end) end) Util.AddClick(this.gameObject,function () self:ClosePanel() end) end function TrainBuildLvUpPanel:AddListener() end function TrainBuildLvUpPanel:RemoveListener() end function TrainBuildLvUpPanel:OnOpen(_args) data = _args[1] Obj = _args[2] end function TrainBuildLvUpPanel:OnShow() local curData = data.dataSingle local nextData = HomeLandLevel[curData.Id + 1] local str = string.split(costOneSec,"#") this.curName.text = string.format("%s %s级",data.dataMain.Name,curData.level) this.nextName.text = string.format("%s级",nextData.level) this.Obtain:SetActive(false) if curData.Gain and curData.Gain>0 then this.Obtain:SetActive(true) --this.gainIcon.sprite = this.spLoader:LoadSprite(GetSpriteNameByItemId(curData.Gain[1])) this.gainNum.text = curData.Gain this.gainAdd.text = string.format(" +%s",nextData.Gain - curData.Gain) end this.Cost:SetActive(false) if curData.Cost then this.Cost:SetActive(true) this.cost1Icon1.sprite = this.spLoader:LoadSprite(GetSpriteNameByItemId(curData.Cost[1][1])) local color1 = BagManager.GetTotalItemNum(curData.Cost[1][1]) >= curData.Cost[1][2] and "#A47C31" or "red" this.cost1Num1.text = string.format("%s",color1,curData.Cost[1][2]) end this.cost2:SetActive(false) if curData.Rule and #curData.Rule>0 and type(curData.Rule[1])~="userdata" then this.cost2:SetActive(true) local color = TrainBuildManager.BuildData[curData.Rule[1]].level < curData.Rule[2] and "FF0000" or "A47C31" this.cost2Num.text = string.format("%s到达%s级",color,HomeLand[curData.Rule[1]].Name,curData.Rule[2]) else end this.fastDoneIcon.sprite = this.spLoader:LoadSprite(GetSpriteNameByItemId(tonumber(str[1]))) --LogError("curData.Time===================="..curData.Time) LogError("curdata.endTime==="..data.endTime.." curData endtime-curtime==="..data.endTime - GetTimeStamp()) local leftTime=0 if data.endTime>0 then leftTime=data.endTime - GetTimeStamp() else leftTime=curData.Time end pro=tonumber(str[2]) endCostNum=math.ceil(leftTime/60)*pro this.fastDoneNum.text = endCostNum this.doneNum.text = string.format("耗时:%s",this:CulculateTime(curData.Time)) if data.endTime>0 then this:SetTime(leftTime) end ForceRebuildLayout(this.gain.transform) ForceRebuildLayout(this.Obtain.transform) ForceRebuildLayout(this.Cost.transform) ForceRebuildLayout(this.Content.transform) end function TrainBuildLvUpPanel:SetTime(_num) if self.timer then self.timer:Stop() self.timer = nil end local aaa=_num self.timer = Timer.New(function () aaa=aaa-1 --LogError("lefttime================"..leftTime2.." data.endTime=="..data.endTime) endCostNum=math.ceil(aaa/60)*pro this.fastDoneNum.text = endCostNum end, 1, -1, true) self.timer:Start() end function TrainBuildLvUpPanel:CulculateTime(time) if time < 60 then return time.."秒" elseif time >= 60 and time < 3600 then return math.floor(time/60).."分"..(time%60).."秒" elseif time >= 3600 and time < 86400 then return math.floor(time/3600).."时"..math.floor((time%3600)/60).."分" elseif time >= 86400 then return math.floor(time/86400).."天"..math.floor((time%86400)/3600).."时" end end function TrainBuildLvUpPanel:OnClose() data=nil if self.timer then self.timer:Stop() self.timer = nil end end function TrainBuildLvUpPanel:OnDestroy() this.spLoader:Destroy() if self.timer then self.timer:Stop() self.timer = nil end end return TrainBuildLvUpPanel