void D_DoomMain(void) { BigNumFont = LoadAResource(rBIGNUMB); /* Cache the large numeric font (Needed always) */ R_Init(); /* Init refresh system */ P_Init(); /* Init main code */ O_Init(); /* Init controls */ for (;;) { RunTitle(); /* Show the title page */ RunDemo(rDEMO1); /* Run the first demo */ RunCredits(); /* Show the credits page */ RunDemo(rDEMO2); /* Run the second demo */ } }
void Game::HandleGameState() { switch (gameState) { case GameState::Title: RunTitle(); break; case GameState::Intro: RunIntro(); break; case GameState::Fade: fadeTimer--; if (fadeTimer <= 0) fadeDone = true; if (fadeDone) { levels[10]; levelN++; switch (levelN) { //First main level case 0: stage = 1; gameTime = 300; break; case 1: stage = 1; break; case 2: stage = 2; break; case 3: stage = 2; break; case 4: stage = 3; break; //Second main level case 5: stage = 4; gameTime = 400; break; case 6: stage = 4; break; case 7: stage = 5; break; case 8: stage = 5; break; case 9: stage = 6; break; case 10: stage = 6; break; //Third main level case 11: stage = 7; break; default: break; } if (levelN == 0 || levelN == 1) { stage = 1; } if (levelN == 0 || levelN == 1) gameTime = 300; if (levelN == 5) gameTime = 400; if (levelN == 11) gameTime = 500; std::string levelID = "level"; levelID.append(std::to_string(levelN)); if (previousLevel) { levels[levelN].SetPreviousLevelSpawn(true, false); } else if (previousLevel2) { levels[levelN].SetPreviousLevelSpawn(false, true); } else levels[levelN].SetPreviousLevelSpawn(false, false); if (secondExit) levels[levelN].SetNextLevelSpawn(true); previousLevel = false; previousLevel2 = false; secondExit = false; levels[levelN].LoadLevel(levelID, levelN, tm, renderer, sm); levels[levelN].SetScore(0); prevScore = totalScore; levels[levelN].player.SetWhipLevel(whipLevel); levels[levelN].player.SetHealth(health); levels[levelN].player.SetLives(lives); levels[levelN].player.SetAmmo(ammo); levels[levelN].player.SetMaxProjectiles(maxProjectiles); levels[levelN].player.SetSubWeapon(subWeaponType); levels[levelN].player.SetAlive(); deathTimer = 180; changeMusic = true; if (levelN == 1 || levelN == 2 || levelN == 4 || levelN == 5 || levelN == 8) camera.x = 0; if (levelN == 6) camera.x = 512; if (levelN == 7 || levelN == 9 || levelN == 10 || levelN == 11) camera.x = 1024; gameState = GameState::Running; } break; case GameState::Running: Update(); break; case GameState::Door: RunDoor(); break; case GameState::LevelComplete: RunLevelComplete(); break; case GameState::Map: RunMap(); break; case GameState::GameOver: RunGameOver(); break; default: break; } }