starting to rework grid maps to be tile map layers

This commit is contained in:
2026-06-02 18:43:19 -04:00
parent 03004dbcd3
commit 7b5cd9d5f6
6 changed files with 921 additions and 79 deletions
+23 -23
View File
@@ -21,6 +21,7 @@ public partial class EnemyController : TurnController
GridMarker randomMarker = unoccupiedMarkers[Globals._rng.Next(unoccupiedMarkers.Count)];
newEnemy._speed = Globals._rng.Next(2,4+1);
newEnemy.Modulate = new Color(newEnemy._speed == 2 ? "#FF0000" : newEnemy._speed == 3 ? "#00FF00" : "#0000FF");
newEnemy._enemyController = this;
WarpEnemy(newEnemy, randomMarker);
_enemies.Add(newEnemy);
AddChild(newEnemy);
@@ -43,32 +44,31 @@ public partial class EnemyController : TurnController
{
ENEMIES ??= _enemies;
ENEMIES = [.. ENEMIES.OrderByDescending(e => e._gridMarker._address.Y).ThenByDescending(e => e._gridMarker._address.X)];
Tween tween = CreateTween();
tween.SetParallel();
// Tween tween = CreateTween();
// tween.SetParallel();
Dictionary<Enemy, List<GridMarker>> enemyPaths = new();
for (int i = 0; i < ENEMIES.Count; i++)
{
enemyPaths[ENEMIES[i]] = ENEMIES[i].Pathfinding(_grid._gridMarkers.ToList());
}
ENEMIES[0].Pathfinding(_grid.GetMarkerByAddress(new Vector2I(ENEMIES[0]._gridMarker._address.X, ENEMIES[0]._gridMarker._address.Y - ENEMIES[0]._visibilityRange)));
// for (int i = 0; i < ENEMIES.Count; i++)
// {
// enemyPaths[ENEMIES[i]] = ENEMIES[i].Pathfinding(_grid.GetMarkerByAddress(new Vector2I(ENEMIES[i]._gridMarker._address.X, 0)));
// }
int maxSteps = enemyPaths.Select(p => p.Value.Count).Max();
GD.Print(enemyPaths.Count, " ", maxSteps);
for (int i = 0; i < maxSteps; i++)
{
Dictionary<Enemy, List<GridMarker>> qualifyingPaths = (Dictionary<Enemy, List<GridMarker>>)enemyPaths.Where(p => p.Value.Count <= maxSteps);
for (int j = 0; j < qualifyingPaths.Count; j++)
{
Enemy enemy = qualifyingPaths.ElementAt(j).Key;
GridMarker marker = qualifyingPaths.ElementAt(j).Value.ElementAt(i);
if (j == 0)
{
tween.Chain();
}
tween.TweenProperty(enemy, "global_position", enemy._gridMarker.GlobalPosition, 0.4f);
}
}
// GD.Print(maxSteps);
// for (int i = 0; i < maxSteps; i++)
// {
// Dictionary<Enemy, List<GridMarker>> qualifyingPaths = (Dictionary<Enemy, List<GridMarker>>)enemyPaths.Where(p => p.Value.Count <= maxSteps);
// for (int j = 0; j < qualifyingPaths.Count; j++)
// {
// Enemy enemy = qualifyingPaths.ElementAt(j).Key;
// GridMarker marker = qualifyingPaths.ElementAt(j).Value.ElementAt(i);
// if (j == 0)
// {
// tween.Chain();
// }
// tween.TweenProperty(enemy, "global_position", enemy._gridMarker.GlobalPosition, 0.4f);
// }
// }
}
public void RemoveEnemy(Enemy ENEMY_TO_REMOVE)