Beispiel #1
0
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;
	}
}