c1_lua/lua/app/ui/arena/arena_match_ui.lua
2023-06-27 18:27:11 +08:00

181 lines
6.5 KiB
Lua

-- 竞技场:匹配
local ArenaMatchUI = class("ArenaMatchUI", BaseUI)
function ArenaMatchUI:isFullScreen()
return false
end
function ArenaMatchUI:showCommonBG()
return false
end
function ArenaMatchUI:getPrefabPath()
return "assets/prefabs/ui/arena/arena_match_ui.prefab"
end
function ArenaMatchUI:onPressBackspace()
self:closeUI()
end
function ArenaMatchUI:ctor()
end
function ArenaMatchUI:onCover()
end
function ArenaMatchUI:onReshow()
end
function ArenaMatchUI:onClose()
if self.waitSid then
ModuleManager.BattleManager:unscheduleGlobal(self.waitSid)
end
if self.countdownSid then
ModuleManager.BattleManager:unscheduleGlobal(self.countdownSid)
end
end
function ArenaMatchUI:onLoadRootComplete()
local uiMap = self.root:genAllChildren()
-- 匹配等待页
self.matchLoading = uiMap["arena_match_ui.match_loading"]
self.spineLoading = uiMap["arena_match_ui.match_loading.spine_loading"]
self.txSeason = uiMap["arena_match_ui.match_loading.tx_season"]
self.txLoading = uiMap["arena_match_ui.match_loading.tx_loading"]
self.btnCancel = uiMap["arena_match_ui.match_loading.btn_cancel"]
self.txCancel = uiMap["arena_match_ui.match_loading.btn_cancel.tx_cancel"]
-- 匹配结果页
self.matchResult = uiMap["arena_match_ui.match_result"]
self.btnClose = uiMap["arena_match_ui.match_result.btn_close"]
-- 对手信息
self.matchAvatar = CellManager:addCellComp(uiMap["arena_match_ui.match_result.match_info.player_head_cell"], GConst.TYPEOF_LUA_CLASS.PLAYER_HEAD_CELL)
self.matchTxName = uiMap["arena_match_ui.match_result.match_info.tx_name"]
self.matchTxLevel = uiMap["arena_match_ui.match_result.match_info.tx_level"]
self.matchImgGrading = uiMap["arena_match_ui.match_result.match_info.img_grading"]
self.matchTxGrading = uiMap["arena_match_ui.match_result.match_info.img_grading.tx_grading"]
-- 对手编队
self.txMatchFormation = uiMap["arena_match_ui.match_result.match_formation.tx_match_formation"]
self.matchHeroFormationComp = uiMap["arena_match_ui.match_result.match_formation.hero_formation_comp"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.HERO_FORMATION_COMP)
-- 自己编队
self.txMyFormation = uiMap["arena_match_ui.match_result.my_formation.tx_my_formation"]
self.selfHeroFormationComp = uiMap["arena_match_ui.match_result.my_formation.hero_formation_comp"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.HERO_FORMATION_COMP)
-- 功能按钮
self.btnStart = uiMap["arena_match_ui.match_result.btn_start"]
self.imgConst = uiMap["arena_match_ui.match_result.btn_start.img_const"]
self.txStart = uiMap["arena_match_ui.match_result.btn_start.tx_start"]
self.txConst = uiMap["arena_match_ui.match_result.btn_start.tx_const"]
self.btnRematch = uiMap["arena_match_ui.match_result.btn_rematch"]
self.txRematch = uiMap["arena_match_ui.match_result.btn_rematch.tx_rematch"]
self.txFreeCountdown = uiMap["arena_match_ui.match_result.btn_rematch.tx_free_countdown"]
self.imgAd = uiMap["arena_match_ui.match_result.btn_rematch.img_ad"]
self.btnFormation = uiMap["arena_match_ui.match_result.btn_formation"]
self.txFormation = uiMap["arena_match_ui.match_result.btn_formation.tx_formation"]
self.btnCancel:addClickListener(function()
self:closeUI()
end)
self.btnClose:addClickListener(function()
self:closeUI()
end)
self.btnStart:addClickListener(function()
ModuleManager.ArenaManager:reqChallenge()
self:closeUI()
end)
self.btnRematch:addClickListener(function()
-- todo 判断重新匹配状态
self:closeUI()
end)
self.btnFormation:addClickListener(function()
UIManager:showUI("app/ui/arena/arena_formation_ui")
self:closeUI()
end)
self:bind(DataManager.ArenaData, "isDirty", function()
self:onRefresh()
end)
end
function ArenaMatchUI:onRefresh()
self.matchInfo = DataManager.ArenaData:getMatchInfo()
if self.matchInfo == nil then
ModuleManager.ArenaManager:reqMatch()
self:showMatchLoading()
else
self:showMatchResult()
end
end
-- 展示匹配等待页
function ArenaMatchUI:showMatchLoading()
self.matchLoading:setActive(true)
self.matchResult:setActive(false)
self.txSeason:setText()
self.txLoading:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_5))
self.txCancel:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_5))
self.spineLoading:playAnimComplete("idle1", false, true, function()
self.spineLoading:playAnim("idle2", true, true)
end)
-- 等待
if self.waitSid == nil then
self.waitSid = self.matchLoading:scheduleGlobal(function()
self.matchInfo = DataManager.ArenaData:getMatchInfo()
if self.matchInfo ~= nil then
self:showMatchResult()
else
-- 居然还没获取到数据,继续等待,基本不会走到这
self:showMatchLoading()
end
end, 1.5)
end
end
-- 展示匹配结果页
function ArenaMatchUI:showMatchResult()
self.matchLoading:setActive(true)
self.matchResult:setActive(false)
self.txMatchFormation:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_5))
self.txMyFormation:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_5))
self.txStart:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_5))
self.txConst:setText(0)
self.txRematch:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_5))
self.txFormation:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_5))
self.txFreeCountdown:setText(I18N:getGlobalText(I18N.GlobalConst.BATTLE_DESC_5))
local matchGradingId = DataManager.ArenaData:getGradingIdFromScore(self.matchInfo.score)
self.matchAvatar:refresh(self.matchInfo.avatar, self.matchInfo.avatar_frame)
self.matchTxName:setText(self.matchInfo.name)
self.matchTxLevel:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, self.matchInfo.level))
self.matchImgGrading:setSprite(GConst.ATLAS_PATH.ARENA, DataManager.ArenaData:getGradingIconName(matchGradingId))
self.matchTxGrading:setText(DataManager.ArenaData:getGradingName(matchGradingId))
self.matchHeroFormationComp:refreshWithOtherHero(self.matchInfo.array_heroes)
self.selfHeroFormationComp:refresh()
self.freeRematchCD = DataManager.ArenaData:getFreeRematchCd()
if self.countdownSid then
ModuleManager.BattleManager:unscheduleGlobal(self.countdownSid)
end
self.countdownSid = self.txFreeCountdown:scheduleGlobal(function()
self:refreshCountdown()
end, 1)
end
function ArenaMatchUI:refreshCountdown()
self.freeRematchCD = self.freeRematchCD - 1
if self.freeRematchCD <= 0 then
-- 冷却已好
self.txFreeCountdown:setText("")
ModuleManager.BattleManager:unscheduleGlobal(self.countdownSid)
else
-- 冷却未好
self.txFreeCountdown:setText(GFunc.getTimeStrWithHMS(self.freeRematchCD))
end
end
return ArenaMatchUI