PGRData/Script/matrix/xui/xuirpgtower/mainpage/XUiRpgTowerMain.lua

268 lines
No EOL
8.9 KiB
Lua

--兵法蓝图主页面
local XUiRpgTowerMain = XLuaUiManager.Register(XLuaUi, "UiRpgTowerMain")
local XUiRpgTowerMonstersPanel = require("XUi/XUiRpgTower/MainPage/PanelMonsters/XUiRpgTowerMonstersPanel")
local XUiRpgTwerStageDetails = require("XUi/XUiRpgTower/MainPage/PanelStageDetails/XUiRpgTowerStageDetails")
local XUiRpgTowerStageList = require("XUi/XUiRpgTower/MainPage/PanelStageList/XUiRpgTowerStageList")
-- ========= =========
-- =========生命周期方法=========
-- ========= =========
function XUiRpgTowerMain:OnAwake()
XTool.InitUiObject(self)
XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem, XDataCenter.ItemManager.ItemId.ActionPoint, XDataCenter.ItemManager.ItemId.Coin)
XDataCenter.RpgTowerManager.SetNewBegining()
self:InitButtons()
self:InitMonsterPanel()
self:InitStageDetailPanel()
self:InitStageList()
self:InitTeamLevel()
self.RedEvents = {}
end
function XUiRpgTowerMain:OnEnable()
if self.MainEnable and not XDataCenter.RpgTowerManager.GetIsReset() then
self.MainEnable.gameObject:SetActiveEx(false)
self.MainEnable.gameObject:SetActiveEx(true)
else
self:OnActivityReset()
return
end
self:OnShowPanel()
self:AddRedPointEvents()
--[[
if XDataCenter.RpgTowerManager.GetIsFirstIn() then
XUiManager.ShowHelpTip("RpgTowerHelp")
end]]
CS.XShadowHelper.SetDisableUIGlobalShadowMeshHeight(true)
end
function XUiRpgTowerMain:OnDisable()
self:StopTimer()
self:RemoveRedPointEvents()
CS.XShadowHelper.SetDisableUIGlobalShadowMeshHeight(false)
end
function XUiRpgTowerMain:OnGetEvents()
return { XEventId.EVENT_RPGTOWER_RESET, XEventId.EVENT_RPGTOWER_REFRESH_DAILYREWARD }
end
function XUiRpgTowerMain:OnNotify(evt, ...)
local args = { ... }
if evt == XEventId.EVENT_RPGTOWER_RESET then
self:OnActivityReset()
elseif evt == XEventId.EVENT_RPGTOWER_REFRESH_DAILYREWARD then
self:RefreshSupply()
self:RefreshTeamLevel()
end
end
--================
--初始化按钮
--================
function XUiRpgTowerMain:InitButtons()
self.BtnBack.CallBack = function() self:OnBtnBackClick() end
self.BtnMainUi.CallBack = function() self:OnBtnMainUiClick() end
self:BindHelpBtn(self.BtnHelp, "RpgTowerHelp")
self.BtnEnterStage.CallBack = function() self:OnEnterStageClick() end
self.BtnActivityTask.CallBack = function() self:OnTaskClick() end
self.BtnTeam.CallBack = function() self:OnTeamClick() end
XUiHelper.RegisterClickEvent(self, self.ImgSupply, function() self:OnSupplyClick() end)
end
--================
--返回按钮
--================
function XUiRpgTowerMain:OnBtnBackClick()
self:Close()
end
--================
--主界面按钮
--================
function XUiRpgTowerMain:OnBtnMainUiClick()
XLuaUiManager.RunMain()
end
--================
--进入关卡按钮
--================
function XUiRpgTowerMain:OnEnterStageClick()
self.StageDetail:ShowPanel()
end
--================
--活动任务按钮
--================
function XUiRpgTowerMain:OnTaskClick()
XLuaUiManager.Open("UiRpgTowerTask")
end
--================
--队伍养成按钮
--================
function XUiRpgTowerMain:OnTeamClick()
XLuaUiManager.Open("UiRpgTowerRoleList")
end
--================
--获取今日补给
--================
function XUiRpgTowerMain:OnSupplyClick()
if XDataCenter.RpgTowerManager.GetCanReceiveSupply() then
XDataCenter.RpgTowerManager.ReceiveSupply()
else
XUiManager.TipMsg(CS.XTextManager.GetText("RpgTowerCantGetSupply"))
end
end
--================
--初始化怪兽模型面板
--================
function XUiRpgTowerMain:InitMonsterPanel()
local uiModelRoot = self.UiModelGo.transform
self.MonstersPanel = XUiRpgTowerMonstersPanel.New(self.PanelMonster, uiModelRoot)
end
--================
--初始化关卡列表
--================
function XUiRpgTowerMain:InitStageList()
self.StageList = XUiRpgTowerStageList.New(self.PanelStageList, self)
end
--================
--初始化关卡详细
--================
function XUiRpgTowerMain:InitStageDetailPanel()
self.StageDetail = XUiRpgTwerStageDetails.New(self.PanelStageDetail, self)
self.StageDetail:HidePanel()
end
function XUiRpgTowerMain:InitTeamLevel()
local teamLevelScript = require("XUi/XUiRpgTower/Common/XUiRpgTowerTeamBar")
self.TeamLevel = teamLevelScript.New(self.PanelTeamBar, self)
self.TeamLevel:RefreshBar()
end
--================
--点击关卡控件时
--================
function XUiRpgTowerMain:OnClickStageGrid(rStage)
if self.RStage == rStage then return end
self.RStage = rStage
self.StageDetail:RefreshStage(self.RStage)
self.MonstersPanel:RefreshMonsters(self.RStage)
local isShowScore = self.RStage:GetIsShowScore()
self.TxtStageScore.gameObject:SetActiveEx(isShowScore)
if isShowScore then self:SetStageScoreText() end
end
--================
--设置关卡分数
--================
function XUiRpgTowerMain:SetStageScoreText()
local score = self.RStage:GetScore()
if score > 100000000 then
local billion = math.floor(score / 100000000)
local delta = score - billion * 100000000
local scoreNum = string.format("%.2f",delta / 10000)
self.TxtStageScore.text = XUiHelper.GetText("RpgTowerStageScoreBiggerThenBillion", billion, scoreNum)
else
local scoreNum = string.format("%.2f",score / 10000)
self.TxtStageScore.text = XUiHelper.GetText("RpgTowerStageScoreStr", scoreNum)
end
end
--================
--显示界面时
--================
function XUiRpgTowerMain:OnShowPanel()
self.StageList:UpdateData()
self:RefreshSupply()
self:RefreshTeamLevel()
self:SetTimer()
end
--================
--设置界面计时器
--================
function XUiRpgTowerMain:SetTimer()
self:StopTimer()
self:SetResetTime()
self.Timer = XScheduleManager.ScheduleForever(function()
self:SetResetTime()
end, XScheduleManager.SECOND, 0)
end
--================
--显示倒计时与处理倒计时完成时事件
--================
function XUiRpgTowerMain:SetResetTime()
local endTimeSecond = XDataCenter.RpgTowerManager.GetEndTime()
local now = XTime.GetServerNowTimestamp()
local leftTime = endTimeSecond - now
local remainTime = XUiHelper.GetTime(leftTime, XUiHelper.TimeFormatType.ACTIVITY)
self.TxtRemainTime.text = CS.XTextManager.GetText("RpgTowerRemainTime", remainTime)
if leftTime <= 0 then
self:OnActivityReset()
end
end
--================
--停止界面计时器
--================
function XUiRpgTowerMain:StopTimer()
if self.Timer then
XScheduleManager.UnSchedule(self.Timer)
self.Timer = nil
end
end
--================
--活动周期结束时弹回主界面
--================
function XUiRpgTowerMain:OnActivityReset()
if self.IsReseting then return end
self.IsReseting = true
self:StopTimer()
XLuaUiManager.RunMain()
XUiManager.TipMsg(CS.XTextManager.GetText("RpgTowerFinished"))
end
--================
--刷新每日补给
--================
function XUiRpgTowerMain:RefreshSupply()
local haveSupply = XDataCenter.RpgTowerManager.GetCanReceiveSupply()
self.TxtSupplyNotReceive.gameObject:SetActiveEx(haveSupply)
self.TxtSupplyReceive.gameObject:SetActiveEx(not haveSupply)
self.ObjSupplyRed.gameObject:SetActiveEx(haveSupply)
end
--================
--刷新队伍经验条
--================
function XUiRpgTowerMain:RefreshTeamLevel()
if XDataCenter.RpgTowerManager.CheckExpChange() then
local changes = XDataCenter.RpgTowerManager.GetExpChanges()
self.TeamLevel:AddExp(changes.ChangeExp, changes.PreTeamExp, changes.PreTeamLevel)
else
self.TeamLevel:RefreshBar()
end
end
--================
--注册页面红点事件
--================
function XUiRpgTowerMain:AddRedPointEvents()
if self.AlreadyAddRed then return end
self.AlreadyAddRed = true
table.insert(self.RedEvents, XRedPointManager.AddRedPointEvent(self.BtnActivityTask, self.OnCheckBtnTaskRedPoint, self, { XRedPointConditions.Types.CONDITION_RPGTOWER_TASK_RED }))
table.insert(self.RedEvents, XRedPointManager.AddRedPointEvent(self.BtnTeam, self.OnCheckBtnTeamRedPoint, self, { XRedPointConditions.Types.CONDITION_RPGTOWER_TEAM_RED }))
end
--================
--注销页面红点事件
--================
function XUiRpgTowerMain:RemoveRedPointEvents()
if not self.AlreadyAddRed then return end
for _, eventId in pairs(self.RedEvents) do
XRedPointManager.RemoveRedPointEvent(eventId)
end
self.RedEvents = {}
self.AlreadyAddRed = false
end
--================
--检查任务按钮红点
--================
function XUiRpgTowerMain:OnCheckBtnTaskRedPoint(count)
self.BtnActivityTask:ShowReddot(count >= 0)
end
--================
--检查养成界面按钮红点
--================
function XUiRpgTowerMain:OnCheckBtnTeamRedPoint(count)
self.BtnTeam:ShowReddot(count >= 0)
end
return XUiRpgTowerMain