|
|
- /*******************************************************************************************
- *
- * JUST DO [GLOBAL GAME JAM 2015]
- *
- * Experimental puzzle game that lets the user try to find a logic
- * solution to different shape-color-based situations.
- *
- * This game has been created using raylib 1.6 (www.raylib.com)
- * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
- *
- * Copyright (c) 2015 Ramon Santamaria (@raysan5)
- *
- ********************************************************************************************/
-
- #include "raylib.h"
- #include "screens/screens.h" // NOTE: Defines global variable: currentScreen
-
- #if defined(PLATFORM_WEB)
- #include <emscripten/emscripten.h>
- #endif
-
- //----------------------------------------------------------------------------------
- // Global Variables Definition (local to this module)
- //----------------------------------------------------------------------------------
- const int screenWidth = 1280; // Moved to screens.h
- const int screenHeight = 720; // Moved to screens.h
-
- // Required variables to manage screen transitions (fade-in, fade-out)
- float transAlpha = 0;
- bool onTransition = false;
- bool transFadeOut = false;
- int transFromScreen = -1;
- int transToScreen = -1;
- int framesCounter = 0;
-
- //static Sound levelWin;
- Music music;
-
- //----------------------------------------------------------------------------------
- // Local Functions Declaration
- //----------------------------------------------------------------------------------
- void TransitionToScreen(int screen);
- void UpdateTransition(void);
- void DrawTransition(void);
-
- void UpdateDrawFrame(void); // Update and Draw one frame
-
- //----------------------------------------------------------------------------------
- // Main entry point
- //----------------------------------------------------------------------------------
- int main(void)
- {
- // Initialization (Note windowTitle is unused on Android)
- //---------------------------------------------------------
- InitWindow(screenWidth, screenHeight, "JUST DO [GGJ15]");
-
- // Load global data here (assets that must be available in all screens, i.e. fonts)
- InitAudioDevice();
-
- levelWin = LoadSound("resources/win.wav");
- music = LoadMusicStream("resources/ambient.ogg");
-
- // Setup and Init first screen
- currentScreen = LOGO;
- InitLogoScreen();
-
- #if defined(PLATFORM_WEB)
- emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
- #else
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
-
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- UpdateDrawFrame();
- }
- #endif
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
-
- // Unload all global loaded data (i.e. fonts) here!
- UnloadSound(levelWin);
- UnloadMusicStream(music);
-
- CloseAudioDevice();
-
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
- }
-
- //----------------------------------------------------------------------------------
- // Local Functions Definition
- //----------------------------------------------------------------------------------
- void TransitionToScreen(int screen)
- {
- onTransition = true;
- transFromScreen = currentScreen;
- transToScreen = screen;
- }
-
- void UpdateTransition(void)
- {
- if (!transFadeOut)
- {
- transAlpha += 0.02f;
-
- if (transAlpha >= 1.0)
- {
- transAlpha = 1.0;
- currentScreen = transToScreen;
- transFadeOut = true;
- framesCounter = 0;
- }
- }
- else // Transition fade out logic
- {
- transAlpha -= 0.02f;
-
- if (transAlpha <= 0)
- {
- transAlpha = 0;
- transFadeOut = false;
- onTransition = false;
- transFromScreen = -1;
- transToScreen = -1;
- }
- }
- }
-
- void DrawTransition(void)
- {
- DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, transAlpha));
- }
-
- void UpdateDrawFrame(void)
- {
- // Update
- //----------------------------------------------------------------------------------
- if (currentScreen != LOGO) UpdateMusicStream(music);
-
- if (!onTransition)
- {
- if (IsKeyPressed('0'))
- {
- TransitionToScreen(LEVEL00);
- InitLevel00Screen();
- }
- else if (IsKeyPressed('1'))
- {
- TransitionToScreen(LEVEL01);
- InitLevel01Screen();
- }
- else if (IsKeyPressed('2'))
- {
- TransitionToScreen(LEVEL02);
- InitLevel02Screen();
- }
- else if (IsKeyPressed('3'))
- {
- TransitionToScreen(LEVEL03);
- InitLevel03Screen();
- }
- else if (IsKeyPressed('4'))
- {
- TransitionToScreen(LEVEL04);
- InitLevel04Screen();
- }
- else if (IsKeyPressed('5'))
- {
- TransitionToScreen(LEVEL05);
- InitLevel05Screen();
- }
- else if (IsKeyPressed('6'))
- {
- TransitionToScreen(LEVEL06);
- InitLevel06Screen();
- }
- else if (IsKeyPressed('7'))
- {
- TransitionToScreen(LEVEL07);
- InitLevel07Screen();
- }
- else if (IsKeyPressed('8'))
- {
- TransitionToScreen(LEVEL08);
- InitLevel08Screen();
- }
- else if (IsKeyPressed('9'))
- {
- TransitionToScreen(LEVEL09);
- InitLevel08Screen();
- }
-
- switch(currentScreen)
- {
- case LOGO:
- {
- UpdateLogoScreen();
-
- if (FinishLogoScreen())
- {
- UnloadLogoScreen();
- TransitionToScreen(LEVEL00);
- InitLevel00Screen();
-
- PlayMusicStream(music);
- SetMusicVolume(music, 0.6f);
- }
- } break;
- case LEVEL00:
- {
- UpdateLevel00Screen();
-
- if (FinishLevel00Screen())
- {
- UnloadLevel00Screen();
- TransitionToScreen(LEVEL01);
- InitLevel01Screen();
- }
- } break;
- case LEVEL01:
- {
- UpdateLevel01Screen();
-
- if (FinishLevel01Screen())
- {
- UnloadLevel01Screen();
- TransitionToScreen(LEVEL02);
- InitLevel02Screen();
- }
- } break;
- case LEVEL02:
- {
- UpdateLevel02Screen();
-
- if (FinishLevel02Screen())
- {
- UnloadLevel02Screen();
- TransitionToScreen(LEVEL03);
- InitLevel03Screen();
- }
- } break;
- case LEVEL03:
- {
- UpdateLevel03Screen();
-
- if (FinishLevel03Screen())
- {
- UnloadLevel03Screen();
- TransitionToScreen(LEVEL04);
- InitLevel04Screen();
- }
- } break;
- case LEVEL04:
- {
- UpdateLevel04Screen();
-
- if (FinishLevel04Screen())
- {
- UnloadLevel04Screen();
- TransitionToScreen(LEVEL05);
- InitLevel05Screen();
- }
- } break;
- case LEVEL05:
- {
- UpdateLevel05Screen();
-
- if (FinishLevel05Screen())
- {
- UnloadLevel05Screen();
- TransitionToScreen(LEVEL06);
- InitLevel06Screen();
- }
- } break;
- case LEVEL06:
- {
- UpdateLevel06Screen();
-
- if (FinishLevel06Screen())
- {
- UnloadLevel06Screen();
- TransitionToScreen(LEVEL07);
- InitLevel07Screen();
- }
- } break;
- case LEVEL07:
- {
- UpdateLevel07Screen();
-
- if (FinishLevel07Screen())
- {
- UnloadLevel07Screen();
- TransitionToScreen(LEVEL08);
- InitLevel08Screen();
- }
- } break;
- case LEVEL08:
- {
- UpdateLevel08Screen();
-
- if (FinishLevel08Screen())
- {
- UnloadLevel08Screen();
- TransitionToScreen(LEVEL09);
- InitLevel09Screen();
- }
- } break;
- case LEVEL09:
- {
- UpdateLevel09Screen();
-
- if (FinishLevel09Screen())
- {
- UnloadLevel09Screen();
- TransitionToScreen(LEVEL00);
- InitLevel00Screen();
- }
- } break;
- default: break;
- }
- }
- else UpdateTransition(); // Update transition (fade-in, fade-out)
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- switch(currentScreen)
- {
- case LOGO: DrawLogoScreen(); break;
- case LEVEL00: DrawLevel00Screen(); break;
- case LEVEL01: DrawLevel01Screen(); break;
- case LEVEL02: DrawLevel02Screen(); break;
- case LEVEL03: DrawLevel03Screen(); break;
- case LEVEL04: DrawLevel04Screen(); break;
- case LEVEL05: DrawLevel05Screen(); break;
- case LEVEL06: DrawLevel06Screen(); break;
- case LEVEL07: DrawLevel07Screen(); break;
- case LEVEL08: DrawLevel08Screen(); break;
- case LEVEL09: DrawLevel09Screen(); break;
- default: break;
- }
-
- if (onTransition) DrawTransition();
-
- EndDrawing();
- //----------------------------------------------------------------------------------
- }
|