summaryrefslogtreecommitdiff
path: root/scripts/InputHandling/InspectInputHandler.cs
diff options
context:
space:
mode:
authorMatheus <matheus.guedes.mg.m@gmail.com>2025-09-09 19:09:34 -0300
committerMatheus <matheus.guedes.mg.m@gmail.com>2025-09-09 19:09:34 -0300
commitc6bbb834f7758027c0df338f1520f34fad3befea (patch)
tree1818cd23c24be16fbe19b16dd0a510874d440d83 /scripts/InputHandling/InspectInputHandler.cs
parentf1b51bed52ffbd90b5b7cc8dcfc6f0484bbbeb3c (diff)
Organização
Diffstat (limited to 'scripts/InputHandling/InspectInputHandler.cs')
-rw-r--r--scripts/InputHandling/InspectInputHandler.cs70
1 files changed, 70 insertions, 0 deletions
diff --git a/scripts/InputHandling/InspectInputHandler.cs b/scripts/InputHandling/InspectInputHandler.cs
new file mode 100644
index 0000000..90734f9
--- /dev/null
+++ b/scripts/InputHandling/InspectInputHandler.cs
@@ -0,0 +1,70 @@
+using Godot;
+using TheLegendOfGustav.Entities.Actions;
+using TheLegendOfGustav.Entities.Actors;
+using TheLegendOfGustav.Utils;
+
+namespace TheLegendOfGustav.InputHandling;
+
+/// <summary>
+/// TODO: Esta solução é nojenta e precisa ser retrabalhada.
+/// </summary>
+public partial class InspectInputHandler : BaseInputHandler
+{
+ private static readonly PackedScene InspectorScene = GD.Load<PackedScene>("res://scenes/Inspector.tscn");
+
+ private static 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 Map { get; set; }
+
+ private Inspector Inspector { get; set; }
+
+ public override void Enter()
+ {
+ SignalBus.Instance.EmitSignal(SignalBus.SignalName.EnterInspectionMode);
+ Inspector = InspectorScene.Instantiate<Inspector>();
+
+ Inspector.GridPosition = Map.MapData.Player.GridPosition;
+
+ Map.AddChild(Inspector);
+ }
+
+ public override void Exit()
+ {
+ Inspector.QueueFree();
+
+ SignalBus.Instance.EmitSignal(SignalBus.SignalName.ExitInspectionMode);
+ }
+
+ 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