From f1b51bed52ffbd90b5b7cc8dcfc6f0484bbbeb3c Mon Sep 17 00:00:00 2001 From: Matheus Date: Mon, 8 Sep 2025 22:10:45 -0300 Subject: inventário acessivel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/input/InputHandler.cs | 4 +- scripts/input/InventoryInputHandler.cs | 65 ++++++++++++++++++++++++++++++ scripts/input/InventoryInputHandler.cs.uid | 1 + scripts/input/MainGameInputHandler.cs | 6 ++- 4 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 scripts/input/InventoryInputHandler.cs create mode 100644 scripts/input/InventoryInputHandler.cs.uid (limited to 'scripts/input') diff --git a/scripts/input/InputHandler.cs b/scripts/input/InputHandler.cs index 7ee2be1..67f4abf 100644 --- a/scripts/input/InputHandler.cs +++ b/scripts/input/InputHandler.cs @@ -5,7 +5,8 @@ public enum InputHandlers MainGame, GameOver, Inspect, - Pickup + Pickup, + Inventory } /// @@ -29,6 +30,7 @@ public partial class InputHandler : Node inputHandlers.Add(InputHandlers.GameOver, GetNode("GameOverInputHandler")); inputHandlers.Add(InputHandlers.Inspect, GetNode("InspectInputHandler")); inputHandlers.Add(InputHandlers.Pickup, GetNode("PickupInputHandler")); + inputHandlers.Add(InputHandlers.Inventory, GetNode("InventoryInputHandler")); SetInputHandler(startingInputHandler); } diff --git a/scripts/input/InventoryInputHandler.cs b/scripts/input/InventoryInputHandler.cs new file mode 100644 index 0000000..98f8576 --- /dev/null +++ b/scripts/input/InventoryInputHandler.cs @@ -0,0 +1,65 @@ +using Godot; + +public partial class InventoryInputHandler : BaseInputHandler +{ + private static readonly PackedScene inventoryScene = GD.Load("res://scenes/GUI/invetory_menu.tscn"); + + private InventoryMenu inventoryMenu; + + ConsumableItem activationItem = null; + ConsumableItem dropItem = null; + + [Export] + private Map map; + + public override void Enter() { + inventoryMenu = inventoryScene.Instantiate(); + map.Map_Data.Player.AddChild(inventoryMenu); + inventoryMenu.Initialize(map.Map_Data.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 ActivateItem() { + + } + + private void OnItemActivate(ConsumableItem item) { + activationItem = item; + } + + private void OnItemDrop(ConsumableItem item) { + dropItem = item; + } +} \ No newline at end of file diff --git a/scripts/input/InventoryInputHandler.cs.uid b/scripts/input/InventoryInputHandler.cs.uid new file mode 100644 index 0000000..b5d0ed9 --- /dev/null +++ b/scripts/input/InventoryInputHandler.cs.uid @@ -0,0 +1 @@ +uid://bjcjktvyrdh10 diff --git a/scripts/input/MainGameInputHandler.cs b/scripts/input/MainGameInputHandler.cs index 6fb6aac..6bda004 100644 --- a/scripts/input/MainGameInputHandler.cs +++ b/scripts/input/MainGameInputHandler.cs @@ -4,7 +4,7 @@ using Godot; /// Esquema de controles principal do jogo. /// public partial class MainGameInputHandler : BaseInputHandler { - private readonly Godot.Collections.Dictionary directions = new() + private static readonly Godot.Collections.Dictionary directions = new() { {"walk-up", Vector2I.Up}, {"walk-down", Vector2I.Down}, @@ -25,6 +25,10 @@ public partial class MainGameInputHandler : BaseInputHandler { } } + if (Input.IsActionJustPressed("open-inventory")) { + GetParent().SetInputHandler(InputHandlers.Inventory); + } + if (Input.IsActionJustPressed("pick-item")) { GetParent().SetInputHandler(InputHandlers.Pickup); } -- cgit v1.2.3