diff options
| author | Matheus <matheus.guedes.mg.m@gmail.com> | 2025-09-04 21:08:57 -0300 |
|---|---|---|
| committer | Matheus <matheus.guedes.mg.m@gmail.com> | 2025-09-04 21:08:57 -0300 |
| commit | 4b2afd3e2144e42bfa7f11a870584b9255052cf7 (patch) | |
| tree | 11bcb45e3c93532d2aeaea69b4387ccda365bc22 /scripts/map/MapData.cs | |
| parent | 1e248d3dd18f7c6bfaf8066c4662facbbb89e8f9 (diff) | |
INVENTÁRIO PEGÁVEL AAAAAAAAAAAAAAAAAAAAAAAAAAAA
Diffstat (limited to 'scripts/map/MapData.cs')
| -rw-r--r-- | scripts/map/MapData.cs | 45 |
1 files changed, 43 insertions, 2 deletions
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<TileDefinition>("res://assets/definitions/tiles/wall.tres"); public static readonly TileDefinition floorDefinition = GD.Load<TileDefinition>("res://assets/definitions/tiles/floor.tres"); + [Signal] + public delegate void EntityPlacedEventHandler(Entity entity); + /// <summary> - /// Largura do mapa. - /// </summary> + /// Largura do mapa. + /// </summary> public int Width { get; private set; } /// <summary> /// Altura do mapa. @@ -33,6 +36,18 @@ public partial class MapData : RefCounted /// </summary> public Godot.Collections.Array<Entity> Entities { get; private set; } = []; + public Godot.Collections.Array<ConsumableItem> Items { + get { + Godot.Collections.Array<ConsumableItem> list = []; + foreach (Entity entity in Entities) { + if (entity is ConsumableItem item) { + list.Add(item); + } + } + return list; + } + } + private AStarGrid2D pathfinder; /// <summary> /// Objeto do Godot que utiliza do algoritmo A* para calcular @@ -196,6 +211,32 @@ public partial class MapData : RefCounted } return null; } + + /// <summary> + /// Obtém o primeiro item na posição especificada. + /// </summary> + /// <param name="pos">Posição</param> + /// <returns>O primeiro item na posição, nulo se não houver.</returns> + public ConsumableItem GetFirstItemAtPosition(Vector2I pos) { + foreach (ConsumableItem item in Items) { + if (item.GridPosition == pos) { + return item; + } + } + + return null; + } + + /// <summary> + /// Remove uma entidade do mapa sem dar free. + /// </summary> + /// <param name="entity">A entidade para remover</param> + 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); + } /// <summary> /// Obtém todas as entidades na posição especificada. |
