From c6bbb834f7758027c0df338f1520f34fad3befea Mon Sep 17 00:00:00 2001 From: Matheus Date: Tue, 9 Sep 2025 19:09:34 -0300 Subject: Organização MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/InputHandling/InventoryInputHandler.cs | 75 ++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 scripts/InputHandling/InventoryInputHandler.cs (limited to 'scripts/InputHandling/InventoryInputHandler.cs') diff --git a/scripts/InputHandling/InventoryInputHandler.cs b/scripts/InputHandling/InventoryInputHandler.cs new file mode 100644 index 0000000..390e545 --- /dev/null +++ b/scripts/InputHandling/InventoryInputHandler.cs @@ -0,0 +1,75 @@ +using Godot; +using TheLegendOfGustav.GUI; +using TheLegendOfGustav.Entities.Actors; +using TheLegendOfGustav.Entities.Items; +using TheLegendOfGustav.Entities.Actions; + +namespace TheLegendOfGustav.InputHandling; + +public partial class InventoryInputHandler : BaseInputHandler +{ + private static readonly PackedScene inventoryScene = GD.Load("res://scenes/GUI/invetory_menu.tscn"); + + + [Export] + private Map.Map Map { get; set; } + + private InventoryMenu InventoryMenu { get; set; } + private ConsumableItem ActivationItem { get; set; } = null; + private ConsumableItem DropItem { get; set; } = null; + + public override void Enter() + { + InventoryMenu = inventoryScene.Instantiate(); + Map.MapData.Player.AddChild(InventoryMenu); + InventoryMenu.Initialize(Map.MapData.Player.Inventory); + InventoryMenu.ItemSelected += OnItemActivate; + InventoryMenu.ItemDrop += OnItemDrop; + } + + public override void Exit() + { + ActivationItem = null; + DropItem = null; + InventoryMenu.QueueFree(); + } + + public override Action GetAction(Player player) + { + Action action = null; + + if (ActivationItem != null) + { + action = new ItemAction(player, ActivationItem); + Close(); + } + + if (DropItem != null) + { + action = new DropAction(player, DropItem); + Close(); + } + + if (Input.IsActionJustPressed("quit")) + { + Close(); + } + + return action; + } + + private void Close() + { + GetParent().SetInputHandler(InputHandlers.MainGame); + } + + private void OnItemActivate(ConsumableItem item) + { + ActivationItem = item; + } + + private void OnItemDrop(ConsumableItem item) + { + DropItem = item; + } +} \ No newline at end of file -- cgit v1.2.3