void AShooterGameMode::FinishMatch() { AShooterGameState* const MyGameState = Cast<AShooterGameState>(GameState); if (IsMatchInProgress()) { EndMatch(); DetermineMatchWinner(); // notify players for (FConstControllerIterator It = GetWorld()->GetControllerIterator(); It; ++It) { AShooterPlayerState* PlayerState = Cast<AShooterPlayerState>((*It)->PlayerState); const bool bIsWinner = IsWinner(PlayerState); (*It)->GameHasEnded(NULL, bIsWinner); } // lock all pawns // pawns are not marked as keep for seamless travel, so we will create new pawns on the next match rather than // turning these back on. for (FConstPawnIterator It = GetWorld()->GetPawnIterator(); It; ++It) { (*It)->TurnOff(); } // set up to restart the match MyGameState->RemainingTime = TimeBetweenMatches; } }
void ALabyrinthGameMode::FinishMatch() { ALGameState* const MyGameState = Cast<ALGameState>(GameState); if (IsMatchInProgress()) { EndMatch(); DetermineMatchWinner(); // notify players for (FConstPlayerControllerIterator It = GetWorld()->GetPlayerControllerIterator(); It; It++) { ALPlayerState* PlayerState = Cast<ALPlayerState>((*It)->PlayerState); if (PlayerState) { const bool bIsWinner = IsWinner(PlayerState); (*It)->GameHasEnded(NULL, bIsWinner); } } // lock all pawns // pawns are not marked as keep for seamless travel, so we will create new ones // instead of turning these back on for (FConstPawnIterator It = GetWorld()->GetPawnIterator(); It; It++) { (*It)->TurnOff(); } // Setup to restart the match MyGameState->RemainingTime = TimeBetweenMatches; } }