Files
Endfield-Data/LuaScripts/UI/Panels/MapMarkDetailSettlementDefenseTerminal/MapMarkDetailSettlementDefenseTerminalCtrl.lua
2025-12-02 20:37:18 +07:00

86 lines
3.0 KiB
Lua

local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
local PANEL_ID = PanelId.MapMarkDetailSettlementDefenseTerminal
MapMarkDetailSettlementDefenseTerminalCtrl = HL.Class('MapMarkDetailSettlementDefenseTerminalCtrl', uiCtrl.UICtrl)
MapMarkDetailSettlementDefenseTerminalCtrl.s_messages = HL.StaticField(HL.Table) << {
}
MapMarkDetailSettlementDefenseTerminalCtrl.m_settlementId = HL.Field(HL.String) << ""
MapMarkDetailSettlementDefenseTerminalCtrl.m_markInstId = HL.Field(HL.String) << ""
MapMarkDetailSettlementDefenseTerminalCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
self.m_markInstId = arg.markInstId
local commonArgs = {}
commonArgs.bigBtnActive = true
commonArgs.markInstId = self.m_markInstId
self.view.detailCommon:InitMapMarkDetailCommon(commonArgs)
local getRuntimeDataSuccess, markRuntimeData = GameInstance.player.mapManager:GetMarkInstRuntimeData(self.m_markInstId)
if getRuntimeDataSuccess == false then
logger.error("地图详情页获取实例数据失败" .. self.m_instId)
return
end
self.m_settlementId = markRuntimeData.detail.settlementId
local defenseGroupData = GameInstance.player.towerDefenseSystem:GetLastUnlockedDefenseGroup(self.m_settlementId)
if defenseGroupData == nil then
self.view.riskLevelCell.gameObject:SetActive(false)
self.view.cautionNode.gameObject:SetActive(false)
return
end
local _, groupTableData = Tables.towerDefenseGroupTable:TryGetValue(defenseGroupData.groupId)
local levelCellView = self.view.riskLevelCell
if groupTableData then
levelCellView.nameText.text = groupTableData.name
end
levelCellView.lockStateController:SetState("Normal")
levelCellView.selectionStateController:SetState("UnSelected")
local isNormalCompleted = defenseGroupData.normalLevel and defenseGroupData.normalLevel.isCompleted
levelCellView.manualDefenseCell:SetState(isNormalCompleted and "Completed" or "UnSelected")
local isAutoCompleted = defenseGroupData.autoLevel and defenseGroupData.autoLevel.isCompleted
levelCellView.defensePlanCell:SetState(isAutoCompleted and "Completed" or "UnSelected")
self:_RefreshDefenseState()
local settlementData = GameInstance.player.settlementSystem:GetUnlockSettlementData(self.m_settlementId)
local isDuringBuff = settlementData and DateTimeUtils.GetCurrentTimestampBySeconds() < settlementData.tdGainEffectExpirationTs
if isDuringBuff then
self.view.cautionNode.countDown:InitCountDownText(settlementData.tdGainEffectExpirationTs, function()
self:_RefreshDefenseState()
end, UIUtils.getLeftTimeToSecond)
end
end
MapMarkDetailSettlementDefenseTerminalCtrl._RefreshDefenseState = HL.Method() << function(self)
local defenseState = GameInstance.player.towerDefenseSystem:GetSettlementDefenseState(self.m_settlementId)
self.view.cautionNode.stateController:SetState(defenseState:ToString())
end
HL.Commit(MapMarkDetailSettlementDefenseTerminalCtrl)