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

220 lines
5.6 KiB
Lua

local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
local PANEL_ID = PanelId.GeneralTracker
local SIGNAL_1 = 1
local SIGNAL_2 = 2
local LuaNodeCache = require_ex('Common/Utils/LuaNodeCache')
GeneralTrackerCtrl = HL.Class('GeneralTrackerCtrl', uiCtrl.UICtrl)
GeneralTrackerCtrl.s_messages = HL.StaticField(HL.Table) << {
[MessageConst.ON_TRACK_MISSION_CHANGE] = '_OnTrackMissionChange',
[MessageConst.ON_MISSION_STATE_CHANGE] = '_OnMissionStateChange',
[MessageConst.ON_QUEST_STATE_CHANGE] = '_OnQuestStateChange',
[MessageConst.ON_QUEST_OBJECTIVE_UPDATE] = '_OnQuestObjectiveUpdate',
}
GeneralTrackerCtrl.s_missionShowTime = HL.StaticField(HL.Number) << 0
GeneralTrackerCtrl.s_missionTrackerSignal = HL.StaticField(HL.Number) << 0
GeneralTrackerCtrl.s_onShowSignal = HL.Field(HL.Number) << 0
GeneralTrackerCtrl.OnShowMissionTracker = HL.StaticMethod() << function()
GeneralTrackerCtrl.s_missionTrackerSignal = SIGNAL_1
GeneralTrackerCtrl.s_missionShowTime = 0
end
GeneralTrackerCtrl.m_rootTransform = HL.Field(HL.Userdata)
GeneralTrackerCtrl.m_missionTrackerTickHandler = HL.Field(HL.Any)
GeneralTrackerCtrl.m_commonTrackerData = HL.Field(HL.Table)
GeneralTrackerCtrl.m_commonTrackers = HL.Field(HL.Table)
GeneralTrackerCtrl.m_commonTrackerTickHandler = HL.Field(HL.Number) << -1
GeneralTrackerCtrl.m_commonTrackerNodeCache = HL.Field(LuaNodeCache)
GeneralTrackerCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
self.m_rootTransform = self.view.gameObject:GetComponent(typeof(RectTransform))
GameInstance.player.commonTrackingPoint.ellipseRadiusX = self.view.config.ELLIPSE_X_RADIUS
GameInstance.player.commonTrackingPoint.ellipseRadiusY = self.view.config.ELLIPSE_Y_RADIUS
GameInstance.player.commonTrackingPoint:UpdateRadiusRate()
self.m_commonTrackers = {}
self.m_commonTrackerData = {}
self.m_commonTrackerNodeCache = LuaNodeCache(self.view.commonTrackerNode, self.view.mainRectTransForm)
self.view.missionTrackerComp.ALPHA_IN_FIGHT = self.view.config.ALPHA_IN_FIGHT
self.view.missionTrackerComp.ALPHA_TIME_OUT = self.view.config.ALPHA_TIME_OUT
self.view.missionTrackerComp.MISSION_TRACKER_TIME_OUT_VALUE = self.view.config.MISSION_TRACKER_TIME_OUT_VALUE
self.view.missionTrackerComp.rootTransform = self.m_rootTransform
self.view.missionTrackerComp.missionTrackerGo = self.view.missionTracker.gameObject
self.view.missionTrackerComp.missionTrackerParentTransform = self.view.missionTrackerParent
self.view.commonTrackerUpdate.rootTransform = self.m_rootTransform
self.view.commonTrackerUpdate.templateTrackerGo = self.view.commonTrackerNode.gameObject
self.view.commonTrackerUpdate.trackerParentTransform = self.m_rootTransform
self.view.missionTracker.gameObject:SetActive(false)
self.view.commonTrackerNode.gameObject:SetActive(false)
end
GeneralTrackerCtrl.OnShow = HL.Override() << function(self)
GeneralTrackerCtrl.s_missionShowTime = 0
GeneralTrackerCtrl.s_missionTrackerSignal = SIGNAL_2
self.s_onShowSignal = 1
self:_TickCommonTrackers()
self:_TickMissionTrackers()
self.m_missionTrackerTickHandler = LuaUpdate:Add("TailTick", function()
GameInstance.player.commonTrackingPoint:ClearSameUiPoint()
self:_TickCommonTrackers()
self:_TickMissionTrackers()
end)
end
GeneralTrackerCtrl.OnHide = HL.Override() << function(self)
LuaUpdate:Remove(self.m_missionTrackerTickHandler)
self.m_missionTrackerTickHandler = nil
end
GeneralTrackerCtrl.OnClose = HL.Override() << function(self)
LuaUpdate:Remove(self.m_missionTrackerTickHandler)
self.m_missionTrackerTickHandler = nil
end
GeneralTrackerCtrl._ResetMissionShowTime = HL.StaticMethod() << function()
GeneralTrackerCtrl.s_missionShowTime = 0
end
GeneralTrackerCtrl._OnTrackMissionChange = HL.Method() << function(self)
GeneralTrackerCtrl._ResetMissionShowTime()
end
GeneralTrackerCtrl._OnMissionStateChange = HL.Method(HL.Any) << function(self, arg)
local missionId, missionState = unpack(arg)
GeneralTrackerCtrl._ResetMissionShowTime()
end
GeneralTrackerCtrl._OnQuestStateChange = HL.Method(HL.Any) << function(self, arg)
local questId, questState = unpack(arg)
GeneralTrackerCtrl._ResetMissionShowTime()
end
GeneralTrackerCtrl._OnQuestObjectiveUpdate = HL.Method(HL.Any) << function(self, arg)
local questId = unpack(arg)
GeneralTrackerCtrl._ResetMissionShowTime()
end
GeneralTrackerCtrl._TickMissionTrackers = HL.Method() << function(self)
local missionHudOpen, _ = UIManager:IsOpen(PanelId.MissionHud) or UIManager:IsOpen(PanelId.WeeklyRaidTaskTrackHud)
GeneralTrackerCtrl.s_missionShowTime = GeneralTrackerCtrl.s_missionShowTime + Time.deltaTime
local trackDataChange = self.view.missionTrackerComp:UpdateMissionTrackers(
missionHudOpen,
GeneralTrackerCtrl.s_missionShowTime,
GeneralTrackerCtrl.s_missionTrackerSignal
)
if trackDataChange then
GeneralTrackerCtrl._ResetMissionShowTime()
end
GeneralTrackerCtrl.s_missionTrackerSignal = 0
end
GeneralTrackerCtrl._TickCommonTrackers = HL.Method() << function(self)
self.view.commonTrackerUpdate:UpdateCommonTrackers(true, self.s_onShowSignal)
self.s_onShowSignal = 0
end
GeneralTrackerCtrl.PlayAnimationOutWithCallback = HL.Override(HL.Opt(HL.Function)) << function(self, action)
self.view.commonTrackerUpdate:AllTrackersPlayOutAnimation()
self.view.missionTrackerComp:AllMissionTrackersPlayOutAnimation()
GeneralTrackerCtrl.Super.PlayAnimationOutWithCallback(self, action)
end
HL.Commit(GeneralTrackerCtrl)