using Godot; namespace CodingLand.Scripts.Logic; public partial class PlayerInput : MultiplayerSynchronizer { [Export] public bool IsDashing; [Export] public Vector2 BuildingAt; [Export] public Vector2 MovementDirection; private bool IsCurrentPlayer => GetMultiplayerAuthority() == Multiplayer.GetUniqueId(); public override void _Ready() { if (IsCurrentPlayer) return; SetProcess(false); SetPhysicsProcess(false); } [Rpc(CallLocal = true)] private void Dash() => IsDashing = true; [Rpc(CallLocal = true)] private void Build(Vector2 pos) => BuildingAt = pos; public override void _Process(double delta) { MovementDirection = Input.GetVector("move_left", "move_right", "move_up", "move_down"); if (Input.IsActionJustPressed("move_dash")) Rpc(nameof(Dash)); } public override void _Input(InputEvent evt) { if (!IsCurrentPlayer) return; if (evt is InputEventMouseButton { Pressed: true }) Rpc(nameof(Build), GetViewport().GetMousePosition()); } }