using System; using BlueWater.Uis; using UnityEngine; using UnityEngine.InputSystem; namespace BlueWater.Players.Combat { public class CombatInput : MonoBehaviour { // variables #region variables // Components private PlayerInput _playerInput; // Events public event Action OnMoveInputReceived; public event Action OnDashInputReceived; public event Action OnAttackInputReceived; public event Action OnActivateMainSkillInputReceived; #endregion // Initialize methods #region Initialize methods public void InitializeComponents(PlayerInput playerInput) { _playerInput = playerInput; _playerInput.enabled = true; PlayerInputKeyManager.Instance.SetCurrentPlayerInput(_playerInput); PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.Combat); } #endregion // Player input methods #region Player input methods public void OnMove(InputAction.CallbackContext context) { var movementInput = context.ReadValue(); OnMoveInputReceived?.Invoke(movementInput); } public void OnDash(InputAction.CallbackContext context) { if (context.performed) { OnDashInputReceived?.Invoke(); } } public void OnAttack(InputAction.CallbackContext context) { if (context.performed) { var device = context.control.device; bool usedMouse; switch (device) { case Keyboard: usedMouse = false; break; case Mouse: usedMouse = true; break; default: return; } OnAttackInputReceived?.Invoke(usedMouse); } } public void OnActivateMainSkill(InputAction.CallbackContext context) { if (context.performed) { OnActivateMainSkillInputReceived?.Invoke(); } } public void OnOpenItemInventory(InputAction.CallbackContext context) { if (context.performed) { PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.CombatUi); CombatUiManager.Instance.CombatItemInventoryUi.Open(); } } public void OnCloseItemInventory(InputAction.CallbackContext context) { if (context.performed) { if (!CombatUiManager.Instance.CombatItemInventoryUi.gameObject.activeSelf) return; CombatUiManager.Instance.CombatItemInventoryUi.Close(); PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.Combat); } } public void OnOpenMenu(InputAction.CallbackContext context) { if (context.performed) { CombatUiManager.Instance.CombatMenuPopupUi.Open(); PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.CombatUi); } } public void OnCancel(InputAction.CallbackContext context) { if (context.performed) { CombatUiManager.Instance.CloseLastPopup(); if (!CombatUiManager.Instance.IsPopupListEmpty()) return; PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.Combat); } } public void OnInteractionUi(InputAction.CallbackContext context) { if (context.performed) { if (CombatUiManager.Instance.CombatTutorialUi.CurrentTutorialState == TutorialState.First) { CombatUiManager.Instance.CombatTutorialUi.SecondFirstTutorialUi(); } else if (CombatUiManager.Instance.CombatTutorialUi.CurrentTutorialState == TutorialState.Second) { CombatUiManager.Instance.CombatTutorialUi.EndTutorialUi(); } } } #endregion } }