PGRData/Script/matrix/xui/xuimonstercombat/XUiMonsterCombatTeachingDetail.lua
2024-09-01 22:49:41 +02:00

144 lines
No EOL
4.7 KiB
Lua

---@class XUiMonsterCombatTeachingDetail : XLuaUi
local XUiMonsterCombatTeachingDetail = XLuaUiManager.Register(XLuaUi, "UiMonsterCombatTeachingDetail")
function XUiMonsterCombatTeachingDetail:OnAwake()
self:RegisterUiEvents()
self.GridMonster.gameObject:SetActiveEx(false)
self.GridReward.gameObject:SetActiveEx(false)
-- 默认值
self.TxtNameDefault = self.TextName.text
end
function XUiMonsterCombatTeachingDetail:OnStart(rootUi)
self.RootUi = rootUi
self.GridDescList = {}
self.GridRecommendMonsterList = {}
self.GridUnlockMonsterList = {}
end
function XUiMonsterCombatTeachingDetail:OnEnable()
-- 动画
self.IsPlaying = true
self:PlayAnimation("AnimBegin", handler(self, function()
self.IsPlaying = false
end))
self.IsOpen = true
end
function XUiMonsterCombatTeachingDetail:OnDisable()
self.IsOpen = false
end
function XUiMonsterCombatTeachingDetail:Refresh(stageId)
self.StageId = stageId
self.Stage = XDataCenter.FubenManager.GetStageCfg(stageId)
self.StageEntity = XDataCenter.MonsterCombatManager.GetStageEntity(stageId)
self:UpdateCommon()
self:UpdateMonster()
self:UpdateReward()
end
function XUiMonsterCombatTeachingDetail:UpdateCommon()
-- 标题
self.TxtTitle.text = self.Stage.Name
if self.StageEntity:CheckIsScoreModel() then
-- 积分
self.TextName.text = XUiHelper.GetText("UiMonsterCombatStageDetailScoreDesc", self.StageEntity:GetStageMaxScore())
else
self.TextName.text = self.TxtNameDefault
end
-- 通关提示
local descriptions = self.StageEntity:GetDescription()
for i = 1, 3 do
local desc = descriptions[i]
local ui = self["GridStageDesc" .. i]
if string.IsNilOrEmpty(desc) then
ui.gameObject:SetActiveEx(false)
else
local grid = self.GridDescList[i]
if not grid then
grid = XTool.InitUiObjectByUi({}, ui)
self.GridDescList[i] = grid
end
grid.TxtActive.text = desc
ui.gameObject:SetActiveEx(true)
end
end
end
-- 推荐怪物
function XUiMonsterCombatTeachingDetail:UpdateMonster()
local recommendMonsters = self.StageEntity:GetRecommendMonsters()
local count = #recommendMonsters
for i = 1, count do
local grid = self.GridRecommendMonsterList[i]
if not grid then
local go = i == 1 and self.GridMonster or XUiHelper.Instantiate(self.GridMonster, self.PanelMonsterContent)
grid = XTool.InitUiObjectByUi({}, go)
self.GridRecommendMonsterList[i] = grid
end
local monsterEntity = XDataCenter.MonsterCombatManager.GetMonsterEntity(recommendMonsters[i])
grid.RImgIcon:SetRawImage(monsterEntity:GetAchieveIcon())
grid.GameObject:SetActiveEx(true)
end
for i = count + 1, #self.GridRecommendMonsterList do
self.GridRecommendMonsterList[i].GameObject:SetActiveEx(false)
end
end
-- 解锁怪物
function XUiMonsterCombatTeachingDetail:UpdateReward()
local unlockMonsterIds = self.StageEntity:GetUnlockMonsterIds()
local count = #unlockMonsterIds
for i = 1, count do
local grid = self.GridUnlockMonsterList[i]
if not grid then
local go = i == 1 and self.GridReward or XUiHelper.Instantiate(self.GridReward, self.PanelRewardContent)
grid = XTool.InitUiObjectByUi({}, go)
self.GridUnlockMonsterList[i] = grid
end
local monsterEntity = XDataCenter.MonsterCombatManager.GetMonsterEntity(unlockMonsterIds[i])
grid.RImgIcon:SetRawImage(monsterEntity:GetAchieveIcon())
grid.GameObject:SetActiveEx(true)
end
for i = count + 1, #self.GridUnlockMonsterList do
self.GridUnlockMonsterList[i].GameObject:SetActiveEx(false)
end
end
function XUiMonsterCombatTeachingDetail:Hide()
if self.IsPlaying or not self.IsOpen then
return
end
self.IsPlaying = true
self:PlayAnimation("AnimEnd", handler(self, function()
if XTool.UObjIsNil(self.GameObject) then
return
end
self.IsPlaying = false
self:Close()
end))
end
function XUiMonsterCombatTeachingDetail:RegisterUiEvents()
XUiHelper.RegisterClickEvent(self, self.BtnEnter, self.OnBtnEnterClick)
end
-- 进入编队界面
function XUiMonsterCombatTeachingDetail:OnBtnEnterClick()
if self.IsPlaying then
return
end
if self.Stage == nil then
XLog.Error("XUiMonsterCombatTeachingDetail.OnBtnEnterClick: Can not find StageCfg!")
return
end
CsXGameEventManager.Instance:Notify(XEventId.EVENT_FUBEN_ENTERFIGHT, self.Stage)
end
return XUiMonsterCombatTeachingDetail