forked from raysan5/raylib
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b3b2d50
commit dfc6dc2
Showing
3 changed files
with
355 additions
and
109 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
/******************************************************************************************* | ||
* | ||
* raylib [core] examples - basic screen manager | ||
* | ||
* NOTE: This example illustrates a very simple screen manager based on a states machines | ||
* | ||
* Example originally created with raylib 4.0, last time updated with raylib 4.0 | ||
* | ||
* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, | ||
* BSD-like license that allows static linking with closed source software | ||
* | ||
* Copyright (c) 2021-2024 Ramon Santamaria (@raysan5) | ||
* | ||
********************************************************************************************/ | ||
|
||
#include "raylib.h" | ||
|
||
//------------------------------------------------------------------------------------------ | ||
// Types and Structures Definition | ||
//------------------------------------------------------------------------------------------ | ||
typedef enum GameScreen { LOGO = 0, TITLE, GAMEPLAY, ENDING } GameScreen; | ||
|
||
//------------------------------------------------------------------------------------ | ||
// Program main entry point | ||
//------------------------------------------------------------------------------------ | ||
int ios_main(int argc, char * argv[]) | ||
{ | ||
// Initialization | ||
//-------------------------------------------------------------------------------------- | ||
const int screenWidth = 800; | ||
const int screenHeight = 450; | ||
|
||
InitWindow(screenWidth, screenHeight, "raylib [core] example - basic screen manager"); | ||
|
||
GameScreen currentScreen = LOGO; | ||
|
||
// TODO: Initialize all required variables and load all required data here! | ||
|
||
int framesCounter = 0; // Useful to count frames | ||
|
||
SetTargetFPS(60); // Set desired framerate (frames-per-second) | ||
//-------------------------------------------------------------------------------------- | ||
|
||
// Main game loop | ||
while (!WindowShouldClose()) // Detect window close button or ESC key | ||
{ | ||
// Update | ||
//---------------------------------------------------------------------------------- | ||
switch(currentScreen) | ||
{ | ||
case LOGO: | ||
{ | ||
// TODO: Update LOGO screen variables here! | ||
|
||
framesCounter++; // Count frames | ||
|
||
// Wait for 2 seconds (120 frames) before jumping to TITLE screen | ||
if (framesCounter > 120) | ||
{ | ||
currentScreen = TITLE; | ||
} | ||
} break; | ||
case TITLE: | ||
{ | ||
// TODO: Update TITLE screen variables here! | ||
|
||
// Press enter to change to GAMEPLAY screen | ||
if (IsKeyPressed(KEY_ENTER) || IsGestureDetected(GESTURE_TAP)) | ||
{ | ||
currentScreen = GAMEPLAY; | ||
} | ||
} break; | ||
case GAMEPLAY: | ||
{ | ||
// TODO: Update GAMEPLAY screen variables here! | ||
|
||
// Press enter to change to ENDING screen | ||
if (IsKeyPressed(KEY_ENTER) || IsGestureDetected(GESTURE_TAP)) | ||
{ | ||
currentScreen = ENDING; | ||
} | ||
} break; | ||
case ENDING: | ||
{ | ||
// TODO: Update ENDING screen variables here! | ||
|
||
// Press enter to return to TITLE screen | ||
if (IsKeyPressed(KEY_ENTER) || IsGestureDetected(GESTURE_TAP)) | ||
{ | ||
currentScreen = TITLE; | ||
} | ||
} break; | ||
default: break; | ||
} | ||
//---------------------------------------------------------------------------------- | ||
|
||
// Draw | ||
//---------------------------------------------------------------------------------- | ||
BeginDrawing(); | ||
|
||
ClearBackground(RAYWHITE); | ||
|
||
switch(currentScreen) | ||
{ | ||
case LOGO: | ||
{ | ||
// TODO: Draw LOGO screen here! | ||
DrawText("LOGO SCREEN", 20, 20, 40, LIGHTGRAY); | ||
DrawText("WAIT for 2 SECONDS...", 290, 220, 20, GRAY); | ||
|
||
} break; | ||
case TITLE: | ||
{ | ||
// TODO: Draw TITLE screen here! | ||
DrawRectangle(0, 0, screenWidth, screenHeight, GREEN); | ||
DrawText("TITLE SCREEN", 20, 20, 40, DARKGREEN); | ||
DrawText("PRESS ENTER or TAP to JUMP to GAMEPLAY SCREEN", 120, 220, 20, DARKGREEN); | ||
|
||
} break; | ||
case GAMEPLAY: | ||
{ | ||
// TODO: Draw GAMEPLAY screen here! | ||
DrawRectangle(0, 0, screenWidth, screenHeight, PURPLE); | ||
DrawText("GAMEPLAY SCREEN", 20, 20, 40, MAROON); | ||
DrawText("PRESS ENTER or TAP to JUMP to ENDING SCREEN", 130, 220, 20, MAROON); | ||
|
||
} break; | ||
case ENDING: | ||
{ | ||
// TODO: Draw ENDING screen here! | ||
DrawRectangle(0, 0, screenWidth, screenHeight, BLUE); | ||
DrawText("ENDING SCREEN", 20, 20, 40, DARKBLUE); | ||
DrawText("PRESS ENTER or TAP to RETURN to TITLE SCREEN", 120, 220, 20, DARKBLUE); | ||
|
||
} break; | ||
default: break; | ||
} | ||
|
||
EndDrawing(); | ||
//---------------------------------------------------------------------------------- | ||
} | ||
|
||
// De-Initialization | ||
//-------------------------------------------------------------------------------------- | ||
|
||
// TODO: Unload all loaded data (textures, fonts, audio) here! | ||
|
||
CloseWindow(); // Close window and OpenGL context | ||
//-------------------------------------------------------------------------------------- | ||
|
||
return 0; | ||
} |
Oops, something went wrong.