From 3c347adb0f8a5f609ea6061517cbf7de1ba6cbc4 Mon Sep 17 00:00:00 2001 From: NguyenVanDat Date: Mon, 1 Dec 2025 17:20:36 +0700 Subject: [PATCH] fix hpwork move --- .../Scripts/Managers/EC_HPWork.cs | 49 ++++++++++++++++++- .../Scripts/Managers/EC_HPWorkMove.cs | 2 +- Assets/Scripts/CECHostPlayer.cs | 9 ++-- Assets/Scripts/PlayerStateMachine.cs | 2 +- 4 files changed, 54 insertions(+), 8 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_HPWork.cs b/Assets/PerfectWorld/Scripts/Managers/EC_HPWork.cs index ef6842c9b5..c89cfbad92 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_HPWork.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_HPWork.cs @@ -439,7 +439,34 @@ namespace BrewMonster.Scripts public bool DelayWork(int iPriority, CECHPWork pWork) { - return false; + if (pWork == null){ + // ASSERT(false); + return false; + } + if (!ValidatePriority(iPriority)){ + // ASSERT(false); + return false; + } + if (!IsAnyWorkRunning()){ + return false; + } + if (CanRunSimultaneouslyWithCurrentWork(iPriority, pWork)){ + return false; + } + bool bDelay = false; + if (m_pHost.IsMeleeing()){ + UnityGameSession.c2s_CmdCancelAction(); + bDelay = true; + }else if (IsPickingUp() || IsSpellingMagic()){ + bDelay = true; + } + if (bDelay){ + ClearDelayedWork(); + m_Delayed.iPriority = iPriority; + m_Delayed.pWork = pWork; + // LOG_DEBUG_INFO(AString().Format("CECHPWork::%s delayed, priority=%d", pWork->GetWorkName(), iPriority)); + } + return bDelay; } public void StartDelayedWork() { @@ -662,12 +689,30 @@ namespace BrewMonster.Scripts } KillWork(m_iCurPriority, i); } - if (workList == null || workList.Count ==0) + if (workList.Count ==0) { StartAwaitingWorks(); } } } + //todo: use this method + public void FinishAllWork(bool bGotoStand){ + for (int i =0; i < Work_priority.NUM_PRIORITY; ++ i){ + FinishWorkAtPriority(i); + } + ClearDelayedWork(); + if (bGotoStand){ + StartWork_p0(CreateWork(CECHPWork.Host_work_ID.WORK_STAND)); + } + } + bool IsPickingUp() + { + return IsWorkRunning(CECHPWork.Host_work_ID.WORK_PICKUP); + } + bool IsSpellingMagic() + { + return IsWorkRunning(CECHPWork.Host_work_ID.WORK_SPELLOBJECT); + } } public abstract class CECHPWorkPostTickCommand diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs b/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs index 10de1e8797..fc23fd3c27 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs @@ -128,7 +128,7 @@ namespace BrewMonster.Scripts } // Tick routine - public virtual bool Tick(float dwDeltaTime) + public override bool Tick(float dwDeltaTime) { UpdateResetUseAutoPF(); if (m_bSwitchTo2D) diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs index 564335548f..05d407dc02 100644 --- a/Assets/Scripts/CECHostPlayer.cs +++ b/Assets/Scripts/CECHostPlayer.cs @@ -35,7 +35,7 @@ namespace BrewMonster private PlayerStateMachine _playerStateMachine; private PlayerMoveState _moveState; - private PlayerIdleState _idleState; + // private PlayerIdleState _idleState; public CECHostMove m_MoveCtrl; private CECHPWorkMan m_pWorkMan; // Host work manager @@ -135,6 +135,7 @@ namespace BrewMonster public EC_Inventory PackInventory => m_packInventory; public EC_Inventory EquipInventory => m_equipInventory; public EC_Inventory TaskInventory => m_taskInventory; + public bool IsMeleeing() { return m_bMelee; } public EC_Inventory GetInventory(byte byPackage) { @@ -162,7 +163,7 @@ namespace BrewMonster { base.Awake(); _moveState = new PlayerMoveState(this); - _idleState = new PlayerIdleState(this); + // _idleState = new PlayerIdleState(this); _playerStateMachine = new PlayerStateMachine(); m_MoveCtrl = new CECHostMove(this); @@ -238,7 +239,7 @@ namespace BrewMonster mainCam = FindFirstObjectByType(); } - _playerStateMachine.InitState(_idleState); + // _playerStateMachine.InitState(_idleState); // btnJump.onClick.AddListener(HandleJump); // Cache input devices for better performance @@ -438,7 +439,7 @@ namespace BrewMonster private void JoystickRelease(JoystickRealeaseEvent joystickRealeaseEvent) { - _playerStateMachine.ChangeState(_idleState); + // _playerStateMachine.ChangeState(_idleState); } public bool GroundCheck(out RaycastHit hit) diff --git a/Assets/Scripts/PlayerStateMachine.cs b/Assets/Scripts/PlayerStateMachine.cs index 8d7528e566..aa6d7851da 100644 --- a/Assets/Scripts/PlayerStateMachine.cs +++ b/Assets/Scripts/PlayerStateMachine.cs @@ -37,7 +37,7 @@ namespace BrewMonster.Scripts.Player } public void UpdateState() { - _state.Update(); + // _state.Update(); } }