fixed earlier problem
This commit is contained in:
@@ -16,8 +16,8 @@ public partial class Enemy : StaticBody2D
|
||||
public int _damage = 1, _health = 2, _stamina, _staminaRemaining, _visibilityRange = 4, _hitRange, _attackCost = 1;
|
||||
public Dictionary<string, int> _priorities = new()
|
||||
{
|
||||
{"attack", 0}, // 0 to 999999 reserved for attacking priorities
|
||||
{"movement", 1000000} // 1000000 to 1999999 reserved for movement priorities
|
||||
{"attack", 1000000}, // 1000000 to 1999999 reserved for attack priorities
|
||||
{"movement", 0} // 0 to 999999 reserved for movement priorities
|
||||
};
|
||||
public Vector2I _address = -Vector2I.One, _range = Vector2I.Up;
|
||||
public List<Vector2I> _path = new(), _pathStored = new();
|
||||
@@ -115,7 +115,7 @@ public partial class Enemy : StaticBody2D
|
||||
Tween subtween = CreateTween();
|
||||
subtween.TweenProperty(this, "global_position", CONTROLLER._playArea._map.GetCellPositionFromAddress(PATH_STEP), 0.25f);
|
||||
int key = _priorities["movement"] + CONTROLLER._actionLoop;
|
||||
|
||||
GD.Print(key);
|
||||
if (!CONTROLLER._tweenStages.ContainsKey(key))
|
||||
{
|
||||
CONTROLLER._tweenStages[key] = new();
|
||||
|
||||
+18
-16
@@ -9,7 +9,7 @@ public partial class EnemyController : TurnController
|
||||
{
|
||||
public int _actionLoop = 0;
|
||||
public PackedScene _enemyScene = GD.Load<PackedScene>("res://Enemy.tscn");
|
||||
public List<Enemy> _enemies = new(), _remainingEnemies = new();
|
||||
public List<Enemy> _enemies = new();
|
||||
public PlayerController _playerController;
|
||||
public Dictionary<int, List<Tween>> _tweenStages = new();
|
||||
public Tween _tween;
|
||||
@@ -53,6 +53,11 @@ public partial class EnemyController : TurnController
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public List<Enemy> GetRemainingEnemies()
|
||||
{
|
||||
return [.. _enemies.Where(e => e.CanMove(this) || e.CanAttack(this))];
|
||||
}
|
||||
|
||||
public void HandleEnemyActions()
|
||||
{
|
||||
@@ -62,16 +67,20 @@ public partial class EnemyController : TurnController
|
||||
|
||||
_enemies.ForEach(e => e._path.Clear());
|
||||
|
||||
_remainingEnemies = [.. _enemies.Where(e => e.CanMove(this) || e.CanAttack(this))];
|
||||
while (_remainingEnemies.Count > 0)
|
||||
List<Enemy> remainingEnemies = GetRemainingEnemies();
|
||||
while (remainingEnemies.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < _remainingEnemies.Count; i++)
|
||||
for (int i = 0; i < remainingEnemies.Count; i++)
|
||||
{
|
||||
Enemy enemy = _remainingEnemies[i];
|
||||
Enemy enemy = remainingEnemies[i];
|
||||
if (!enemy.CanMove(this) && !enemy.CanAttack(this))
|
||||
{
|
||||
GD.Print(i);
|
||||
}
|
||||
HandleEnemyPathing(enemy);
|
||||
HandleEnemyAttacking(enemy);
|
||||
HandleEnemyStaminaCheck(enemy);
|
||||
}
|
||||
remainingEnemies = GetRemainingEnemies();
|
||||
_actionLoop++;
|
||||
}
|
||||
}
|
||||
@@ -117,6 +126,7 @@ public partial class EnemyController : TurnController
|
||||
|
||||
if (path.Count == 0)
|
||||
{
|
||||
// ENEMY.Move(ENEMY._path.LastOrDefault(ENEMY._address), this);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -135,14 +145,6 @@ public partial class EnemyController : TurnController
|
||||
_enemies = [.. _enemies.OrderBy(e => e._address.Y).ThenBy(e => e._path.Count).ThenBy(e => Math.Abs(e._address.X - _playArea._map._maxX / 2))];
|
||||
}
|
||||
|
||||
public void HandleEnemyStaminaCheck(Enemy ENEMY)
|
||||
{
|
||||
if (ENEMY._staminaRemaining <= 0)
|
||||
{
|
||||
_remainingEnemies.Remove(ENEMY);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void Initiate()
|
||||
{
|
||||
@@ -153,8 +155,8 @@ public partial class EnemyController : TurnController
|
||||
|
||||
public void ProcessTween()
|
||||
{
|
||||
_tweenStages.OrderBy(s => s.Key);
|
||||
|
||||
_tweenStages = _tweenStages.OrderBy(s => s.Key).ToDictionary();
|
||||
GD.Print(string.Join(", ", _tweenStages.Keys));
|
||||
if (_tweenStages.Count <= 0)
|
||||
{
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user