local TrainBuildPanel = quick_class("TrainBuildPanel", BasePanel) local HomeLandConfig = ConfigManager.GetConfig(ConfigName.TrainBuild) local HomeLandLevel = ConfigManager.GetConfig(ConfigName.HomeLandLevel) local HomeLandTask = ConfigManager.GetConfig(ConfigName.HomeLandTask) local GlobalSystemConfig = ConfigManager.GetConfig(ConfigName.GlobalSystemConfig) local ItemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) local costStr = string.split(ConfigManager.GetConfigData(ConfigName.SpecialConfig,100).Value,"#") local bool = false function TrainBuildPanel:InitComponent() self.spLoader = SpriteLoader.New() -- if not self.playerInfoView then -- self.playerInfoView = SubUIManager.Open(SubUIConfig.PlayerInfoView, self.transform) -- end self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.transform) self.btnBack = Util.GetGameObject(self.gameObject,"btnBack") self.map = Util.GetGameObject(self.gameObject,"Map") self.Grid = Util.GetGameObject(self.map,"Grid") self.Bg = Util.GetGameObject(self.map,"Bg") self.Privi = Util.GetGameObject(self.map,"Privi") self.PriviBtn = Util.GetGameObject(self.map,"goBtn") self.RightUp = Util.GetGameObject(self.map,"RightUp") self.RightDown = Util.GetGameObject(self.map,"RightDown") self.helpBtn = Util.GetGameObject(self.RightUp, "helpBtn") self.helpPosition=self.helpBtn:GetComponent("RectTransform").localPosition --progress self.helpBtn1 = Util.GetGameObject(self.progress,"Help1") self.progressPre = Util.GetGameObject(self.progress,"progressPre") self.preList1 = {} --detail self.preList2 = {} --地图点信息 self.mapData = {} for i = 1, 7 do self.mapData[i] = {} self.mapData[i].Obj = Util.GetGameObject(self.Bg,"Map ("..i..")") self.mapData[i].Title = Util.GetGameObject(self.mapData[i].Obj,"Title") self.mapData[i].levelImg = Util.GetGameObject(self.mapData[i].Title,"levelImg") self.mapData[i].level = Util.GetGameObject(self.mapData[i].levelImg,"levelText"):GetComponent("Text") self.mapData[i].NameImg = Util.GetGameObject(self.mapData[i].Title,"NameImg") self.mapData[i].Name = Util.GetGameObject(self.mapData[i].Title,"NameImg/Text"):GetComponent("Text") self.mapData[i].RedPoint = Util.GetGameObject(self.mapData[i].Title,"redpoint") self.mapData[i].Lock = Util.GetGameObject(self.mapData[i].Title,"lock") self.mapData[i].RedPoint:SetActive(false) self.mapData[i].CanGet = Util.GetGameObject(self.mapData[i].Obj,"CanGet") self.mapData[i].Icon = Util.GetGameObject(self.mapData[i].Obj,"CanGet/Image"):GetComponent("Image") self.mapData[i].Btns = Util.GetGameObject(self.mapData[i].Obj,"Btns") self.mapData[i].BtnsCanvas = self.mapData[i].Btns:GetComponent("Canvas") self.mapData[i].OpenLimit = Util.GetGameObject(self.mapData[i].Title,"OpenLimit") self.mapData[i].limitText = Util.GetGameObject(self.mapData[i].OpenLimit,"OpenLimitText"):GetComponent("Text") self.mapData[i].upgradeImg = Util.GetGameObject(self.mapData[i].Obj,"Updating") self.mapData[i].upgradeImg:SetActive(true) self.mapData[i].updateTime = Util.GetGameObject(self.mapData[i].Obj,"updateTime") self.mapData[i].updateTimeText = Util.GetGameObject(self.mapData[i].updateTime,"updateText"):GetComponent("Text") self.mapData[i].trainTime = Util.GetGameObject(self.mapData[i].Obj,"trainTime") self.mapData[i].trainTimeTxt = Util.GetGameObject(self.mapData[i].Obj,"trainTime/updateText"):GetComponent("Text") self.mapData[i].timeSlide = Util.GetGameObject(self.mapData[i].updateTime,"Slide/Image"):GetComponent("Image") self.mapData[i].btnDetail = Util.GetGameObject(self.mapData[i].Btns,"Detail") self.mapData[i].btnUpgrade = Util.GetGameObject(self.mapData[i].Btns,"Upgrade") self.mapData[i].upGradeRed = Util.GetGameObject(self.mapData[i].btnUpgrade,"upGradeRed") self.mapData[i].leftTime = -1 self.mapData[i].showTime = -1 self.mapData[i].trainLeftTime = -1 self.mapData[i].effect1 = Util.GetGameObject(self.mapData[i].upgradeImg,"c_jianzao") self.mapData[i].effect2 = Util.GetGameObject(self.mapData[i].upgradeImg,"c_shengji") self.mapData[i].effect1:SetActive(false) self.mapData[i].effect2:SetActive(false) end self.curSelect = 0 end function TrainBuildPanel:BindEvent() Util.AddClick(self.btnBack, function() PlaySoundWithoutClick(SoundConfig.Sound_UICancel) self:ClosePanel() end) --帮助按钮 Util.AddClick(self.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.TrainBuild, self.helpPosition.x,self.helpPosition.y) end) Util.AddClick(self.Bg, function() self.curSelect = 0 for j = 1, 7 do self.mapData[j].Btns:SetActive(false) end end) for i = 1, 7 do --打开菜单 Util.AddOnceClick(self.mapData[i].Obj,function () if self.curSelect ~= i then for j = 1, 7 do self.mapData[j].Btns:SetActive(false) end self.curSelect = i if TrainBuildManager.BuildData[i].dataMain.IsOpen ~= 1 then PopupTipPanel.ShowTip(string.format("%s 暂未开放",TrainBuildManager.BuildData[i].dataMain.Name)) return end if HomeLandConfig[i].UnlockLevel[1] == 2 and TrainBuildManager.BuildData[1].level < HomeLandConfig[i].UnlockLevel[2] then PopupTipPanel.ShowTip(string.format("主城到达%s级开启",HomeLandConfig[i].UnlockLevel[2])) return end self.mapData[i].Btns:SetActive(true) PlayUIAnim(self.mapData[i].Btns) end end) --打开升级界面 Util.AddOnceClick(self.mapData[i].btnUpgrade,function () --UIManager.OpenPanel(UIName.GeneralInfoPopup,GENERALINFO_TYPE.HomeLandUpgrade,{HomeLandManager.BuildData[i],self.mapData[i]}) UIManager.OpenPanel(UIName.TrainBuildLvUpPanel,{TrainBuildManager.BuildData[i],self.mapData[i]}) end) --打开信息界面 Util.AddOnceClick(self.mapData[i].btnDetail,function () UIManager.OpenPanel(UIName.TrainSelectHeroPanel,TrainBuildManager.BuildData[i],self.mapData[i].trainLeftTime) end) end end function TrainBuildPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.UI.OnUpdateData, self.OnShow,self) Game.GlobalEvent:AddEvent(GameEvent.Bag.BagGold, self.OnShow,self) end function TrainBuildPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.UI.OnUpdateData, self.OnShow,self) Game.GlobalEvent:RemoveEvent(GameEvent.Bag.BagGold, self.OnShow,self) end --待功能扩展(试图打开某个状态) function TrainBuildPanel:OnOpen() self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main }) end function TrainBuildPanel:OnSortingOrderChange() for i = 1, 7 do local curObj = self.mapData[i] Util.SetParticleSortLayer(curObj.effect1,self.sortingOrder + 1) Util.SetParticleSortLayer(curObj.effect2,self.sortingOrder + 1) curObj.BtnsCanvas.overrideSorting = true curObj.BtnsCanvas.sortingOrder = self.sortingOrder + 2 end end function TrainBuildPanel:OnShow() self.curSelect = 0 for j = 1, 7 do self.mapData[j].Btns:SetActive(false) end self:SetBuildsState() self:SetTime() --self:InitDetailBar() self:SetRedPoint() end --设置地图内建筑信息 function TrainBuildPanel:SetBuildsState() for i = 1, 7 do local data = TrainBuildManager.BuildData[i] local curObj = self.mapData[i] curObj.data = TrainBuildManager.BuildData[i] curObj.OpenLimit:SetActive(true) curObj.Lock:SetActive(true) curObj.RedPoint:SetActive(false) curObj.btnUpgrade:SetActive(false) curObj.levelImg:SetActive(false) curObj.Name.text=data.dataMain.Name Util.SetGray(curObj.NameImg,true) curObj.effect1:SetActive(false) curObj.updateTime:SetActive(false) curObj.CanGet:SetActive(false) curObj.btnDetail:SetActive(false) curObj.trainTime:SetActive(false) Util.SetParticleSortLayer(curObj.effect1,self.sortingOrder + 1) Util.SetParticleSortLayer(curObj.effect2,self.sortingOrder + 1) curObj.BtnsCanvas.overrideSorting = true curObj.BtnsCanvas.sortingOrder = self.sortingOrder + 2 if data.dataMain.IsOpen == 1 then--部分建筑未进入版本显示未开放 --如果主城未到等级,显示开启条件 if HomeLandConfig[i].UnlockLevel[1] == 1 and PlayerManager.level < HomeLandConfig[i].UnlockLevel[2] then curObj.limitText.text = string.format("玩家等级到达%s级开启",HomeLandConfig[i].UnlockLevel[2]) elseif HomeLandConfig[i].UnlockLevel[1] == 2 and TrainBuildManager.BuildData[1].level < HomeLandConfig[i].UnlockLevel[2] then curObj.limitText.text = string.format("主城到达%s级开启",HomeLandConfig[i].UnlockLevel[2]) else curObj.OpenLimit:SetActive(false) curObj.Lock:SetActive(false) Util.SetGray(curObj.NameImg,false) if data.dataSingle then curObj.level.text = string.format("%s级",data.dataSingle.level) curObj.levelImg:SetActive(true) end end if data.dataSingle then curObj.btnDetail:SetActive(data.dataSingle.Position>0) LogError("data.endTime===================="..data.endTime) if data.endTime > GetTimeStamp() then--如果有结束时间说明在升级,可以取消,可以加速 curObj.effect1:SetActive(true) curObj.updateTime:SetActive(true) curObj.leftTime = data.endTime - GetTimeStamp() >= 0 and data.endTime - GetTimeStamp() or -1 curObj.updateTimeText.text = TimeToFelaxible(curObj.leftTime) curObj.timeSlide.fillAmount = (data.dataSingle.Time-curObj.leftTime)/data.dataSingle.Time PlayUIAnim(curObj.upgradeImg) curObj.btnUpgrade:SetActive(true) else--如果没有就是可以点击升级 curObj.updateTime:SetActive(false) curObj.leftTime=-1 if data.dataSingle.Cost then -- LogGreen("Name:"..tostring(data.dataSingle.Name).." cost:"..tostring(data.dataSingle.Cost[1][1]).."#"..data.dataSingle.Cost[1][2]) curObj.btnUpgrade:SetActive(true) else curObj.btnUpgrade:SetActive(false) end end end if data.heroId and data.heroId~="" then local heroData=HeroManager.GetSingleHeroData(data.heroId) if heroData then curObj.Icon.sprite = self.spLoader:LoadSprite(GetResourcePath(heroData.heroConfig.Icon)) local pos=data.dataSingle.Position local max=0 local curValue=0 local train=ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.Train,"HeroID",heroData.heroConfig.Id,"Level",heroData.HeroTraining.trainingLv) if train then local aaa=ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.TrainSetting,"PoolID",train.TrainSettingID,"Level",heroData.HeroTraining.trainingLv) if pos==1 then max=aaa.TrainExp1 curValue=heroData.HeroTraining.attackExp elseif pos==2 then max=aaa.TrainExp2 curValue=heroData.HeroTraining.defenseExp elseif pos==3 then max=aaa.TrainExp3 curValue=heroData.HeroTraining.hpExp end end --LogError("curvalue==========================="..curValue) local endTime=data.heroStarTime+math.ceil((max-curValue)/data.dataSingle.Gain)*60 curObj.trainLeftTime=endTime-GetTimeStamp() --LogError("endtime=================================="..endTime.." trainLeftTime=="..curObj.trainLeftTime) curObj.CanGet:SetActive(true) PlayUIAnim(curObj.CanGet) Util.AddOnceClick(curObj.CanGet,function () if curObj.trainLeftTime>0 then local sureFunc=function() NetManager.TrainingRequest(data.dataMain.Id,data.heroId,2,function () self:OnShow() end) end local args={} args[1]="特训未完成是否提前结束?" args[2]="结束" args[3]="取消" args[4]=sureFunc UIManager.OpenPanel(UIName.GMCommonConfirmPanel,args) else LogError("data.heroid==============================="..data.heroId) NetManager.TrainingRequest(data.dataMain.Id,data.heroId,2,function () self:OnShow() end) end end) else LogError("herodata=========================================nii") end else curObj.trainLeftTime=-1 end else curObj.limitText.text = "暂未开放" end end end --时间 function TrainBuildPanel:SetTime() if self.timer then self.timer:Stop() self.timer = nil end self.timer = Timer.New(function () for i = 1, 7 do local curObj = self.mapData[i] curObj.updateTime:SetActive(curObj.leftTime >= 0) if curObj.leftTime >= 0 then curObj.updateTimeText.text = TimeToFelaxible(curObj.leftTime) curObj.leftTime = curObj.leftTime -1 --LogError("(curObj.data.dataSingle.Time-curObj.leftTime)=="..(curObj.data.dataSingle.Time-curObj.leftTime).." curObj.data.dataSingle.Time=="..curObj.data.dataSingle.Time) curObj.timeSlide.fillAmount = (curObj.data.dataSingle.Time-curObj.leftTime)/curObj.data.dataSingle.Time if curObj.leftTime < 0 then curObj.effect2:SetActive(true) NetManager.TrainingArchitectureInfoRequest(function () self:OnShow() if UIManager.IsOpen(UIName.MsgPanel) then UIManager.ClosePanel(UIName.MsgPanel) end PopupTipPanel.ShowTip(string.format("%s已升级至%s级",curObj.data.dataMain.Name,curObj.data.dataSingle.level)) Timer.New(function () curObj.effect2:SetActive(false) end,1):Start() end) end end if curObj.trainLeftTime >= 0 then --LogError("curObj.trainLeftTime==="..curObj.trainLeftTime) curObj.trainTimeTxt.text = TimeToFelaxible(curObj.trainLeftTime) curObj.trainLeftTime = curObj.trainLeftTime -1 curObj.trainTime:SetActive(true) if curObj.trainLeftTime < 0 then --curObj.effect2:SetActive(true) curObj.trainTimeTxt.text="特训完成" curObj.RedPoint:SetActive(true) end else if curObj.data.heroId and curObj.data.heroId~="" then curObj.trainTime:SetActive(true) curObj.trainTimeTxt.text="特训完成" curObj.RedPoint:SetActive(true) end end end end, 1, -1, true) self.timer:Start() end function TrainBuildPanel:SetRedPoint() end function TrainBuildPanel:OnClose() self.curSelect = 0 bool = false for j = 1, 7 do self.mapData[j].Btns:SetActive(false) end end function TrainBuildPanel:OnDestroy() self.spLoader:Destroy() SubUIManager.Close(self.UpView) self.UpView = nil if self.timer then self.timer:Stop() self.timer = nil end end return TrainBuildPanel