void ToGame(void) { Pause = false; SpaceReset(&space); // Reset player positions and velocity for (int i = 0, c = 0; i < MAX_PLAYERS; i++) { PlayerReset(&players[i], c); if (!players[i].Enabled) continue; c++; } CameraInit(&camera); SoundPlay(SoundStart, 1.0); MusicSetLoud(true); GatherInput = GameGatherInput; DoLogic = GameDoLogic; OutputFrame = GameOutputFrame; }
void ToTitleScreen(const bool start) { countdownMs = -1; ResetMovement(); MusicSetLoud(false); BackgroundsInit(&BG); Start = start; if (Start) { sprintf( WelcomeMessage, "%s to pause\n%s to exit", GetPausePrompt(), GetExitGamePrompt()); } else { // Find out the result of the game int maxScore = 0; for (int i = 0; i < MAX_PLAYERS; i++) { if (players[i].Score > maxScore) maxScore = players[i].Score; } winners = 0; for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].Enabled) continue; if (players[i].Score == maxScore) { winnerIndices[winners] = i; winners++; } } if (PlayerEnabledCount() == 1) { sprintf( WelcomeMessage, "Your score was %d!\n%s to exit", maxScore, GetExitGamePrompt()); } else if (winners == 1) { sprintf( WelcomeMessage, "Wins with score %d!\n%s to exit", maxScore, GetExitGamePrompt()); } else { sprintf( WelcomeMessage, "Tied with score %d!\n%s to exit", maxScore, GetExitGamePrompt()); } HighScoresAdd(maxScore); } HighScoreDisplayInit(&HSD); CArrayClear(&Particles); SpaceReset(&space); // Add bottom edge so we don't fall through SpaceAddBottomEdge(&space); // Initialise players here for (int i = 0; i < MAX_PLAYERS; i++) { PlayerInit(&players[i], i, cpv( (i + 1) * FIELD_WIDTH / (MAX_PLAYERS + 1), FIELD_HEIGHT * 0.75f)); playersEnabled[i] = false; } // Add platforms for players to jump off for (int i = 0; i < MAX_PLAYERS; i++) { BlockInit( &blocks[i], (i + 1) * FIELD_WIDTH / (MAX_PLAYERS + 1) - BLOCK_WIDTH / 2, BLOCK_Y, BLOCK_WIDTH); } GatherInput = TitleScreenGatherInput; DoLogic = TitleScreenDoLogic; OutputFrame = TitleScreenOutputFrame; }