revival/game/Assets/Scripts/Player/PlayerInputHandler.cs

65 lines
1.8 KiB
C#
Raw Normal View History

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerInputHandler : MonoBehaviour
{
//to get the artifact id you are near to
public static int id;
[SerializeField]
private PlayerInputSettings _inputSettings;
public struct PlayerInputState
{
public BufferedInput Jump;
public BufferedInput Use;
2021-01-27 13:06:17 +01:00
public CameraRelativeInput Move;
public Vector2 Look;
2021-01-27 13:06:17 +01:00
public float MoveRotation;
}
public PlayerInputState InputState => _state;
private PlayerInputState _state;
private void Awake()
{
_state = new PlayerInputState();
_state.Jump = new BufferedInput(_inputSettings.JumpBufferTime);
_state.Use = new BufferedInput(_inputSettings.UseBufferTime);
2021-01-27 13:06:17 +01:00
_state.Move = new CameraRelativeInput();
_state.Look = Vector2.zero;
}
private void FixedUpdate()
{
float deltaTime = Time.fixedDeltaTime;
_state.Jump.Update(deltaTime);
_state.Use.Update(deltaTime);
}
public void SetCameraRotation(float angle)
=> _state.Move.SetAngle(angle);
2021-01-27 13:06:17 +01:00
public void Look(InputAction.CallbackContext context)
=> _state.Look = context.ReadValue<Vector2>();
public void Move(InputAction.CallbackContext context)
=> _state.Move.SetValue(context.ReadValue<Vector2>());
public void Jump(InputAction.CallbackContext context)
=> _state.Jump.Set(context.ReadValue<float>() > 0.5f);
// public void Use( InputAction.CallbackContext context )
// => _state.Use.Set( context.ReadValue<float>() > 0.5f );
public void Use(InputAction.CallbackContext context)
{
//Debug.Log("pressed e");
EventHandler.current.ArtefactPickUp(id);
}
}