void OnBoltOpened() { switch (state) { case EjectorState.Empty: break; case EjectorState.Round: Debug.Log("Round ejected."); if (OnRoundEjected != null) { OnRoundEjected(); } break; case EjectorState.Case: Debug.Log("Case ejected."); if (OnCaseEjected != null) { OnCaseEjected(); } break; } State = EjectorState.Empty; previousBoltState = BoltState.Open; }
void OnBoltMoved(float position) { if (chamber == null) { return; } if (previousBoltState == BoltState.Closed) { switch (chamber.Clear()) { case ChamberState.Empty: State = EjectorState.Empty; break; case ChamberState.Round: State = EjectorState.Round; break; case ChamberState.Case: State = EjectorState.Case; break; } } previousBoltState = BoltState.Running; }
void OnBoltClosed() { if (chamber != null) { switch (state) { case EjectorState.Empty: break; case EjectorState.Round: chamber.State = ChamberState.Round; break; case EjectorState.Case: chamber.State = ChamberState.Case; break; } State = EjectorState.Empty; } previousBoltState = BoltState.Closed; }