void Start() { base.Start(); for (int iter = 1; iter <= 4; iter++) { m_playerScores.Add(0); } m_infoText = GameObject.FindGameObjectWithTag("DaSText"); m_mode = GameModeManager.GameModeState.DRIVEANDSEEK; m_currentPhase = DriveAndSeekPhases.INACTIVE; }
void InitializePhase() { switch (m_currentPhase) { case DriveAndSeekPhases.SETUP: { EventManager.m_instance.AddEvent(Events.Event.DS_SETUP); SetupHiderAndSeekers(); //Setup buffer phase m_currentPhase = DriveAndSeekPhases.BUFFER; m_bufferPhase.m_lenght = 5.0f; m_bufferPhase.m_nextPhase = DriveAndSeekPhases.RUNNING; m_bufferPhase.m_message = "Runner Get Ready!"; InitializePhase(); break; } case DriveAndSeekPhases.RUNNING: { EventManager.m_instance.AddEvent(Events.Event.DS_RUNNING); m_infoText.GetComponent <Text>().text = "Start Running!"; m_timers[GetTimer("Running")].StartTimer(); ChangeAllPlayerMovement(false); ChangePlayerMovement(m_hiderNumber, true); break; } case DriveAndSeekPhases.CHASING: { EventManager.m_instance.AddEvent(Events.Event.DS_CHASING); m_infoText.GetComponent <Text>().text = "Catch the Runner!"; ChangeAllPlayerMovement(true); m_timers[GetTimer("Chasing")].StartTimer(); break; } case DriveAndSeekPhases.RESET: { EventManager.m_instance.AddEvent(Events.Event.DS_RESET); if (m_hiderWon) { m_playerScores[m_hiderNumber]++; } else { for (int iter = 0; iter <= PlayerManager.m_instance.m_playerCars.Count - 1; iter++) { if (iter != m_hiderNumber) { m_playerScores[iter]++; } } } for (int iter = 0; iter <= PlayerManager.m_instance.m_playerCars.Count - 1; iter++) { PlayerManager.m_instance.m_playerCars[iter].GetComponent <Car>().ToggleCamera(true); } if (CheckFinished()) { m_currentPhase = DriveAndSeekPhases.FINISH; InitializePhase(); } else { ResetRound(); m_currentPhase = DriveAndSeekPhases.SETUP; InitializePhase(); } break; } case DriveAndSeekPhases.FINISH: { EventManager.m_instance.AddEvent(Events.Event.DS_FINISH); EndGame(); //Setup buffer phase m_currentPhase = DriveAndSeekPhases.BUFFER; m_bufferPhase.m_lenght = 5.0f; m_bufferPhase.m_nextPhase = DriveAndSeekPhases.INACTIVE; m_bufferPhase.m_message = "Player " + m_gameWinner + " Wins!"; InitializePhase(); break; } case DriveAndSeekPhases.BUFFER: { EventManager.m_instance.AddEvent(Events.Event.DS_BUFFER); ChangeAllPlayerMovement(false); m_timers[GetTimer("Buffer")].m_timerLength = m_bufferPhase.m_lenght; m_infoText.GetComponent <Text>().text = m_bufferPhase.m_message; m_timers[GetTimer("Buffer")].StartTimer(); break; } case DriveAndSeekPhases.INACTIVE: { m_infoText.GetComponent <Text>().text = ""; ChangeAllPlayerMovement(true); break; } default: { break; } } }
void UpdatePhase() { switch (m_currentPhase) { case DriveAndSeekPhases.SETUP: { break; } case DriveAndSeekPhases.RUNNING: { if (m_timers[GetTimer("Running")].CheckFinished()) { m_currentPhase = DriveAndSeekPhases.CHASING; InitializePhase(); } break; } case DriveAndSeekPhases.CHASING: { if (CheckHidersCaught()) { m_currentPhase = DriveAndSeekPhases.RESET; InitializePhase(); } if (CheckSeekersDead()) { m_hiderWon = true; m_currentPhase = DriveAndSeekPhases.RESET; InitializePhase(); } if (m_timers[GetTimer("Chasing")].CheckFinished()) { m_hiderWon = true; m_currentPhase = DriveAndSeekPhases.RESET; InitializePhase(); } break; } case DriveAndSeekPhases.RESET: { break; } case DriveAndSeekPhases.FINISH: { break; } case DriveAndSeekPhases.BUFFER: { if (m_timers[GetTimer("Buffer")].CheckFinished()) { m_currentPhase = m_bufferPhase.m_nextPhase; InitializePhase(); } break; } case DriveAndSeekPhases.INACTIVE: { if (m_active) { m_currentPhase = DriveAndSeekPhases.SETUP; InitializePhase(); } break; } default: { break; } } }