366 lines
16 KiB
Lua
366 lines
16 KiB
Lua
local HomeLand = quick_class("HomeLand", BasePanel)
|
||
local HomeLandConfig = ConfigManager.GetConfig(ConfigName.HomeLand)
|
||
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 HomeLand: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.RightUp = Util.GetGameObject(self.map,"RightUp")
|
||
self.RightDown = Util.GetGameObject(self.map,"RightDown")
|
||
|
||
--btns
|
||
self.taskBtn = Util.GetGameObject(self.RightUp,"Task")
|
||
self.yunYouBtn = Util.GetGameObject(self.RightUp,"YunYou")
|
||
|
||
--产出详情框
|
||
self.GainDetail = Util.GetGameObject(self.map,"GainDetail")
|
||
self.maskBtn = Util.GetGameObject(self.GainDetail,"mask")
|
||
self.Kuang = Util.GetGameObject(self.GainDetail,"Kuang")
|
||
self.Btn = Util.GetGameObject(self.GainDetail,"Btn")
|
||
self.BtnImage = Util.GetGameObject(self.Btn,"Image")
|
||
--progress
|
||
self.progress = Util.GetGameObject(self.Kuang,"Progress")
|
||
self.helpBtn1 = Util.GetGameObject(self.progress,"Help1")
|
||
self.progressPre = Util.GetGameObject(self.progress,"progressPre")
|
||
self.preList1 = {}
|
||
--detail
|
||
self.detail = Util.GetGameObject(self.Kuang,"Detail")
|
||
self.helpBtn2 = Util.GetGameObject(self.detail,"Help2")
|
||
self.detailPre = Util.GetGameObject(self.detail,"detailPre")
|
||
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].Name = Util.GetGameObject(self.mapData[i].Obj,"Title/Text"):GetComponent("Text")
|
||
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")
|
||
self.mapData[i].Btns = Util.GetGameObject(self.mapData[i].Obj,"Btns")
|
||
self.mapData[i].OpenLimit = Util.GetGameObject(self.mapData[i].Obj,"OpenLimit")
|
||
self.mapData[i].limitText = Util.GetGameObject(self.mapData[i].OpenLimit,"Text"):GetComponent("Text")
|
||
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")
|
||
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].btnCancel = Util.GetGameObject(self.mapData[i].Btns,"Cancel")
|
||
self.mapData[i].btnSpeedUp = Util.GetGameObject(self.mapData[i].Btns,"Speed")
|
||
self.mapData[i].leftTime = -1
|
||
self.mapData[i].showTime = -1
|
||
end
|
||
|
||
self.curSelect = 0
|
||
end
|
||
|
||
function HomeLand:BindEvent()
|
||
|
||
Util.AddClick(self.btnBack, function()
|
||
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
|
||
self:ClosePanel()
|
||
end)
|
||
Util.AddClick(self.Bg, function()
|
||
self.curSelect = 0
|
||
for j = 1, 5 do
|
||
self.mapData[j].Btns:SetActive(false)
|
||
end
|
||
end)
|
||
for i = 1, 5 do
|
||
--打开菜单
|
||
Util.AddOnceClick(self.mapData[i].Obj,function ()
|
||
if self.curSelect ~= i then
|
||
self.curSelect = i
|
||
for j = 1, 5 do
|
||
self.mapData[j].Btns:SetActive(false)
|
||
end
|
||
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
|
||
self.mapData[i].Btns:SetActive(true)
|
||
PlayUIAnim(self.mapData[i].Btns)
|
||
end
|
||
end)
|
||
--打开信息界面
|
||
Util.AddOnceClick(self.mapData[i].btnDetail,function ()
|
||
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.HomeLandBuildingDetail,HomeLandManager.BuildData[i])
|
||
end)
|
||
--打开升级界面
|
||
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 ()
|
||
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
|
||
MsgPanel.ShowTwo(string.format("是否花费%s妖晶立即升级?",value),function() end,function()
|
||
NetManager.ArchitectureOperateRequest({HomeLandManager.BuildData[i].dataMain.Id},2,0,function ()
|
||
self.mapData[i].leftTime = -1
|
||
self:OnShow()
|
||
end)
|
||
end,"取消","确定")
|
||
else
|
||
PopupTipPanel.ShowTip("妖晶不足!")
|
||
end
|
||
end)
|
||
--取消
|
||
Util.AddOnceClick(self.mapData[i].btnCancel,function ()
|
||
NetManager.ArchitectureOperateRequest({HomeLandManager.BuildData[i].dataMain.Id},3,0,function ()
|
||
self:OnShow()
|
||
end)
|
||
end)
|
||
end
|
||
--建木神树
|
||
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 ()
|
||
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.HomeLandEquip)
|
||
end)
|
||
|
||
--产出详情框
|
||
Util.AddClick(self.maskBtn, function()
|
||
bool = false
|
||
self.maskBtn:SetActive(bool)
|
||
self:SetDetailBar()
|
||
end)
|
||
Util.AddClick(self.Btn, function()
|
||
bool = not bool
|
||
self:SetDetailBar()
|
||
end)
|
||
|
||
--右侧按钮们
|
||
Util.AddClick(self.taskBtn, function()
|
||
MonsterCampManager.preType = 5
|
||
UIManager.OpenPanel(UIName.TrialRewardPopup,HomeLandManager.SetRewardData(),function(id,rewardFunc)
|
||
NetManager.TakeMissionRewardRequest(TaskTypeDef.HomeLandTask,id, function(msg)
|
||
UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function ()
|
||
if rewardFunc then
|
||
rewardFunc()
|
||
end
|
||
end)
|
||
end)
|
||
end,5)
|
||
end)
|
||
|
||
end
|
||
|
||
function HomeLand:AddListener()
|
||
Game.GlobalEvent:AddEvent(GameEvent.UI.OnUpdateData, self.OnShow,self)
|
||
end
|
||
|
||
function HomeLand:RemoveListener()
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.UI.OnUpdateData, self.OnShow,self)
|
||
end
|
||
|
||
--待功能扩展(试图打开某个状态)
|
||
function HomeLand:OnOpen()
|
||
self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.XiuXing })
|
||
end
|
||
|
||
|
||
function HomeLand:OnSortingOrderChange()
|
||
end
|
||
|
||
function HomeLand:OnShow()
|
||
self:SetBuildsState()
|
||
self:SetTime()
|
||
self:InitDetailBar()
|
||
end
|
||
|
||
function HomeLand:InitDetailBar()
|
||
local targetPos = bool and Vector3.zero or Vector3.New(1000,0,0)
|
||
self.Kuang:GetComponent("RectTransform").localPosition = targetPos
|
||
self.maskBtn:SetActive(bool)
|
||
|
||
for key, value in pairs(self.preList1) do
|
||
value:SetActive(false)
|
||
end
|
||
for key, value in pairs(self.preList2) do
|
||
value:SetActive(false)
|
||
end
|
||
for i = 1, 7 do
|
||
local data = HomeLandManager.BuildData[i]
|
||
if data.dataMain.Type == 1 and data.startTime > 0 then
|
||
--进度条部分
|
||
if data.dataSingle.Gain[1] ~= 14 then
|
||
local go = self.preList1[i]
|
||
if not go then
|
||
go = newObjToParent(self.progressPre,self.progress.transform)
|
||
self.preList1[i] = go
|
||
end
|
||
go:SetActive(true)
|
||
local icon = Util.GetGameObject(go,"Icon"):GetComponent("Image")
|
||
local num = Util.GetGameObject(go,"Num"):GetComponent("Text")
|
||
local slider = Util.GetGameObject(go,"Slide/Image"):GetComponent("Image")
|
||
|
||
icon.sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(data.dataSingle.Gain[1]))
|
||
local value = data.dataSingle.Storage[2][2]/100000 > 1 and math.floor(data.dataSingle.Storage[2][2]/100000).."万" or data.dataSingle.Storage[2][2]
|
||
num.text = string.format("%s/%s",BagManager.GetTotalItemNum(data.dataSingle.Storage[2][1]),value)
|
||
slider.fillAmount = BagManager.GetTotalItemNum(data.dataSingle.Storage[2][1])/data.dataSingle.Storage[2][2]
|
||
end
|
||
|
||
--数值部分
|
||
local go2 = self.preList2[i]
|
||
if not go2 then
|
||
go2 = newObjToParent(self.detailPre,self.detail.transform)
|
||
self.preList2[i] = go2
|
||
end
|
||
go2:SetActive(true)
|
||
local icon = Util.GetGameObject(go2,"Icon"):GetComponent("Image")
|
||
local num = Util.GetGameObject(go2,"Num"):GetComponent("Text")
|
||
|
||
icon.sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(data.dataSingle.Gain[1]))
|
||
num.text = string.format("%s产量:%s",ItemConfig[data.dataSingle.Gain[1]].Name,data.dataSingle.Gain[2])
|
||
end
|
||
end
|
||
|
||
end
|
||
|
||
function HomeLand:SetDetailBar()
|
||
self.maskBtn:SetActive(bool)
|
||
local targetPos = bool and Vector3.zero or Vector3.New(1000,0,0)
|
||
local rotation = bool and Vector3.New(0,180,0) or Vector3.zero
|
||
self.Kuang.transform:DOLocalMove(targetPos, 0.8)
|
||
self.BtnImage.transform:DORotate(rotation,0.8)
|
||
end
|
||
|
||
function HomeLand:SetBuildsState()
|
||
for i = 1, 7 do
|
||
local data = HomeLandManager.BuildData[i]
|
||
local curObj = self.mapData[i]
|
||
curObj.data = HomeLandManager.BuildData[i]
|
||
curObj.OpenLimit:SetActive(true)
|
||
curObj.btnUpgrade:SetActive(false)
|
||
curObj.btnCancel:SetActive(false)
|
||
curObj.btnSpeedUp:SetActive(false)
|
||
-- curObj.Icon.gameObject:SetActive(false)
|
||
curObj.upgradeImg:SetActive(false)
|
||
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
|
||
if data.dataSingle.Gain then--有产出的才需要icon
|
||
curObj.Icon.sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(data.dataSingle.Gain[1]))
|
||
-- 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
|
||
end
|
||
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)
|
||
curObj.timeSlide.fillAmount = (data.dataSingle.Time-curObj.leftTime)/data.dataSingle.Time
|
||
PlayUIAnim(curObj.upgradeImg)
|
||
else--如果没有就是可以点击升级
|
||
if data.dataSingle.Cost then
|
||
curObj.btnUpgrade:SetActive(true)
|
||
end
|
||
end
|
||
end
|
||
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--部分没有等级所以不需要显示等级
|
||
curObj.Name.text = string.format("%s",data.dataMain.Name)
|
||
end
|
||
|
||
Util.AddOnceClick(curObj.CanGet,function ()
|
||
NetManager.HomeAllGainRequset(data.dataMain.Id,function ()
|
||
self:OnShow()
|
||
end)
|
||
end)
|
||
end
|
||
end
|
||
|
||
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)
|
||
if curObj.leftTime >= 0 then
|
||
curObj.updateTimeText.text = TimeToFelaxible(curObj.leftTime)
|
||
curObj.leftTime = curObj.leftTime -1
|
||
curObj.timeSlide.fillAmount = (curObj.data.dataSingle.Time-curObj.leftTime)/curObj.data.dataSingle.Time
|
||
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
|
||
|
||
function HomeLand:OnClose()
|
||
self.curSelect = 0
|
||
bool = false
|
||
for j = 1, 5 do
|
||
self.mapData[j].Btns:SetActive(false)
|
||
end
|
||
end
|
||
|
||
function HomeLand:OnDestroy()
|
||
self.spLoader:Destroy()
|
||
SubUIManager.Close(self.UpView)
|
||
self.UpView = nil
|
||
if self.timer then
|
||
self.timer:Stop()
|
||
self.timer = nil
|
||
end
|
||
-- if self.playerInfoView then
|
||
-- SubUIManager.Close(self.playerInfoView)
|
||
-- self.playerInfoView = nil
|
||
-- end
|
||
end
|
||
|
||
return HomeLand |