BLOODJOE/Assets/Scripts/Managers/PlayerInputRouter.cs

66 lines
2.0 KiB
C#

using System;
using State;
using State.PlayerStateMachine;
using UnityEngine;
using UnityEngine.InputSystem;
namespace Managers
{
[RequireComponent(typeof(PlayerInput))]
public class PlayerInputRouter : MonoBehaviour
{
private PlayerInput _playerInput;
private PlayerStateMachine _playerStateMachine;
private InputActionMap _map;
private void Awake()
{
_playerInput = GetComponent<PlayerInput>();
_playerStateMachine = GetComponent<PlayerStateMachine>();
_map = _playerInput.actions.FindActionMap("Player", throwIfNotFound: true);
}
private void OnEnable()
{
_map["Move"].performed += OnMovePerformed;
_map["Move"].canceled += OnMoveCanceled;
_map["Attack"].performed += OnAttackPerformed;
_map["Jump"].performed += OnJumpPerformed;
_map["Pause"].performed += OnPausePerformed;
}
private void OnDisable()
{
_map["Move"].performed -= OnMovePerformed;
_map["Move"].canceled -= OnMoveCanceled;
_map["Attack"].performed -= OnAttackPerformed;
_map["Jump"].performed -= OnJumpPerformed;
_map["Pause"].performed -= OnPausePerformed;
}
private void OnJumpPerformed(InputAction.CallbackContext obj)
{
_playerStateMachine.Issue(GameState.Command.Jump);
}
private void OnPausePerformed(InputAction.CallbackContext obj)
{
throw new NotImplementedException();
}
private void OnAttackPerformed(InputAction.CallbackContext obj)
{
_playerStateMachine.Issue(GameState.Command.Attack);
}
private void OnMoveCanceled(InputAction.CallbackContext obj)
{
_playerStateMachine.SetMove(Vector2.zero);
}
private void OnMovePerformed(InputAction.CallbackContext obj)
{
_playerStateMachine.SetMove(obj.ReadValue<Vector2>());
}
}
}