Files
Hasebe/Assets/Code/D/Player/PlayerControlsProvider.cs
2026-09-21 12:15:57 +03:00

96 lines
4.2 KiB
C#

using Code.Game.Gameplay.Player;
using Code.Infrastructure.Camera;
using Code.Infrastructure.Input;
using Reflex.Attributes;
using UnityEngine;
using UnityEngine.InputSystem;
namespace Code.Game.Cleaning.Player
{
public class PlayerControlsProvider : MonoBehaviour
{
[SerializeField] private PlayerMovementController playerMovementController;
private IInputService _inputService;
private Vector2 _movementInput;
private bool _jumpDown;
private bool _crouchDown;
private bool _walkOn;
private Transform _cameraTransform;
[Inject]
private void Construct(IInputService inputService, CameraStateMachine cameraStateMachine)
{
_cameraTransform = cameraStateMachine.Camera.transform;
_inputService = inputService;
// _inputService.BindActionPerformed((int)ActionMappings.Cleaning, (int)CleaningActions.Movement,
// MovementPerformed);
// _inputService.BindActionCancelled((int)ActionMappings.Cleaning, (int)CleaningActions.Movement,
// MovementCancelled);
//
// _inputService.BindActionPerformed((int)ActionMappings.Cleaning,
// (int)CleaningActions.Jump, JumpPerformed);
// _inputService.BindActionCancelled((int)ActionMappings.Cleaning,
// (int)CleaningActions.Jump, JumpCancelled);
//
// _inputService.BindActionPerformed((int)ActionMappings.Cleaning,
// (int)CleaningActions.Walk, WalkPerformed);
//
// _inputService.BindActionPerformed((int)ActionMappings.Cleaning,
// (int)CleaningActions.Crouch, CrouchPerformed);
// _inputService.BindActionCancelled((int)ActionMappings.Cleaning,
// (int)CleaningActions.Crouch, CrouchCancelled);
}
private void CrouchPerformed(InputAction.CallbackContext obj) => _crouchDown = true;
private void CrouchCancelled(InputAction.CallbackContext obj) => _crouchDown = false;
private void WalkPerformed(InputAction.CallbackContext obj) => _walkOn = !_walkOn;
private void JumpCancelled(InputAction.CallbackContext obj) => _jumpDown = false;
private void JumpPerformed(InputAction.CallbackContext obj) => _jumpDown = true;
private void MovementCancelled(InputAction.CallbackContext obj) => _movementInput = Vector2.zero;
private void MovementPerformed(InputAction.CallbackContext obj) => _movementInput = obj.ReadValue<Vector2>();
private void Update()
{
if (!_cameraTransform) return;
var inputs = new PlayerCharacterInputs()
{
MoveAxisForward = _movementInput.y,
MoveAxisRight = _movementInput.x,
CameraRotation = _cameraTransform.rotation,
JumpDown = _jumpDown,
CrouchDown = _crouchDown,
CrouchUp = !_crouchDown,
WalkOn = _walkOn
};
playerMovementController.SetInputs(ref inputs);
}
private void OnDestroy()
{
// _inputService.UnbindActionPerformed((int)ActionMappings.Cleaning, (int)CleaningActions.Movement,
// MovementPerformed);
// _inputService.UnbindActionCancelled((int)ActionMappings.Cleaning, (int)CleaningActions.Movement,
// MovementCancelled);
//
// _inputService.UnbindActionPerformed((int)ActionMappings.Cleaning,
// (int)CleaningActions.Jump, JumpPerformed);
// _inputService.UnbindActionCancelled((int)ActionMappings.Cleaning,
// (int)CleaningActions.Jump, JumpCancelled);
//
// _inputService.UnbindActionPerformed((int)ActionMappings.Cleaning,
// (int)CleaningActions.Walk, WalkPerformed);
//
// _inputService.UnbindActionPerformed((int)ActionMappings.Cleaning,
// (int)CleaningActions.Crouch, CrouchPerformed);
// _inputService.UnbindActionCancelled((int)ActionMappings.Cleaning,
// (int)CleaningActions.Crouch, CrouchCancelled);
}
}
}