diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_HostInputFilter.cs b/Assets/PerfectWorld/Scripts/Managers/EC_HostInputFilter.cs index bf231e0f26..f94a64a928 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_HostInputFilter.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_HostInputFilter.cs @@ -3,7 +3,7 @@ using BrewMonster.Network; using BrewMonster.Scripts; using CSNetwork.GPDataType; using PerfectWorld.Scripts; -using System; +using CSNetwork; using UnityEngine; namespace BrewMonster @@ -22,6 +22,10 @@ namespace BrewMonster { OnClickBtnJump(); } + if (Input.GetKeyDown(KeyCode.Escape)) + { + OnClickBtnEscape(); + } } /// @@ -508,5 +512,14 @@ namespace BrewMonster // For now, return true if it's a mine / For now, return true if it's a mine return true; } + + public void OnClickBtnEscape() + { + // if( bInAutoMode ) break; + // if (bFirstPress) + // pGameRun->PostMessage(MSG_HST_PRESSCANCEL, MAN_PLAYER, 0); + // break; + EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_PRESSCANCEL, MANAGER_INDEX.MAN_PLAYER, 0); + } } } diff --git a/Assets/PerfectWorld/Scripts/UI/HUDMainGamePlay.cs b/Assets/PerfectWorld/Scripts/UI/HUDMainGamePlay.cs new file mode 100644 index 0000000000..3f1ae96aba --- /dev/null +++ b/Assets/PerfectWorld/Scripts/UI/HUDMainGamePlay.cs @@ -0,0 +1,34 @@ +using System; +using BrewMonster.Network; +using UnityEngine; +using UnityEngine.UI; + +namespace BrewMonster +{ + public class HUDMainGamePlay : MonoBehaviour + { + #region Fields + + [SerializeField]private Button _escapeBtn; + + #endregion + + private void OnEnable() + { + _escapeBtn.onClick.AddListener(OnEscapeClicked); + } + + private void OnDisable() + { + _escapeBtn.onClick.RemoveListener(OnEscapeClicked); + } + + private void OnEscapeClicked() + { + if(EC_Game.GetGameRun()?.GetHostPlayer() != null) + { + EC_Game.GetGameRun()?.GetHostPlayer().OnClickBtnEscape(); + } + } + } +} diff --git a/Assets/PerfectWorld/Scripts/UI/HUDMainGamePlay.cs.meta b/Assets/PerfectWorld/Scripts/UI/HUDMainGamePlay.cs.meta new file mode 100644 index 0000000000..581a0439ec --- /dev/null +++ b/Assets/PerfectWorld/Scripts/UI/HUDMainGamePlay.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 08df3fc4159b2724096bd8bba83599bc \ No newline at end of file diff --git a/Assets/Scenes/a61.unity b/Assets/Scenes/a61.unity index f92af2af40..3f0745e670 100644 --- a/Assets/Scenes/a61.unity +++ b/Assets/Scenes/a61.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e48c9be3ea9d07ee5f5073f5d0759c66181647b3d57a2d2358cd50ae5502408 -size 200782987 +oid sha256:2c906b1f7f45bf51342cfffebe0fa5361bb08df3fe72e5aaebbc194075f64f20 +size 200790852 diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs index 5ea1c479d6..0520eab4f4 100644 --- a/Assets/Scripts/CECHostPlayer.cs +++ b/Assets/Scripts/CECHostPlayer.cs @@ -500,6 +500,7 @@ namespace BrewMonster case int value when value == EC_MsgDef.MSG_PM_PLAYERGATHER: OnMsgPlayerGather(Msg); break; case int value when value == EC_MsgDef.MSG_HST_COOLTIMEDATA: OnMsgHstCoolTimeData(Msg); break; case int value when value == EC_MsgDef.MSG_HST_SETCOOLTIME: OnMsgHstSetCoolTime(Msg); break; + case int value when value == EC_MsgDef.MSG_HST_PRESSCANCEL: OnMsgHstPressCancel(Msg); break; } @@ -6110,5 +6111,99 @@ namespace BrewMonster } } } + + private void OnMsgHstPressCancel(ECMSG Msg) + { + CECHPWork pCurWork = null; + pCurWork = m_pWorkMan.GetRunningWork(Host_work_ID.WORK_TRACEOBJECT); + if (pCurWork is CECHPWorkTrace workTrace) + { + workTrace.PressCancel(); + return; + } + + pCurWork = m_pWorkMan.GetRunningWork(Host_work_ID.WORK_HACKOBJECT); + if (pCurWork != null) + { + UnityGameSession.c2s_CmdCancelAction(); + return; + } + + pCurWork = m_pWorkMan.GetRunningWork(Host_work_ID.WORK_USEITEM); + if (pCurWork != null) + { + UnityGameSession.c2s_CmdCancelAction(); + return; + } + + pCurWork = m_pWorkMan.GetRunningWork(Host_work_ID.WORK_SPELLOBJECT); + if (pCurWork != null) + { + int iState = ((CECHPWorkSpell)pCurWork).GetState(); + if (iState == CECHPWorkSpell.Spell_magic_state.ST_INCANT) + { + UnityGameSession.c2s_CmdCancelAction(); + return; + } + } + + pCurWork = m_pWorkMan.GetRunningWork(Host_work_ID.WORK_PICKUP); + if (pCurWork != null) + { + if (((EC_HPWorkPick)pCurWork).IsGather()) + { + UnityGameSession.c2s_CmdCancelAction(); + return; + } + } + //todo: handle this part + // pCurWork = m_pWorkMan.GetRunningWork(Host_work_ID.WORK_CONCENTRATE); + // if (pCurWork !=null){ + // if (IsOperatingPet()){ + // UnityGameSession.c2s_CmdCancelAction(); + // return; + // } + // } + // pCurWork = m_pWorkMan.GetRunningWork(Host_work_ID.WORK_CONGREGATE); + // if (pCurWork !=null){ + // if (IsCongregating()){ + // UnityGameSession.c2s_CmdCancelAction(); + // return; + // } + // } + + if (m_bUsingTrashBox || DoingSessionPose()) + { + UnityGameSession.c2s_CmdCancelAction(); + return; + } + + // Cancel current selection + if (m_idSelTarget >0) + { + SelectTarget(0); + return; + } + + // Some work have lower priority + pCurWork = m_pWorkMan.GetRunningWork(Host_work_ID.WORK_MOVETOPOS); + if (pCurWork != null) + { + ((CECHPWorkMove)pCurWork).PressCancel(); + return; + } + } + + // Is doing session pose ? + private bool DoingSessionPose() + { + var pCurWork = m_pWorkMan.GetRunningWork(Host_work_ID.WORK_STAND); + if (pCurWork !=null){ + if (((CECHPWorkStand)pCurWork).DoingSessionPose()){ + return true; + } + } + return false; + } } }