private void ChangeState(AuditorState newState) { AuditorState oldState = State; if (State != newState) { if (newState == AuditorState.MoveToLoad) { timer = 0f; State = AuditorState.MoveToLoad; GameEvents.OnAuditorStateChanged(oldState, State, this); } else if (newState == AuditorState.Loading) { timer -= MoveInterval; State = AuditorState.Loading; GameEvents.OnAuditorStateChanged(oldState, State, this); if (timer >= LoadInterval) { ChangeState(AuditorState.MoveToUnload); } } else if (newState == AuditorState.MoveToUnload) { timer -= LoadInterval; State = AuditorState.MoveToUnload; GameEvents.OnAuditorStateChanged(oldState, State, this); if (timer >= MoveInterval) { ChangeState(AuditorState.Unloading); } } else if (newState == AuditorState.Unloading) { timer -= MoveInterval; State = AuditorState.Unloading; GameEvents.OnAuditorStateChanged(oldState, State, this); if (timer > UnloadInterval) { ChangeState(AuditorState.Completed); } } else if (newState == AuditorState.Completed) { State = AuditorState.Completed; GameEvents.OnAuditorStateChanged(oldState, State, this); } } }