CapersProject/Assets/02.Scripts/Character/Player/Combat/CombatInput.cs
2024-06-04 03:26:03 +09:00

142 lines
4.4 KiB
C#

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<Vector2> OnMoveInputReceived;
public event Action OnDashInputReceived;
public event Action<bool> OnAttackInputReceived;
public event Action OnActivateMainSkillInputReceived;
#endregion
// Initialize methods
#region Initialize methods
public void InitializeComponents(PlayerInput playerInput)
{
_playerInput = playerInput;
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<Vector2>();
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
}
}