reverting to previous version

This commit is contained in:
2026-06-02 01:30:51 -04:00
parent dd14a8da40
commit bc65b5170e
7 changed files with 141 additions and 19 deletions
+30 -9
View File
@@ -19,6 +19,8 @@ public partial class EnemyController : TurnController
List<GridMarker> lastRow = _grid._gridMarkers.Last();
List<GridMarker> unoccupiedMarkers = [.. lastRow.Where(m => m._occupant == null).Cast<GridMarker>()];
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");
WarpEnemy(newEnemy, randomMarker);
_enemies.Add(newEnemy);
AddChild(newEnemy);
@@ -30,24 +32,43 @@ public partial class EnemyController : TurnController
AddEnemies(3);
}
public void MoveEnemy(Enemy ENEMY)
{
ENEMY._gridMarker = _grid.GetMarkerByAddress((Vector2I)(ENEMY._gridMarker._address + ENEMY._speed));
Tween tween = CreateTween();
tween.TweenProperty(ENEMY, "global_position", ENEMY._gridMarker.GlobalPosition, 1.0f);
}
// public void MoveEnemy(Enemy ENEMY)
// {
// ENEMY._gridMarker = _grid.GetMarkerFromOffset(ENEMY._gridMarker, ENEMY._speed);
// Tween tween = CreateTween();
// tween.TweenProperty(ENEMY, "global_position", ENEMY._gridMarker.GlobalPosition, 1.0f);
// }
public void MoveEnemies(List<Enemy> ENEMIES = null)
{
ENEMIES ??= _enemies;
ENEMIES = [.. ENEMIES.OrderByDescending(e => e._gridMarker._address.Y).ThenByDescending(e => e._gridMarker._address.X)];
Tween tween = CreateTween();
tween.SetParallel();
Dictionary<Enemy, List<GridMarker>> enemyPaths = new();
for (int i = 0; i < ENEMIES.Count; i++)
{
ENEMIES[i]._gridMarker = _grid.GetMarkerByAddress((Vector2I)(ENEMIES[i]._gridMarker._address + ENEMIES[i]._speed));
tween.TweenProperty(ENEMIES[i], "global_position", ENEMIES[i]._gridMarker.GlobalPosition, 0.4f);
enemyPaths[ENEMIES[i]] = ENEMIES[i].Pathfinding(_grid._gridMarkers.ToList());
}
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);
}
}
tween.TweenCallback(Callable.From(() => EmitSignal(SignalName.TurnDone)));
}
public void RemoveEnemy(Enemy ENEMY_TO_REMOVE)