void UpdateEnemy(EnemyQuirk quirk, List <Unit> players) { Unit enemyUnit = quirk.unit; Unit.ManagerState.AiData aiData = enemyUnit.manState.aiData; switch (aiData.state) { case Unit.AiState.Idle: Unit closestPlayer = unitMan.GetClosestUnit(enemyUnit, players); aiData.closestTarget = closestPlayer; if (closestPlayer == null) { break; } if (unitMan.DistanceBetweenUnits(enemyUnit, closestPlayer) <= quirk.detectRange) { aiData.state = Unit.AiState.Chasing; aiData.chasingTarget = closestPlayer; } break; case Unit.AiState.Chasing: if (unitMan.DistanceBetweenUnits(enemyUnit, aiData.chasingTarget) > quirk.chaseRange) { aiData.state = Unit.AiState.Idle; } break; } }
void UpdateEnemies(List <EnemyQuirk> enemies, List <Unit> players) { for (int i = 0; i < enemies.Count; i++) { EnemyQuirk quirk = enemies[i]; UpdateEnemy(quirk, players); } }