196 lines
No EOL
6.8 KiB
Lua
196 lines
No EOL
6.8 KiB
Lua
local XUiEscapeLayerPanel = require("XUi/XUiEscape/Layer/XUiEscapeLayerPanel")
|
|
local XUiPanelFeature = require("XUi/XUiEscape/XUiPanelFeature")
|
|
|
|
--大逃杀区域爬塔界面
|
|
local XUiEscapeFuben = XLuaUiManager.Register(XLuaUi, "UiEscapeFuben")
|
|
|
|
function XUiEscapeFuben:OnAwake()
|
|
self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem, XDataCenter.ItemManager.ItemId.ActionPoint, XDataCenter.ItemManager.ItemId.Coin)
|
|
self.LayerPanels = {}
|
|
self:InitButtonCallBack()
|
|
self:InitDynamicTable()
|
|
self.EscapeData = XDataCenter.EscapeManager.GetEscapeData()
|
|
self.FeaturePanel = XUiPanelFeature.New(self.PanelBuffList)
|
|
end
|
|
|
|
function XUiEscapeFuben:OnStart(chapterGroupId)
|
|
self.ChapterGroupId = chapterGroupId
|
|
self.ChapterIdList = XEscapeConfigs.GetEscapeChapterIdListByGroupId(chapterGroupId)
|
|
self:InitCurDifficulty()
|
|
self:InitTimes()
|
|
end
|
|
|
|
function XUiEscapeFuben:OnEnable()
|
|
XUiEscapeFuben.Super.OnEnable(self)
|
|
self:Refresh()
|
|
self:CheckOpenChapterSettle()
|
|
end
|
|
|
|
function XUiEscapeFuben:OnDestroy()
|
|
for _, grid in pairs(self.DynamicTable:GetGrids()) do
|
|
grid:Destroy()
|
|
end
|
|
end
|
|
|
|
function XUiEscapeFuben:OnReleaseInst()
|
|
return self.CurDifficulty
|
|
end
|
|
|
|
function XUiEscapeFuben:OnResume(value)
|
|
self.CurDifficulty = value
|
|
end
|
|
|
|
function XUiEscapeFuben:InitTimes()
|
|
self:SetAutoCloseInfo(XDataCenter.EscapeManager.GetActivityEndTime(), function(isClose)
|
|
if isClose then
|
|
XDataCenter.EscapeManager.HandleActivityEndTime()
|
|
end
|
|
end)
|
|
end
|
|
|
|
function XUiEscapeFuben:InitCurDifficulty()
|
|
if self.CurDifficulty then
|
|
return
|
|
end
|
|
|
|
local chapterIdList = self.ChapterIdList
|
|
local difficulty
|
|
for _, chapterId in ipairs(chapterIdList) do
|
|
if self.EscapeData:IsInChallengeChapter(chapterId) then
|
|
difficulty = XEscapeConfigs.GetChapterDifficulty(chapterId)
|
|
break
|
|
end
|
|
end
|
|
self.CurDifficulty = difficulty or XEscapeConfigs.Difficulty.Normal
|
|
end
|
|
|
|
function XUiEscapeFuben:InitDynamicTable()
|
|
self.DynamicTable = XDynamicTableNormal.New(self.PanelStageList)
|
|
self.DynamicTable:SetProxy(XUiEscapeLayerPanel)
|
|
self.DynamicTable:SetDelegate(self)
|
|
self.GridStage.gameObject:SetActiveEx(false)
|
|
end
|
|
|
|
function XUiEscapeFuben:Refresh()
|
|
local curDifficulty = self.CurDifficulty
|
|
local chapterId = self.ChapterIdList[curDifficulty]
|
|
|
|
self.TxtStageNum.text = XUiHelper.GetText("EscapeChapterEnglishId", chapterId)
|
|
self.TxtTitle.text = XEscapeConfigs.GetChapterName(chapterId)
|
|
|
|
self.TxtBuff.text = XUiHelper.ConvertLineBreakSymbol(XEscapeConfigs.GetChapterBuffDesc(chapterId))
|
|
self.FeaturePanel:Refresh(XEscapeConfigs.GetChapterShowFightEventIds(chapterId))
|
|
|
|
--未进行挑战则不展示撤退按钮
|
|
local isInChallenge = self.EscapeData:IsInChallengeChapter(chapterId)
|
|
self.BtnExit.gameObject:SetActiveEx(isInChallenge)
|
|
|
|
self.BtnHardMod.gameObject:SetActiveEx(curDifficulty == XEscapeConfigs.Difficulty.Hard)
|
|
self.BtnEasyMod.gameObject:SetActiveEx(curDifficulty == XEscapeConfigs.Difficulty.Normal)
|
|
if self.BgHard then
|
|
self.BgHard.gameObject:SetActiveEx(curDifficulty == XEscapeConfigs.Difficulty.Hard)
|
|
end
|
|
if self.BgEasy then
|
|
self.BgEasy.gameObject:SetActiveEx(curDifficulty == XEscapeConfigs.Difficulty.Normal)
|
|
end
|
|
|
|
--剩余逃生时间,未进行挑战不显示
|
|
if isInChallenge then
|
|
local remainTime = self.EscapeData:GetRemainTime()
|
|
self.TxtTime.text = XUiHelper.GetTime(remainTime, XUiHelper.TimeFormatType.ESCAPE_REMAIN_TIME)
|
|
end
|
|
self.PanelTime.gameObject:SetActiveEx(isInChallenge)
|
|
|
|
--当前积分和评级
|
|
local score = self.EscapeData:GetScore()
|
|
if self.TxtIntegral then
|
|
self.TxtIntegral.text = XUiHelper.GetText("EscapeCurScore", score)
|
|
end
|
|
if self.RImgIntegral then
|
|
self.RImgIntegral:SetRawImage(XEscapeConfigs.GetChapterSettleRemainTimeGradeImgPath(score))
|
|
end
|
|
|
|
self:UpdateLayer(chapterId)
|
|
end
|
|
|
|
function XUiEscapeFuben:UpdateLayer(chapterId)
|
|
self.LayerIdList = XEscapeConfigs.GetChapterLayerIds(chapterId)
|
|
self.DynamicTable:SetDataSource(self.LayerIdList)
|
|
self.DynamicTable:ReloadDataSync()
|
|
end
|
|
|
|
function XUiEscapeFuben:OnDynamicTableEvent(event, index, grid)
|
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
|
local layerId = self.LayerIdList[index]
|
|
local chapterId = self.ChapterIdList[self.CurDifficulty]
|
|
grid.RootUi = self.RootUi
|
|
grid:Refresh(layerId, index, chapterId)
|
|
end
|
|
end
|
|
|
|
function XUiEscapeFuben:InitButtonCallBack()
|
|
self:RegisterClickEvent(self.BtnBack, self.Close)
|
|
self:RegisterClickEvent(self.BtnMainUi, function() XLuaUiManager.RunMain() end)
|
|
self:BindHelpBtn(self.BtnHelp, XEscapeConfigs.GetHelpKey())
|
|
self:RegisterClickEvent(self.BtnExit, self.OnBtnExitClick) --撤出战场
|
|
self:RegisterClickEvent(self.BtnEasyMod, self.OnBtnSwitchModelClick) --切换难度
|
|
self:RegisterClickEvent(self.BtnHardMod, self.OnBtnSwitchModelClick) --切换难度
|
|
end
|
|
|
|
function XUiEscapeFuben:OnBtnSwitchModelClick()
|
|
local curDifficulty = self.CurDifficulty
|
|
local chapterIdList = self.ChapterIdList
|
|
if self.EscapeData:IsInChallengeChapter(chapterIdList[curDifficulty]) then
|
|
XUiManager.TipErrorWithKey("EscapeInChallengeMode", XEscapeConfigs.GetDifficultyName(curDifficulty))
|
|
return
|
|
end
|
|
|
|
local difficulty = curDifficulty == XEscapeConfigs.Difficulty.Normal and XEscapeConfigs.Difficulty.Hard or XEscapeConfigs.Difficulty.Normal
|
|
local chapterId = chapterIdList[difficulty]
|
|
if not chapterId then
|
|
return
|
|
end
|
|
|
|
if not XDataCenter.EscapeManager.IsChapterOpen(chapterId, true) then
|
|
return
|
|
end
|
|
|
|
self.CurDifficulty = difficulty
|
|
|
|
self:PlayAnimation("QieHuan")
|
|
self:Refresh()
|
|
end
|
|
|
|
function XUiEscapeFuben:OnBtnExitClick()
|
|
local title = XUiHelper.GetText("EscapeGiveUpTipsTitle")
|
|
local content = XUiHelper.GetText("EscapeGiveUpTipsDesc")
|
|
local sureCallback = function()
|
|
XDataCenter.EscapeManager.RequestEscapeSettleChapter(function()
|
|
self:OpenUiEscapeSettle(false)
|
|
end)
|
|
end
|
|
XUiManager.DialogTip(title, content, nil, nil, sureCallback, nil)
|
|
end
|
|
|
|
function XUiEscapeFuben:CheckOpenChapterSettle()
|
|
if XDataCenter.EscapeManager.GetIsOpenChapterSettle() then
|
|
XDataCenter.EscapeManager.SetOpenChapterSettle(false)
|
|
self:OpenUiEscapeSettle(true)
|
|
end
|
|
end
|
|
|
|
function XUiEscapeFuben:OpenUiEscapeSettle(isWin)
|
|
XLuaUiManager.Remove("UiEscapeFuben")
|
|
XLuaUiManager.Open("UiEscapeSettle", XEscapeConfigs.ShowSettlePanel.AllWinInfo, isWin)
|
|
end
|
|
|
|
function XUiEscapeFuben:OnGetEvents()
|
|
return {XEventId.EVENT_ESCAPE_DATA_NOTIFY}
|
|
end
|
|
|
|
function XUiEscapeFuben:OnNotify(evt, ...)
|
|
if evt == XEventId.EVENT_ESCAPE_DATA_NOTIFY then
|
|
self:Refresh()
|
|
self:CheckOpenChapterSettle()
|
|
end
|
|
end |