public void Update(Orbiter orbiter) { if (State != OrbiterState.Idle && !Continue()) { return; } if (!orbiter.Target) { return; } //Proceed with firing process if (State == OrbiterState.Idle || State == OrbiterState.Cooldown) { SetState(OrbiterState.Charging); } else if (State == OrbiterState.Charging) { SetState(OrbiterState.Firing); } else if (State == OrbiterState.Firing) { SetState(OrbiterState.Cooldown); } }
public virtual void Start <TOrbiter>(TOrbiter orbiter) where TOrbiter : Orbiter { SelfOrbiter = orbiter; SetState(OrbiterState.Cooldown); }