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

122 lines
2.7 KiB
Lua

local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
local PANEL_ID = PanelId.MissionHudMini
local ANIMATION_IN_STRETCH = "missionhudmini_in_stretch"
local ANIMATION_OUT_EXTEND = "missionhudmini_out_extend"
MissionHudMiniCtrl = HL.Class('MissionHudMiniCtrl', uiCtrl.UICtrl)
MissionHudMiniCtrl.s_messages = HL.StaticField(HL.Table) << {
[MessageConst.ON_TRACK_MISSION_CHANGE] = '_OnTrackMissionChange',
}
MissionHudMiniCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
self.view.closeBtn.onClick:AddListener(function()
self:_ShrinkPanel()
end)
self:_OnTrackMissionChange()
self.view.openMissionUIBtn.onClick:AddListener(function()
local trackMission = GameInstance.player.mission.trackMissionId
if trackMission ~= nil and trackMission ~= "" then
PhaseManager:OpenPhase(PhaseId.Mission, {autoSelect = trackMission, useBlackMask = true})
else
PhaseManager:OpenPhase(PhaseId.Mission, {useBlackMask = true})
end
end)
if arg ~= nil and arg.needAnimationIn then
local clipName = ANIMATION_IN_STRETCH
self.view.animationWrapper:PlayWithTween(clipName)
end
end
MissionHudMiniCtrl._OnTrackMissionChange = HL.Method() << function(self)
local trackMission = GameInstance.player.mission.trackMissionId
local trackingValid = (trackMission ~= nil and trackMission ~= "")
self.view.miniPanel.gameObject:SetActive(trackingValid)
end
MissionHudMiniCtrl._ShrinkPanel = HL.Method() << function(self)
self.view.animationWrapper:SetAnimationOutClip(ANIMATION_OUT_EXTEND)
self.view.animationWrapper:PlayOutAnimation(function()
UIManager:Close(PANEL_ID)
UIManager:ShowWithKey(PanelId.MissionHud, "MiniPanel")
local open, missionHud = UIManager:IsOpen(PanelId.MissionHud)
if not open or missionHud == nil then
return
end
missionHud:SkipMissionBtnAnimIn()
end)
end
MissionHudMiniCtrl.OnFacTopViewChanged = HL.StaticMethod(HL.Boolean) << function(uselessParam)
if not DeviceInfo.isMobile then
return
end
local isTopView = LuaSystemManager.factory.inTopView
if not isTopView then
local open, self = UIManager:IsOpen(PanelId.MissionHudMini)
if not open or self == nil then
return
end
self:_ShrinkPanel()
return
else
local open, missionHud = UIManager:IsOpen(PanelId.MissionHud)
if not open or missionHud == nil then
return
end
if false then
return
end
UIManager:AutoOpen(PANEL_ID)
UIManager:HideWithKey(PanelId.MissionHud, "MiniPanel")
end
end
HL.Commit(MissionHudMiniCtrl)