Second commit
This commit is contained in:
commit
36840f3ad4
999 files changed
+61364
No files matched your search
@@ -0,0 +1,96 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user