miduo_client/Assets/ManagedResources/~Lua/Modules/HomeLand/HomeLandPanel.lua

258 lines
11 KiB
Lua
Raw Normal View History

2021-12-20 16:50:51 +08:00
local HomeLand = quick_class("HomeLand", BasePanel)
2021-12-24 18:20:18 +08:00
local HomeLandConfig = ConfigManager.GetConfig(ConfigName.HomeLand)
local HomeLandLevel = ConfigManager.GetConfig(ConfigName.HomeLandLevel)
local HomeLandTask = ConfigManager.GetConfig(ConfigName.HomeLandTask)
2021-12-28 11:54:08 +08:00
local GlobalSystemConfig = ConfigManager.GetConfig(ConfigName.GlobalSystemConfig)
local costStr = string.split(ConfigManager.GetConfigData(ConfigName.SpecialConfig,100).Value,"#")
2021-12-20 16:50:51 +08:00
function HomeLand:InitComponent()
self.spLoader = SpriteLoader.New()
2021-12-21 18:11:12 +08:00
-- if not self.playerInfoView then
-- self.playerInfoView = SubUIManager.Open(SubUIConfig.PlayerInfoView, self.transform)
-- end
2021-12-20 16:50:51 +08:00
self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.transform)
2021-12-21 18:11:12 +08:00
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.RightUp = Util.GetGameObject(self.map,"RightUp")
self.RightDown = Util.GetGameObject(self.map,"RightDown")
self.mapData = {}
2021-12-28 11:54:08 +08:00
for i = 1, 7 do
2021-12-21 18:11:12 +08:00
self.mapData[i] = {}
self.mapData[i].Obj = Util.GetGameObject(self.Bg,"Map ("..i..")")
self.mapData[i].Name = Util.GetGameObject(self.mapData[i].Obj,"Title/Text"):GetComponent("Text")
2021-12-28 11:54:08 +08:00
self.mapData[i].CanGet = Util.GetGameObject(self.mapData[i].Obj,"CanGet")
-- self.mapData[i].Icon = Util.GetGameObject(self.mapData[i].Obj,"Title/Image"):GetComponent("Image")
self.mapData[i].Icon = Util.GetGameObject(self.mapData[i].Obj,"CanGet/Image"):GetComponent("Image")
2021-12-21 18:11:12 +08:00
self.mapData[i].Btns = Util.GetGameObject(self.mapData[i].Obj,"Btns")
2021-12-24 18:20:18 +08:00
self.mapData[i].OpenLimit = Util.GetGameObject(self.mapData[i].Obj,"OpenLimit")
self.mapData[i].limitText = Util.GetGameObject(self.mapData[i].OpenLimit,"Text"):GetComponent("Text")
2021-12-28 11:54:08 +08:00
self.mapData[i].upgradeImg = Util.GetGameObject(self.mapData[i].Obj,"Updating")
self.mapData[i].updateTime = Util.GetGameObject(self.mapData[i].Obj,"updateTime")
self.mapData[i].updateTimeText = Util.GetGameObject(self.mapData[i].updateTime,"Text"):GetComponent("Text")
2021-12-28 13:37:04 +08:00
self.mapData[i].timeSlide = Util.GetGameObject(self.mapData[i].updateTime,"Slide/Image"):GetComponent("Image")
2021-12-24 18:20:18 +08:00
2021-12-21 18:11:12 +08:00
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].btnCancel = Util.GetGameObject(self.mapData[i].Btns,"Cancel")
2021-12-24 18:20:18 +08:00
self.mapData[i].btnSpeedUp = Util.GetGameObject(self.mapData[i].Btns,"Speed")
2021-12-28 11:54:08 +08:00
self.mapData[i].leftTime = -1
self.mapData[i].showTime = -1
2021-12-21 18:11:12 +08:00
end
self.curSelect = 0
2021-12-20 16:50:51 +08:00
end
function HomeLand:BindEvent()
--帮助按钮
-- Util.AddClick(self.helpBtn, function()
-- UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.HomeLand, self.helpPosition.x,self.helpPosition.y)
-- end)
2021-12-21 18:11:12 +08:00
Util.AddClick(self.btnBack, function()
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
self:ClosePanel()
end)
2021-12-23 14:38:02 +08:00
Util.AddClick(self.Bg, function()
self.curSelect = 0
2021-12-24 18:20:18 +08:00
for j = 1, 5 do
2021-12-23 14:38:02 +08:00
self.mapData[j].Btns:SetActive(false)
end
end)
2021-12-24 18:20:18 +08:00
for i = 1, 5 do
2021-12-23 14:38:02 +08:00
--打开菜单
2021-12-21 18:11:12 +08:00
Util.AddOnceClick(self.mapData[i].Obj,function ()
if self.curSelect ~= i then
self.curSelect = i
2021-12-24 18:20:18 +08:00
for j = 1, 5 do
2021-12-21 18:11:12 +08:00
self.mapData[j].Btns:SetActive(false)
end
2021-12-28 11:54:08 +08:00
if HomeLandManager.BuildData[i].dataMain.IsOpen ~= 1 then
PopupTipPanel.ShowTip(string.format("%s 暂未开放",HomeLandManager.BuildData[i].dataMain.Name))
return
end
if HomeLandConfig[i].UnlockLevel[1] == 2 and HomeLandManager.BuildData[5].level < HomeLandConfig[i].UnlockLevel[2] then
PopupTipPanel.ShowTip(string.format("浮生殿到达%s级开启",HomeLandConfig[i].UnlockLevel[2]))
return
end
2021-12-21 18:11:12 +08:00
self.mapData[i].Btns:SetActive(true)
PlayUIAnim(self.mapData[i].Btns)
end
end)
2021-12-23 14:38:02 +08:00
--打开信息界面
Util.AddOnceClick(self.mapData[i].btnDetail,function ()
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.HomeLandBuildingDetail,HomeLandManager.BuildData[i])
end)
2021-12-24 18:20:18 +08:00
--打开升级界面
Util.AddOnceClick(self.mapData[i].btnUpgrade,function ()
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.HomeLandUpgrade,HomeLandManager.BuildData[i])
end)
--打开加速
Util.AddOnceClick(self.mapData[i].btnSpeedUp,function ()
2021-12-28 11:54:08 +08:00
local value = math.ceil((HomeLandManager.BuildData[i].endTime - GetTimeStamp())/tonumber(costStr[1]))*tonumber(costStr[3])
LogGreen("需要16"..tostring(value).." 现有:"..tostring(BagManager.GetTotalItemNum(16)))
if BagManager.GetTotalItemNum(16) >= value then
NetManager.ArchitectureOperateRequest({HomeLandManager.BuildData[i].dataMain.Id},2,0,function ()
self:OnShow()
end)
else
PopupTipPanel.ShowTip("妖晶不足!")
end
2021-12-24 18:20:18 +08:00
end)
--取消
Util.AddOnceClick(self.mapData[i].btnCancel,function ()
NetManager.ArchitectureOperateRequest({HomeLandManager.BuildData[i].dataMain.Id},3,0,function ()
self:OnShow()
end)
end)
2021-12-21 18:11:12 +08:00
end
2021-12-28 11:54:08 +08:00
--建木神树
Util.AddOnceClick(self.mapData[7].Obj,function ()
if ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.SACREDTREE) then
UIManager.OpenPanel(UIName.SacredTreePanel)
end
end)
--摘星阁
Util.AddOnceClick(self.mapData[6].Obj,function ()
PopupTipPanel.ShowTip("摘星阁")
end)
2021-12-20 16:50:51 +08:00
end
function HomeLand:AddListener()
2021-12-24 18:20:18 +08:00
Game.GlobalEvent:AddEvent(GameEvent.UI.OnUpdateData, self.OnShow,self)
2021-12-20 16:50:51 +08:00
end
function HomeLand:RemoveListener()
2021-12-24 18:20:18 +08:00
Game.GlobalEvent:RemoveEvent(GameEvent.UI.OnUpdateData, self.OnShow,self)
2021-12-20 16:50:51 +08:00
end
--待功能扩展(试图打开某个状态)
function HomeLand:OnOpen()
2021-12-21 18:11:12 +08:00
self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.XiuXing })
2021-12-20 16:50:51 +08:00
end
function HomeLand:OnSortingOrderChange()
end
function HomeLand:OnShow()
2021-12-24 18:20:18 +08:00
self:SetBuildsState()
2021-12-28 11:54:08 +08:00
self:SetTime()
2021-12-24 18:20:18 +08:00
end
function HomeLand:SetBuildsState()
2021-12-28 11:54:08 +08:00
for i = 1, 7 do
2021-12-24 18:20:18 +08:00
local data = HomeLandManager.BuildData[i]
local curObj = self.mapData[i]
2021-12-28 13:37:04 +08:00
curObj.data = HomeLandManager.BuildData[i]
2021-12-24 18:20:18 +08:00
curObj.OpenLimit:SetActive(true)
curObj.btnUpgrade:SetActive(false)
curObj.btnCancel:SetActive(false)
curObj.btnSpeedUp:SetActive(false)
2021-12-28 11:54:08 +08:00
-- curObj.Icon.gameObject:SetActive(false)
2021-12-24 18:20:18 +08:00
curObj.upgradeImg:SetActive(false)
2021-12-28 11:54:08 +08:00
curObj.updateTime:SetActive(false)
curObj.CanGet:SetActive(false)
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 HomeLandManager.BuildData[5].level < HomeLandConfig[i].UnlockLevel[2] then
curObj.limitText.text = string.format("浮生殿到达%s级开启",HomeLandConfig[i].UnlockLevel[2])
elseif HomeLandConfig[i].UnlockLevel[1] == 3 and PlayerManager.level < GlobalSystemConfig[HomeLandConfig[i].UnlockLevel[2]].OpenRules[2] then
curObj.limitText.text = string.format("玩家等级到达%s级开启",GlobalSystemConfig[HomeLandConfig[i].UnlockLevel[2]].OpenRules[2])
else
curObj.OpenLimit:SetActive(false)
end
if data.dataSingle then
2021-12-24 18:20:18 +08:00
if data.dataSingle.Gain then--有产出的才需要icon
curObj.Icon.sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(data.dataSingle.Gain[1]))
2021-12-28 11:54:08 +08:00
-- curObj.Icon.gameObject:SetActive(true)
if not curObj.OpenLimit.activeInHierarchy then
curObj.showTime = data.startTime + 60
curObj.CanGet:SetActive(data.startTime + 60 < GetTimeStamp())
PlayUIAnim(curObj.CanGet)
end
2021-12-24 18:20:18 +08:00
end
2021-12-28 11:54:08 +08:00
if data.endTime > GetTimeStamp() then--如果有结束时间说明在升级,可以取消,可以加速
curObj.btnCancel:SetActive(true)
curObj.btnSpeedUp:SetActive(true)
curObj.upgradeImg:SetActive(true)
curObj.updateTime:SetActive(true)
curObj.leftTime = data.endTime - GetTimeStamp() >= 0 and data.endTime - GetTimeStamp() or -1
curObj.updateTimeText.text = TimeToFelaxible(curObj.leftTime)
2021-12-28 13:37:04 +08:00
curObj.timeSlide.fillAmount = (data.dataSingle.Time-curObj.leftTime)/data.dataSingle.Time
2021-12-28 11:54:08 +08:00
PlayUIAnim(curObj.upgradeImg)
else--如果没有就是可以点击升级
if data.dataSingle.Cost then
2021-12-24 18:20:18 +08:00
curObj.btnUpgrade:SetActive(true)
end
end
end
2021-12-28 11:54:08 +08:00
else
curObj.limitText.text = "暂未开放"
end
if data.dataSingle and data.dataMain.IsOpen == 1 then--需要升级的才显示等级
curObj.Name.text = string.format("%s(%s级)",data.dataMain.Name,data.dataSingle.level)
else--部分没有等级所以不需要显示等级
2021-12-24 18:20:18 +08:00
curObj.Name.text = string.format("%s",data.dataMain.Name)
end
2021-12-28 11:54:08 +08:00
Util.AddOnceClick(curObj.CanGet,function ()
NetManager.HomeAllGainRequset(data.dataMain.Id,function ()
self:OnShow()
end)
end)
2021-12-24 18:20:18 +08:00
end
2021-12-20 16:50:51 +08:00
end
2021-12-28 11:54:08 +08:00
function HomeLand: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)
2021-12-28 13:37:04 +08:00
if curObj.leftTime >= 0 then
2021-12-28 11:54:08 +08:00
curObj.updateTimeText.text = TimeToFelaxible(curObj.leftTime)
curObj.leftTime = curObj.leftTime -1
2021-12-28 13:37:04 +08:00
curObj.timeSlide.fillAmount = (curObj.data.dataSingle.Time-curObj.leftTime)/curObj.data.dataSingle.Time
2021-12-28 11:54:08 +08:00
if curObj.leftTime < 0 then
NetManager.HomeInfoRequest(function ()
self:OnShow()
end)
end
end
curObj.CanGet:SetActive(curObj.showTime > 0 and curObj.showTime < GetTimeStamp())
end
end, 1, -1, true)
self.timer:Start()
end
2021-12-20 16:50:51 +08:00
function HomeLand:OnClose()
2021-12-28 11:54:08 +08:00
self.curSelect = 0
2021-12-24 18:20:18 +08:00
for j = 1, 5 do
2021-12-21 18:11:12 +08:00
self.mapData[j].Btns:SetActive(false)
end
2021-12-20 16:50:51 +08:00
end
function HomeLand:OnDestroy()
self.spLoader:Destroy()
SubUIManager.Close(self.UpView)
self.UpView = nil
2021-12-28 11:54:08 +08:00
if self.timer then
self.timer:Stop()
self.timer = nil
end
2021-12-21 18:11:12 +08:00
-- if self.playerInfoView then
-- SubUIManager.Close(self.playerInfoView)
-- self.playerInfoView = nil
-- end
2021-12-20 16:50:51 +08:00
end
return HomeLand