summaryrefslogtreecommitdiff
path: root/scripts/input
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/input')
-rw-r--r--scripts/input/InputHandler.cs4
-rw-r--r--scripts/input/MainGameInputHandler.cs4
-rw-r--r--scripts/input/PickupInputHandler.cs41
-rw-r--r--scripts/input/PickupInputHandler.cs.uid1
4 files changed, 49 insertions, 1 deletions
diff --git a/scripts/input/InputHandler.cs b/scripts/input/InputHandler.cs
index 4f5b4e1..7ee2be1 100644
--- a/scripts/input/InputHandler.cs
+++ b/scripts/input/InputHandler.cs
@@ -4,7 +4,8 @@ public enum InputHandlers
{
MainGame,
GameOver,
- Inspect
+ Inspect,
+ Pickup
}
/// <summary>
@@ -27,6 +28,7 @@ public partial class InputHandler : Node
// Controles para quando o jogador está morto.
inputHandlers.Add(InputHandlers.GameOver, GetNode<GameOverInputHandler>("GameOverInputHandler"));
inputHandlers.Add(InputHandlers.Inspect, GetNode<InspectInputHandler>("InspectInputHandler"));
+ inputHandlers.Add(InputHandlers.Pickup, GetNode<PickupInputHandler>("PickupInputHandler"));
SetInputHandler(startingInputHandler);
}
diff --git a/scripts/input/MainGameInputHandler.cs b/scripts/input/MainGameInputHandler.cs
index c7bf26a..6fb6aac 100644
--- a/scripts/input/MainGameInputHandler.cs
+++ b/scripts/input/MainGameInputHandler.cs
@@ -25,6 +25,10 @@ public partial class MainGameInputHandler : BaseInputHandler {
}
}
+ if (Input.IsActionJustPressed("pick-item")) {
+ GetParent<InputHandler>().SetInputHandler(InputHandlers.Pickup);
+ }
+
if (Input.IsActionJustPressed("inspect")) {
GetParent<InputHandler>().SetInputHandler(InputHandlers.Inspect);
}
diff --git a/scripts/input/PickupInputHandler.cs b/scripts/input/PickupInputHandler.cs
new file mode 100644
index 0000000..8f4f9b2
--- /dev/null
+++ b/scripts/input/PickupInputHandler.cs
@@ -0,0 +1,41 @@
+using Godot;
+
+/// <summary>
+/// Esquema de controles para pegar um item.
+/// </summary>
+public partial class PickupInputHandler : BaseInputHandler {
+ private readonly Godot.Collections.Dictionary<string, Vector2I> directions = new()
+ {
+ {"walk-up", Vector2I.Up},
+ {"walk-down", Vector2I.Down},
+ {"walk-left", Vector2I.Left},
+ {"walk-right", Vector2I.Right},
+ {"walk-up-right", Vector2I.Up + Vector2I.Right},
+ {"walk-up-left", Vector2I.Up + Vector2I.Left},
+ {"walk-down-right", Vector2I.Down + Vector2I.Right},
+ {"walk-down-left", Vector2I.Down + Vector2I.Left},
+ {"skip-turn", Vector2I.Zero}
+ };
+ public override Action GetAction(Player player) {
+ Action action = null;
+
+ if (player.IsAlive) {
+ foreach (var direction in directions) {
+ if (Input.IsActionJustPressed(direction.Key)) {
+ action = new PickupAction(player, direction.Value);
+ Quit();
+ }
+ }
+
+ if (Input.IsActionJustPressed("quit")) {
+ Quit();
+ }
+ }
+
+ return action;
+ }
+
+ private void Quit() {
+ GetParent<InputHandler>().SetInputHandler(InputHandlers.MainGame);
+ }
+}
diff --git a/scripts/input/PickupInputHandler.cs.uid b/scripts/input/PickupInputHandler.cs.uid
new file mode 100644
index 0000000..139dd25
--- /dev/null
+++ b/scripts/input/PickupInputHandler.cs.uid
@@ -0,0 +1 @@
+uid://dspqgdxg5jji0