full turns

This commit is contained in:
reisenlol 2026-01-11 04:22:09 -08:00
parent 7bd61df481
commit 6ff1531662
No known key found for this signature in database
15 changed files with 879 additions and 100 deletions

View file

@ -21,6 +21,7 @@ public class TurnHandler : MonoBehaviour
#endregion
[Header("Entity Lists")]
public List<PlayerEntity> playerEntities = new();
public List<Enemy> enemyEntities = new();
public enum GameState {PlayerTurn, EnemyTurn}
@ -28,6 +29,9 @@ public class TurnHandler : MonoBehaviour
private int currentEnemy = 0;
[Header("Spawning")]
[SerializeField] private int enemySpawnAmount;
private void SortEnemies()
{
enemyEntities = enemyEntities.OrderBy(o=>o.turnSpeed).ToList();
@ -42,33 +46,59 @@ public class TurnHandler : MonoBehaviour
{
if (currentGameState == GameState.PlayerTurn)
{
bool allDone = true;
foreach (PlayerEntity player in playerEntities)
{
if (!player.hasMoved || !player.hasAttacked)
{
allDone = false;
return;
}
}
if (allDone)
currentGameState = GameState.EnemyTurn;
if (!enemyEntities[0])
{
EndRound();
}
else
{
currentGameState = GameState.EnemyTurn;
enemyEntities[0].StartTurn();
}
}
else if (currentGameState == GameState.EnemyTurn)
{
enemyEntities[currentEnemy].StartTurn();
currentEnemy++;
if (currentEnemy > enemyEntities.Count - 1)
{
currentGameState = GameState.PlayerTurn;
foreach (PlayerEntity player in playerEntities)
{
player.hasMoved = false;
player.hasAttacked = false;
}
EndRound();
return;
}
enemyEntities[currentEnemy].StartTurn();
}
}
private void EndRound()
{
EnvironmentTurn();
currentEnemy = 0;
currentGameState = GameState.PlayerTurn;
foreach (PlayerEntity player in playerEntities)
{
player.hasMoved = false;
player.hasAttacked = false;
}
}
public void EnvironmentTurn()
{
EnemySpawner.instance.SpawnEnemy(enemySpawnAmount);
}
public void SkipAll()
{
foreach (PlayerEntity player in playerEntities)
{
player.hasMoved = true;
player.hasAttacked = true;
}
UpdateTurns();
}
}