public override IEnumerator IUpdate() { yield return(null); if (ship != null) { while ((ship.enabled) && (stateMachine.state == this)) { if (leaderShip.stateMachine.state.GetType() == typeof(BansheePersueState)) { BoidActor leaderTarget = leaderShip.boid.GetBehaviour <Pursue> ().target; if (leaderTarget != null) { if (Vector3.Distance(leaderShip.transform.position, leaderTarget.transform.position) <= disperceDistance) { Ship threatShip = ShipManager.main.BiggestThreat(ship.transform.position, ship.faction, threatDistance); if (threatShip != null) { stateMachine.ChangeState(new BansheePersueState(stateMachine, ship, threatShip)); } else { yield return(new WaitForSeconds(updateRefresh)); } } } else { stateMachine.ChangeState(new BansheePatrolState(stateMachine, ship, ShipManager.main.emporer)); } } yield return(new WaitForSeconds(updateRefresh)); } } }
public ProtonPatrolState(StateMachine _stateMachine, Ship _ship, BoidActor _leader) : base(_stateMachine, _ship) { patrolBehaviour = ship.boid.GetBehaviour <OffsetPursue> (); if (patrolBehaviour != null) { patrolBehaviour.leader = _leader; } }
private void LookForBomber() { OffsetPursue offsetPursue = ship.boid.GetBehaviour <OffsetPursue> (); if (offsetPursue != null) { BoidActor escortingShip = offsetPursue.leader; if (escortingShip != null) { stateMachine.ChangeState(new IntercepterEscortState(stateMachine, ship, escortingShip)); } else { stateMachine.ChangeState(new IntercepterEmporerState(stateMachine, ship, ShipManager.main.emporer)); } } }
public IntercepterEscortState(StateMachine _stateMachine, Ship _ship, BoidActor _escortingShip) : base(_stateMachine, _ship) { escortingShip = _escortingShip; }