summaryrefslogtreecommitdiff
path: root/scripts/input/InspectInputHandler.cs
diff options
context:
space:
mode:
authorMatheus <matheus.guedes.mg.m@gmail.com>2025-09-02 12:50:09 -0300
committerMatheus <matheus.guedes.mg.m@gmail.com>2025-09-02 12:50:09 -0300
commit6842ccfd372601db6b5d3f678ab5ebf03ad2b206 (patch)
tree572c89e5d266087f18c763bec3085dca3f29bdb6 /scripts/input/InspectInputHandler.cs
parent4be033a60846cbdd290da27be44f270eba5a964d (diff)
Adicionado entidade Inspetor.
Diffstat (limited to 'scripts/input/InspectInputHandler.cs')
-rw-r--r--scripts/input/InspectInputHandler.cs59
1 files changed, 59 insertions, 0 deletions
diff --git a/scripts/input/InspectInputHandler.cs b/scripts/input/InspectInputHandler.cs
new file mode 100644
index 0000000..60c10e4
--- /dev/null
+++ b/scripts/input/InspectInputHandler.cs
@@ -0,0 +1,59 @@
+using Godot;
+
+/// <summary>
+/// TODO: Esta solução é nojenta e precisa ser retrabalhada.
+/// </summary>
+public partial class InspectInputHandler : 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},
+ };
+ /// <summary>
+ /// Preciso disso
+ /// </summary>
+ [Export]
+ private Map map;
+
+ private Inspector inspector;
+
+ public override void Enter() {
+ inspector = new(map.Map_Data.Player.GridPosition)
+ {
+ ZIndex = 4
+ };
+ // Copiamos a câmera do jogador com todas as suas configurações
+ Camera2D camera = (Camera2D) map.Map_Data.Player.GetNode<Camera2D>("Camera2D").Duplicate();
+ inspector.AddChild(camera);
+
+ map.AddChild(inspector);
+ camera.Enabled = true;
+ camera.MakeCurrent();
+ }
+
+ public override void Exit() {
+ inspector.QueueFree();
+ }
+ public override Action GetAction(Player player)
+ {
+ Action action = null;
+ foreach (var direction in directions) {
+ if (Input.IsActionJustPressed(direction.Key)) {
+ inspector.Walk(direction.Value);
+ }
+ }
+
+ if (Input.IsActionJustPressed("quit")) {
+ GetParent<InputHandler>().SetInputHandler(InputHandlers.MainGame);
+ }
+
+ return action;
+ }
+} \ No newline at end of file