summaryrefslogtreecommitdiff
path: root/scripts/map
diff options
context:
space:
mode:
authorMatheus <matheus.guedes.mg.m@gmail.com>2025-09-04 12:46:30 -0300
committerMatheus <matheus.guedes.mg.m@gmail.com>2025-09-04 12:46:30 -0300
commitfbc055308f093a6527781cb16ce896ac253219ab (patch)
treed63357f7281784e03a12483fdd898a11293d8aa5 /scripts/map
parent6842ccfd372601db6b5d3f678ab5ebf03ad2b206 (diff)
Modificado inspetor
Diffstat (limited to 'scripts/map')
-rw-r--r--scripts/map/MapData.cs32
1 files changed, 32 insertions, 0 deletions
diff --git a/scripts/map/MapData.cs b/scripts/map/MapData.cs
index 3b03de8..de0ddf0 100644
--- a/scripts/map/MapData.cs
+++ b/scripts/map/MapData.cs
@@ -198,6 +198,38 @@ public partial class MapData : RefCounted
}
/// <summary>
+ /// Obtém todos os atores na posição especificada.
+ /// É possível haver mais de um ator na mesma posição se um deles for morto.
+ /// </summary>
+ /// <param name="pos">Vetor posição</param>
+ /// <returns>Lista com todos os atores na posição especificada.</returns>
+ public Godot.Collections.Array<Actor> GetActorsAtPosition(Vector2I pos) {
+ Godot.Collections.Array<Actor> ZOfZero = [];
+ Godot.Collections.Array<Actor> ZOfOne = [];
+ Godot.Collections.Array<Actor> ZOfTwo = [];
+
+ // Pego todos os atores
+ foreach (Actor actor in Actors) {
+ if (actor.GridPosition == pos) {
+ switch (actor.ZIndex) {
+ case 0:
+ ZOfZero.Add(actor);
+ break;
+ case 1:
+ ZOfOne.Add(actor);
+ break;
+ case 2:
+ ZOfTwo.Add(actor);
+ break;
+ }
+ }
+ }
+
+ // Retorno os atores ordenados por ZIndex.
+ return ZOfZero + ZOfOne + ZOfTwo;
+ }
+
+ /// <summary>
/// Verifica se é possível caminhar na coordenada especificada.
/// Este método será removido.
/// </summary>