// Mission Screen Update logic void UpdateMissionScreen(void) { UpdateMusicStream(musMission); if (!writeEnd) WriteMissionText(); else { framesCounter++; if ((framesCounter%blinkFrames) == 0) { framesCounter = 0; blinkKeyWord = !blinkKeyWord; } } if (showButton) { if (IsKeyPressed(KEY_ENTER) || IsButtonPressed()) { if (!writeEnd) { writeEnd = true; writeKeyword = true; writeNumber = true; missionLenght = missionMaxLength; } else { finishScreen = true; showButton = false; } } } }
int main() { // Initialization //-------------------------------------------------------------------------------------- static unsigned char key = 0; InitAudioDevice(); Sound fxWav = LoadSound("resources/audio/weird.wav"); // Load WAV audio file Sound fxOgg = LoadSound("resources/audio/tanatana.ogg"); // Load OGG audio file Music music = LoadMusicStream("resources/audio/guitar_noodling.ogg"); PlayMusicStream(music); printf("\nPress s or d to play sounds...\n"); //-------------------------------------------------------------------------------------- // Main loop while (key != KEY_ESCAPE) { if (kbhit()) key = getch(); if (key == 's') { PlaySound(fxWav); key = 0; } if (key == 'd') { PlaySound(fxOgg); key = 0; } UpdateMusicStream(music); } // De-Initialization //-------------------------------------------------------------------------------------- UnloadSound(fxWav); // Unload sound data UnloadSound(fxOgg); // Unload sound data UnloadMusicStream(music); // Unload music stream data CloseAudioDevice(); //-------------------------------------------------------------------------------------- return 0; }
// Gameplay Screen Update logic void UpdateGameplayScreen(void) { if (IsKeyPressed('P')) { pause = !pause; if (!pause) ResumeMusicStream(); else PauseMusicStream(); } if (!pause) { if (!startGame && IsKeyPressed(KEY_SPACE)) { startGame = TRUE; ResumeMusicStream(); } // TODO: Update GAMEPLAY screen variables here! if (startGame) { UpdateMainCamera(&mainCamera); UpdateTrianglesPosition(mainCamera.position); UpdateTrianglesState(); UpdatePlatformsPosition(mainCamera.position); UpdatePlatformsState(); UpdatePlayer(&player); } } // Press enter to change to ENDING screen /* if (IsKeyPressed(KEY_ENTER) || !player.isAlive || mainCamera.position.x/CELL_SIZE>GRID_WIDTH+10) { finishScreen = 1; } */ // WIN / LOSE Conditions if (!player.isAlive) GameplayEnd(1); // If player dies, reset gameplay screen else if (mainCamera.position.x/CELL_SIZE>GRID_WIDTH+20) GameplayEnd(2); // If player reaches the end level (+20 cells) game ends. // MusicIsPlaying UpdateMusicStream(); }
// Update and Draw one frame void UpdateDrawFrame(void) { // Update //---------------------------------------------------------------------------------- if (!onTransition) { switch (currentScreen) { case LOGO: { UpdateLogoScreen(); if (FinishLogoScreen()) TransitionToScreen(TITLE); } break; case TITLE: { UpdateTitleScreen(); // NOTE: FinishTitleScreen() return an int defining the screen to jump to if (FinishTitleScreen() == 1) { UnloadTitleScreen(); //currentScreen = OPTIONS; //InitOptionsScreen(); } else if (FinishTitleScreen() == 2) { UnloadTitleScreen(); InitGameplayScreen(); TransitionToScreen(GAMEPLAY); } } break; case GAMEPLAY: { UpdateGameplayScreen(); if (FinishGameplayScreen()) { UnloadGameplayScreen(); InitEndingScreen(); TransitionToScreen(ENDING); } } break; case ENDING: { UpdateEndingScreen(); if (FinishEndingScreen()) { UnloadEndingScreen(); InitGameplayScreen(); TransitionToScreen(GAMEPLAY); } } break; default: break; } } else UpdateTransition(); UpdateMusicStream(music); //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- BeginDrawing(); ClearBackground(WHITE); switch (currentScreen) { case LOGO: DrawLogoScreen(); break; case TITLE: DrawTitleScreen(); break; case GAMEPLAY: DrawGameplayScreen(); break; case ENDING: DrawEndingScreen(); break; default: break; } if (onTransition) DrawTransition(); DrawFPS(20, GetScreenHeight() - 30); DrawRectangle(GetScreenWidth() - 200, GetScreenHeight() - 50, 200, 40, Fade(WHITE, 0.6f)); DrawText("ALPHA VERSION", GetScreenWidth() - 180, GetScreenHeight() - 40, 20, DARKGRAY); EndDrawing(); //---------------------------------------------------------------------------------- }
// Update and draw game frame void UpdateDrawFrame(void) { // Update //---------------------------------------------------------------------------------- if (!onTransition) { if (player.dead) { framesCounter++; if (framesCounter > 80) { framesCounter = 0; player.dead = false; player.numLifes = 4; TransitionToScreen(TITLE); } } switch(currentScreen) { case LOGO: { UpdateLogoScreen(); if (FinishLogoScreen()) ChangeToScreen(LOGO_RL); } break; case LOGO_RL: { rlUpdateLogoScreen(); if (rlFinishLogoScreen()) TransitionToScreen(TITLE); } break; case TITLE: { UpdateTitleScreen(); if (FinishTitleScreen() == 1) TransitionToScreen(ATTIC); } break; case ATTIC: { UpdateAtticScreen(); if (FinishAtticScreen() == 1) TransitionToScreen(AISLE01); } break; case AISLE01: { UpdateAisle01Screen(); if (FinishAisle01Screen() == 1) TransitionToScreen(BATHROOM); else if(FinishAisle01Screen() == 2) TransitionToScreen(KITCHEN); else if(FinishAisle01Screen() == 3) TransitionToScreen(LIVINGROOM); } break; case BATHROOM: { UpdateBathroomScreen(); if (FinishBathroomScreen() == 1) TransitionToScreen(AISLE01); } break; case LIVINGROOM: { UpdateLivingroomScreen(); if (FinishLivingroomScreen() == 1) TransitionToScreen(AISLE01); else if(FinishLivingroomScreen() == 2)TransitionToScreen(AISLE02); } break; case AISLE02: { UpdateAisle02Screen(); if (FinishAisle02Screen() == 1) TransitionToScreen(KITCHEN); } break; case KITCHEN: { UpdateKitchenScreen(); if (FinishKitchenScreen() == 1) TransitionToScreen(ARMORY); else if(FinishKitchenScreen() == 2)TransitionToScreen(AISLE02); } break; case ARMORY: { UpdateArmoryScreen(); if(FinishArmoryScreen() == 1) TransitionToScreen(ENDING); else if(FinishArmoryScreen() == 2) TransitionToScreen(KITCHEN); } break; case ENDING: { UpdateEndingScreen(); if (FinishEndingScreen()) TransitionToScreen(TITLE); } break; default: break; } } else { // Update transition (fade-in, fade-out) UpdateTransition(); } UpdateMusicStream(music); //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- BeginDrawing(); ClearBackground(RAYWHITE); switch(currentScreen) { case LOGO: DrawLogoScreen(); break; case LOGO_RL: rlDrawLogoScreen(); break; case TITLE: DrawTitleScreen(); break; case ATTIC: DrawAtticScreen(); break; case AISLE01: DrawAisle01Screen();break; case AISLE02: DrawAisle02Screen();break; case BATHROOM: DrawBathroomScreen();break; case LIVINGROOM: DrawLivingroomScreen();break; case KITCHEN: DrawKitchenScreen();break; case ARMORY: DrawArmoryScreen();break; case ENDING: DrawEndingScreen(); break; default: break; } if (onTransition) DrawTransition(); //DrawFPS(10, 10); EndDrawing(); //---------------------------------------------------------------------------------- }
// Update and draw game frame void UpdateDrawFrame(void) { // Update //---------------------------------------------------------------------------------- if (!onTransition) { switch(currentScreen) { case LOGO_RL: { rlUpdateLogoScreen(); if (rlFinishLogoScreen()) TransitionToScreen(TITLE); } break; case TITLE: { UpdateTitleScreen(); if (FinishTitleScreen() == 1) TransitionToScreen(GAMEPLAY); } break; case GAMEPLAY: { UpdateGameplayScreen(); if (FinishGameplayScreen() == 1) ChangeToScreen(LOGO_RL); else if (FinishGameplayScreen() == 2) TransitionToScreen(TITLE); } break; default: break; } } else { // Update transition (fade-in, fade-out) UpdateTransition(); } UpdateMusicStream(); //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- BeginDrawing(); ClearBackground(RAYWHITE); switch(currentScreen) { case LOGO_RL: rlDrawLogoScreen(); break; case TITLE: DrawTitleScreen(); break; case GAMEPLAY: DrawGameplayScreen(); break; default: break; } if (onTransition) DrawTransition(); //DrawFPS(10, 10); EndDrawing(); //---------------------------------------------------------------------------------- }
// Update and draw game frame static void UpdateDrawFrame(void) { // Update //---------------------------------------------------------------------------------- if (!onTransition) { switch(currentScreen) { case LOGO: { UpdateLogoScreen(); if (FinishLogoScreen()) TransitionToScreen(TITLE); } break; case TITLE: { UpdateTitleScreen(); if (FinishTitleScreen() == 1) TransitionToScreen(GAMEPLAY); } break; case GAMEPLAY: { UpdateGameplayScreen(); if (FinishGameplayScreen() == 1) TransitionToScreen(ENDING); //else if (FinishGameplayScreen() == 2) TransitionToScreen(TITLE); } break; case ENDING: { UpdateEndingScreen(); if (FinishEndingScreen() == 1) TransitionToScreen(TITLE); } break; default: break; } } else UpdateTransition(); // Update transition (fade-in, fade-out) // TODO: Review! It breaks the game... issues with audio buffering... if (currentScreen != ENDING) UpdateMusicStream(music); //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- BeginDrawing(); ClearBackground(RAYWHITE); switch(currentScreen) { case LOGO: DrawLogoScreen(); break; case TITLE: DrawTitleScreen(); break; case GAMEPLAY: DrawGameplayScreen(); break; case ENDING: DrawEndingScreen(); break; default: break; } // Draw full screen rectangle in front of everything if (onTransition) DrawTransition(); EndDrawing(); //---------------------------------------------------------------------------------- }
int main() { // Initialization //-------------------------------------------------------------------------------------- int screenWidth = 800; int screenHeight = 450; InitWindow(screenWidth, screenHeight, "raylib [audio] example - music playing (streaming)"); InitAudioDevice(); // Initialize audio device PlayMusicStream("resources/audio/guitar_noodling.ogg"); // Play music stream int framesCounter = 0; float timePlayed = 0.0f; //float volume = 1.0; SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { // Update //---------------------------------------------------------------------------------- framesCounter++; // Testing music fading from one file to another /* if (framesCounter > 600) // Wait for 10 seconds (600 frames) { volume -= 0.01; // Decrement music volume level // When music volume level equal or lower than 0, // restore volume level and init another music file if (volume <= 0) { volume = 1.0; framesCounter = 0; PlayMusicStream("resources/audio/another_file.ogg"); } SetMusicVolume(volume); } */ if (IsWindowMinimized()) PauseMusicStream(); else ResumeMusicStream(); timePlayed = GetMusicTimePlayed()/GetMusicTimeLength()*100*4; // We scale by 4 to fit 400 pixels UpdateMusicStream(); // Update music buffer with new stream data //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- BeginDrawing(); ClearBackground(RAYWHITE); DrawText("MUSIC SHOULD BE PLAYING!", 255, 200, 20, LIGHTGRAY); DrawRectangle(200, 250, 400, 12, LIGHTGRAY); DrawRectangle(200, 250, (int)timePlayed, 12, MAROON); EndDrawing(); //---------------------------------------------------------------------------------- } // De-Initialization //-------------------------------------------------------------------------------------- CloseAudioDevice(); // Close audio device (music streaming is automatically stopped) CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- return 0; }