From 4a9143780f6df0793e2eb2fad51f254d10741317 Mon Sep 17 00:00:00 2001 From: cojoedmo Date: Tue, 23 Jun 2026 23:28:57 -0400 Subject: [PATCH] reverting to prior change --- EnemyController.cs | 154 +++++++++++++++++++++++---------------------- 1 file changed, 78 insertions(+), 76 deletions(-) diff --git a/EnemyController.cs b/EnemyController.cs index 5098515..2e572d3 100644 --- a/EnemyController.cs +++ b/EnemyController.cs @@ -11,8 +11,8 @@ public partial class EnemyController : TurnController public PackedScene _enemyScene = GD.Load("res://Enemy.tscn"); public List _enemies = new(); public PlayerController _playerController; - - public Tween _movementTween; + public Dictionary> _tweenStages = new(); + public Tween _tween; public void AddEnemies(int ENEMY_COUNT = 1) { @@ -54,6 +54,52 @@ public partial class EnemyController : TurnController } + public async Task BuildAnimationTween() + { + _tweenStages.Clear(); + for (int i= 0; i < _enemies.Count; i++) + { + Enemy enemy = _enemies[i]; + await enemy.AnimateMovement(this); + } + _tweenStages.OrderBy(s => s.Key); + } + + public async Task BuildEnemyPaths() + { + Map map = _playArea._map; + + _enemies.ForEach(e => e._path.Clear()); + + while (_enemies.Any(e => e._staminaRemaining > 0) && _enemies.Any(e => e._address.Y > map.GetFirstOpenRow())) + { + for (int i = 0; i < _enemies.Count; i++) + { + Enemy enemy = _enemies[i]; + if (enemy._staminaRemaining <= 0 || enemy._address.Y <= map.GetFirstOpenRow()) + { + enemy._path.Add(enemy._path.LastOrDefault(enemy._address)); + continue; + } + + List path = enemy.GetBestPath(map); + + if (path.Count == 0) + { + enemy._path.Add(enemy._path.LastOrDefault(enemy._address)); + continue; + } + + Vector2I cell = path[0]; + GD.Print(cell); + map.SetCellEnemy(cell, enemy); + enemy._path.Add(cell); + + enemy._staminaRemaining--; + } + } + } + public void EnemyAttacks() { List attackingEnemies = [.. _enemies.Where(e => e.CanAttack())]; @@ -65,64 +111,7 @@ public partial class EnemyController : TurnController } } - public async Task BuildEnemyPaths() - { - Map map = _playArea._map; - - for (int i = 0; i < _enemies.Count; i++) - { - Enemy enemy = _enemies[i]; - enemy.GetRemainingStamina(map); - } - - _enemies.ForEach(e => e._path.Clear()); - - if (_enemies.All(e => e._staminaRemaining <= 0)) - { - return; - } - - while (_enemies.Any(e => e._staminaRemaining > 0)) - { - for (int i = 0; i < _enemies.Count; i++) - { - Enemy enemy = _enemies[i]; - if (enemy._staminaRemaining <= 0) - { - enemy.RemainInPlace(); - continue; - } - if (enemy._address.Y <= map.GetFirstOpenRow()) - { - enemy.RemainInPlace(); - enemy._staminaRemaining = 0; - continue; - } - - List path = enemy.GetBestPath(map); - - if (path.Count == 0) - { - enemy.RemainInPlace(); - continue; - } - - Vector2I cell = path[0]; - if (cell.Y <= enemy._address.Y) // if path would move enemy forward - { - map.SetCellEnemy(cell, enemy); - enemy._path.Add(cell); - } - else - { - enemy.RemainInPlace(); - } - - enemy._staminaRemaining--; - } - } - } - + public void HandleEnemyClick(Enemy ENEMY) { if (ENEMY._staminaRemaining <= 0){ @@ -151,29 +140,35 @@ public partial class EnemyController : TurnController AddEnemies(positions); } - public void StepEnemies(int STEP) + public void ProcessTweenStep(int STEP = 0) { - Map map = _playArea._map; - if (_movementTween != null) + if (_tweenStages.Count <= 0) { - _movementTween.Kill(); + return; + } + if (STEP >= _tweenStages.Count) + { + EndTurn(); + return; } - _movementTween = CreateTween(); - _movementTween.TweenInterval(0.5f); - for (int i= 0; i < _enemies.Count; i++) + if (_tween != null) { - Enemy enemy = _enemies[i]; - _movementTween.Parallel().TweenProperty(enemy, "global_position", map.GetCellPositionFromAddress(enemy._path[STEP]), 0.25f); + _tween.Kill(); } - if (STEP < _enemies[0]._path.Count - 1) + + _tween = CreateTween(); + _tween.TweenInterval(0.5f); + + float stage = _tweenStages.Keys.ElementAt(STEP); + List stageTweens = _tweenStages[stage]; + for (int i = 0; i < stageTweens.Count; i++) { - _movementTween.TweenCallback(Callable.From(() => StepEnemies(STEP + 1))); - } - else - { - _movementTween.TweenCallback(Callable.From(() => EndTurn())); + Tween step = stageTweens[i]; + _tween.Parallel().TweenSubtween(step); } + + _tween.TweenCallback(Callable.From(() => ProcessTweenStep(STEP + 1))); } public void RemoveEnemy(Enemy ENEMY_TO_REMOVE) @@ -192,13 +187,20 @@ public partial class EnemyController : TurnController { AddEnemies(1); + for (int i = 0; i < _enemies.Count; i++) + { + _enemies[i].StartTurn(); + } + SortEnemies(); EnemyAttacks(); await BuildEnemyPaths(); - StepEnemies(0); + await BuildAnimationTween(); + + ProcessTweenStep(); } public void SetEnemy(Enemy ENEMY, Vector2I CELL)