From 4b2afd3e2144e42bfa7f11a870584b9255052cf7 Mon Sep 17 00:00:00 2001 From: Matheus Date: Thu, 4 Sep 2025 21:08:57 -0300 Subject: INVENTÁRIO PEGÁVEL AAAAAAAAAAAAAAAAAAAAAAAAAAAA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/map/Map.cs | 6 ++++++ scripts/map/MapData.cs | 45 +++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 2 deletions(-) (limited to 'scripts/map') diff --git a/scripts/map/Map.cs b/scripts/map/Map.cs index f4f0783..148bda6 100644 --- a/scripts/map/Map.cs +++ b/scripts/map/Map.cs @@ -62,6 +62,8 @@ public partial class Map : Node2D { Map_Data = generator.GenerateDungeon(player); + Map_Data.EntityPlaced += OnEntityPlaced; + PlaceTiles(); PlaceEntities(); } @@ -77,4 +79,8 @@ public partial class Map : Node2D entity.Visible = Map_Data.GetTile(entity.GridPosition).IsInView; } } + + private void OnEntityPlaced(Entity entity) { + entitiesNode.AddChild(entity); + } } diff --git a/scripts/map/MapData.cs b/scripts/map/MapData.cs index 08a144d..f3e193e 100644 --- a/scripts/map/MapData.cs +++ b/scripts/map/MapData.cs @@ -10,9 +10,12 @@ public partial class MapData : RefCounted public static readonly TileDefinition wallDefinition = GD.Load("res://assets/definitions/tiles/wall.tres"); public static readonly TileDefinition floorDefinition = GD.Load("res://assets/definitions/tiles/floor.tres"); + [Signal] + public delegate void EntityPlacedEventHandler(Entity entity); + /// - /// Largura do mapa. - /// + /// Largura do mapa. + /// public int Width { get; private set; } /// /// Altura do mapa. @@ -33,6 +36,18 @@ public partial class MapData : RefCounted /// public Godot.Collections.Array Entities { get; private set; } = []; + public Godot.Collections.Array Items { + get { + Godot.Collections.Array list = []; + foreach (Entity entity in Entities) { + if (entity is ConsumableItem item) { + list.Add(item); + } + } + return list; + } + } + private AStarGrid2D pathfinder; /// /// Objeto do Godot que utiliza do algoritmo A* para calcular @@ -196,6 +211,32 @@ public partial class MapData : RefCounted } return null; } + + /// + /// Obtém o primeiro item na posição especificada. + /// + /// Posição + /// O primeiro item na posição, nulo se não houver. + public ConsumableItem GetFirstItemAtPosition(Vector2I pos) { + foreach (ConsumableItem item in Items) { + if (item.GridPosition == pos) { + return item; + } + } + + return null; + } + + /// + /// Remove uma entidade do mapa sem dar free. + /// + /// A entidade para remover + public void RemoveEntity(Entity entity) { + // Eu removo a entidade do nó de entidades. + entity.GetParent().RemoveChild(entity); + // Eu removo a entidade da lista de entidades do mapa. + Entities.Remove(entity); + } /// /// Obtém todas as entidades na posição especificada. -- cgit v1.2.3