367 lines
17 KiB
Lua
367 lines
17 KiB
Lua
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(Language[11585],
|
|
GetLanguageStrById(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(Language[11595], 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 = GetLanguageStrById(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(Language[11591], 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(Language[11595], 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(Language[11132], 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] = Language[11596]
|
|
args[2] = Language[11597]
|
|
args[3] = Language[10685]
|
|
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 = Language[10098]
|
|
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(Language[11130],
|
|
GetLanguageStrById(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 = Language[11598]
|
|
curObj.RedPoint:SetActive(true)
|
|
else
|
|
|
|
end
|
|
else
|
|
if curObj.data.heroId and curObj.data.heroId ~= "" then
|
|
curObj.trainTime:SetActive(true)
|
|
curObj.trainTimeTxt.text = Language[11598]
|
|
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
|