private void ChangeState(AICycle cycle) { switch (cycle.action) { case AIAction.None: cycle.action = AIAction.CreateFactory; cycle.CreateFactory(); break; case AIAction.CreateFactory: cycle.action = AIAction.CreateTroop; cycle.CreateTroop(); break; case AIAction.CreateTroop: if (cycle.factory.queue.Count == 0) { cycle.troop.ChangeTo(cycle.factory.GetUnits(cycle.tanksNumber)); cycle.action = AIAction.MoveTroop; cycle.MoveTroop(); cycle.timer = cycle.waitTime; } break; case AIAction.MoveTroop: if (cycle.troop.Arrived()) { if (cycle.timer <= 0.0f) { cycle.action = AIAction.AttackTroop; cycle.AttackTroop(); } else { cycle.timer -= Time.deltaTime; } } break; case AIAction.AttackTroop: cycle.CheckGoal(); if (cycle.troop.count == 0) { if (cycle.factory == null) { cycle.action = AIAction.CreateFactory; cycle.CreateFactory(); } else { cycle.action = AIAction.CreateTroop; cycle.CreateTroop(); } cycle.ClearGoals(); } else if (cycle.isGoal == false) { cycle.action = AIAction.AttackTroop; cycle.AttackTroop(); } break; } }
public EnemyAIPattern(AICycle aiCycle, params AIActionPattern[] aiActionPattern) { this._aiCycle = aiCycle; this._aiActionPattern = new List <AIActionPattern>(aiActionPattern); }