summaryrefslogtreecommitdiff
path: root/scripts/map/MapData.cs
diff options
context:
space:
mode:
authorMatheus <matheus.guedes.mg.m@gmail.com>2025-09-04 21:08:57 -0300
committerMatheus <matheus.guedes.mg.m@gmail.com>2025-09-04 21:08:57 -0300
commit4b2afd3e2144e42bfa7f11a870584b9255052cf7 (patch)
tree11bcb45e3c93532d2aeaea69b4387ccda365bc22 /scripts/map/MapData.cs
parent1e248d3dd18f7c6bfaf8066c4662facbbb89e8f9 (diff)
INVENTÁRIO PEGÁVEL AAAAAAAAAAAAAAAAAAAAAAAAAAAA
Diffstat (limited to 'scripts/map/MapData.cs')
-rw-r--r--scripts/map/MapData.cs45
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.