2024-08-05 11:08:28 +00:00
|
|
|
using Godot;
|
|
|
|
|
2024-08-07 15:01:57 +00:00
|
|
|
namespace AceField.Scripts.Logic;
|
2024-08-05 11:08:28 +00:00
|
|
|
|
|
|
|
public partial class PlayerInput : MultiplayerSynchronizer
|
|
|
|
{
|
2024-08-07 15:01:57 +00:00
|
|
|
[Export] public bool IsDashing;
|
2024-08-05 11:08:28 +00:00
|
|
|
|
2024-08-07 15:01:57 +00:00
|
|
|
[Export] public Vector2 MovementDirection;
|
2024-08-05 15:54:22 +00:00
|
|
|
|
2024-08-07 15:01:57 +00:00
|
|
|
private bool IsCurrentPlayer => GetMultiplayerAuthority() == Multiplayer.GetUniqueId();
|
2024-08-05 11:08:28 +00:00
|
|
|
|
2024-08-07 15:01:57 +00:00
|
|
|
public override void _Ready()
|
|
|
|
{
|
|
|
|
if (IsCurrentPlayer) return;
|
|
|
|
SetProcess(false);
|
|
|
|
SetPhysicsProcess(false);
|
|
|
|
}
|
2024-08-05 15:54:22 +00:00
|
|
|
|
2024-08-07 15:01:57 +00:00
|
|
|
[Rpc(CallLocal = true)]
|
|
|
|
private void Dash()
|
|
|
|
=> IsDashing = true;
|
2024-08-05 11:08:28 +00:00
|
|
|
|
2024-08-07 15:01:57 +00:00
|
|
|
public override void _Process(double delta)
|
|
|
|
{
|
|
|
|
MovementDirection = Input.GetVector("move_left", "move_right", "move_up", "move_down");
|
2024-08-05 15:54:22 +00:00
|
|
|
|
2024-08-07 15:01:57 +00:00
|
|
|
if (Input.IsActionJustPressed("move_dash"))
|
|
|
|
Rpc(nameof(Dash));
|
|
|
|
}
|
2024-08-05 11:08:28 +00:00
|
|
|
|
2024-08-07 15:01:57 +00:00
|
|
|
public override void _Input(InputEvent evt)
|
|
|
|
{
|
|
|
|
if (!IsCurrentPlayer) return;
|
|
|
|
}
|
|
|
|
}
|