Browse Source

REVIEWED: Advance template

pull/1860/head
raysan5 3 years ago
parent
commit
de4611ecf6
8 changed files with 65 additions and 75 deletions
  1. +5
    -5
      templates/advance_game/Makefile
  2. +41
    -41
      templates/advance_game/advance_game.c
  3. +3
    -5
      templates/advance_game/screen_ending.c
  4. +3
    -5
      templates/advance_game/screen_gameplay.c
  5. +6
    -8
      templates/advance_game/screen_logo.c
  6. +3
    -5
      templates/advance_game/screen_options.c
  7. +3
    -5
      templates/advance_game/screen_title.c
  8. +1
    -1
      templates/advance_game/screens.h

+ 5
- 5
templates/advance_game/Makefile View File

@ -371,11 +371,11 @@ endif
# Define all source files required # Define all source files required
PROJECT_SOURCE_FILES ?= \ PROJECT_SOURCE_FILES ?= \
advance_game.c \ advance_game.c \
screens/screen_logo.c \
screens/screen_title.c \
screens/screen_options.c \
screens/screen_gameplay.c \
screens/screen_ending.c
screen_logo.c \
screen_title.c \
screen_options.c \
screen_gameplay.c \
screen_ending.c
# Define all object files from source files # Define all object files from source files
OBJS = $(patsubst %.c, %.o, $(PROJECT_SOURCE_FILES)) OBJS = $(patsubst %.c, %.o, $(PROJECT_SOURCE_FILES))

+ 41
- 41
templates/advance_game/advance_game.c View File

@ -13,12 +13,15 @@
********************************************************************************************/ ********************************************************************************************/
#include "raylib.h" #include "raylib.h"
#include "screens/screens.h" // NOTE: Defines global variable: currentScreen
#include "screens.h" // NOTE: Declares global (extern) variables and screens functions
#if defined(PLATFORM_WEB) #if defined(PLATFORM_WEB)
#include <emscripten/emscripten.h> #include <emscripten/emscripten.h>
#endif #endif
//----------------------------------------------------------------------------------
// Shared Variables Definition (global)
//----------------------------------------------------------------------------------
GameScreen currentScreen = 0; GameScreen currentScreen = 0;
Font font = { 0 }; Font font = { 0 };
Music music = { 0 }; Music music = { 0 };
@ -27,8 +30,8 @@ Sound fxCoin = { 0 };
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Global Variables Definition (local to this module) // Global Variables Definition (local to this module)
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
const int screenWidth = 800;
const int screenHeight = 450;
static const int screenWidth = 800;
static const int screenHeight = 450;
// Required variables to manage screen transitions (fade-in, fade-out) // Required variables to manage screen transitions (fade-in, fade-out)
static float transAlpha = 0.0f; static float transAlpha = 0.0f;
@ -37,19 +40,16 @@ static bool transFadeOut = false;
static int transFromScreen = -1; static int transFromScreen = -1;
static int transToScreen = -1; static int transToScreen = -1;
// NOTE: Some global variables that require to be visible for all screens,
// are defined in screens.h (i.e. currentScreen)
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Local Functions Declaration // Local Functions Declaration
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
static void ChangeToScreen(int screen); // No transition effect
static void ChangeToScreen(int screen); // Change to screen, no transition effect
static void TransitionToScreen(int screen);
static void UpdateTransition(void);
static void DrawTransition(void);
static void TransitionToScreen(int screen); // Request transition to next screen
static void UpdateTransition(void); // Update transition effect
static void DrawTransition(void); // Draw transition effect (full-screen rectangle)
static void UpdateDrawFrame(void); // Update and Draw one frame
static void UpdateDrawFrame(void); // Update and draw one frame
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Main entry point // Main entry point
@ -66,7 +66,7 @@ int main(void)
font = LoadFont("resources/mecha.png"); font = LoadFont("resources/mecha.png");
music = LoadMusicStream("resources/ambient.ogg"); music = LoadMusicStream("resources/ambient.ogg");
fxCoin = LoadSound("resources/coin.wav"); fxCoin = LoadSound("resources/coin.wav");
SetMusicVolume(music, 1.0f); SetMusicVolume(music, 1.0f);
PlayMusicStream(music); PlayMusicStream(music);
@ -89,7 +89,7 @@ int main(void)
// De-Initialization // De-Initialization
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Unload current screen data before closing // Unload current screen data before closing
switch (currentScreen) switch (currentScreen)
{ {
@ -99,14 +99,14 @@ int main(void)
case ENDING: UnloadEndingScreen(); break; case ENDING: UnloadEndingScreen(); break;
default: break; default: break;
} }
// Unload all global loaded data (i.e. fonts) here! // Unload all global loaded data (i.e. fonts) here!
UnloadFont(font); UnloadFont(font);
UnloadMusicStream(music); UnloadMusicStream(music);
UnloadSound(fxCoin); UnloadSound(fxCoin);
CloseAudioDevice(); // Close audio context CloseAudioDevice(); // Close audio context
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
@ -129,7 +129,7 @@ static void ChangeToScreen(int screen)
case ENDING: UnloadEndingScreen(); break; case ENDING: UnloadEndingScreen(); break;
default: break; default: break;
} }
// Init next screen // Init next screen
switch (screen) switch (screen)
{ {
@ -139,11 +139,11 @@ static void ChangeToScreen(int screen)
case ENDING: InitEndingScreen(); break; case ENDING: InitEndingScreen(); break;
default: break; default: break;
} }
currentScreen = screen; currentScreen = screen;
} }
// Define transition to next screen
// Request transition to next screen
static void TransitionToScreen(int screen) static void TransitionToScreen(int screen)
{ {
onTransition = true; onTransition = true;
@ -159,13 +159,13 @@ static void UpdateTransition(void)
if (!transFadeOut) if (!transFadeOut)
{ {
transAlpha += 0.05f; transAlpha += 0.05f;
// NOTE: Due to float internal representation, condition jumps on 1.0f instead of 1.05f // NOTE: Due to float internal representation, condition jumps on 1.0f instead of 1.05f
// For that reason we compare against 1.01f, to avoid last frame loading stop // For that reason we compare against 1.01f, to avoid last frame loading stop
if (transAlpha > 1.01f) if (transAlpha > 1.01f)
{ {
transAlpha = 1.0f; transAlpha = 1.0f;
// Unload current screen // Unload current screen
switch (transFromScreen) switch (transFromScreen)
{ {
@ -176,7 +176,7 @@ static void UpdateTransition(void)
case ENDING: UnloadEndingScreen(); break; case ENDING: UnloadEndingScreen(); break;
default: break; default: break;
} }
// Load next screen // Load next screen
switch (transToScreen) switch (transToScreen)
{ {
@ -186,9 +186,9 @@ static void UpdateTransition(void)
case ENDING: InitEndingScreen(); break; case ENDING: InitEndingScreen(); break;
default: break; default: break;
} }
currentScreen = transToScreen; currentScreen = transToScreen;
// Activate fade out effect to next loaded screen // Activate fade out effect to next loaded screen
transFadeOut = true; transFadeOut = true;
} }
@ -196,7 +196,7 @@ static void UpdateTransition(void)
else // Transition fade out logic else // Transition fade out logic
{ {
transAlpha -= 0.02f; transAlpha -= 0.02f;
if (transAlpha < -0.01f) if (transAlpha < -0.01f)
{ {
transAlpha = 0.0f; transAlpha = 0.0f;
@ -220,22 +220,22 @@ static void UpdateDrawFrame(void)
// Update // Update
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
UpdateMusicStream(music); // NOTE: Music keeps playing between screens UpdateMusicStream(music); // NOTE: Music keeps playing between screens
if (!onTransition) if (!onTransition)
{ {
switch(currentScreen)
switch(currentScreen)
{ {
case LOGO:
case LOGO:
{ {
UpdateLogoScreen(); UpdateLogoScreen();
if (FinishLogoScreen()) TransitionToScreen(TITLE); if (FinishLogoScreen()) TransitionToScreen(TITLE);
} break; } break;
case TITLE:
case TITLE:
{ {
UpdateTitleScreen(); UpdateTitleScreen();
if (FinishTitleScreen() == 1) TransitionToScreen(OPTIONS); if (FinishTitleScreen() == 1) TransitionToScreen(OPTIONS);
else if (FinishTitleScreen() == 2) TransitionToScreen(GAMEPLAY); else if (FinishTitleScreen() == 2) TransitionToScreen(GAMEPLAY);
@ -243,22 +243,22 @@ static void UpdateDrawFrame(void)
case OPTIONS: case OPTIONS:
{ {
UpdateOptionsScreen(); UpdateOptionsScreen();
if (FinishOptionsScreen()) TransitionToScreen(TITLE); if (FinishOptionsScreen()) TransitionToScreen(TITLE);
} break; } break;
case GAMEPLAY: case GAMEPLAY:
{ {
UpdateGameplayScreen(); UpdateGameplayScreen();
if (FinishGameplayScreen() == 1) TransitionToScreen(ENDING); if (FinishGameplayScreen() == 1) TransitionToScreen(ENDING);
//else if (FinishGameplayScreen() == 2) TransitionToScreen(TITLE); //else if (FinishGameplayScreen() == 2) TransitionToScreen(TITLE);
} break; } break;
case ENDING: case ENDING:
{
{
UpdateEndingScreen(); UpdateEndingScreen();
if (FinishEndingScreen() == 1) TransitionToScreen(TITLE); if (FinishEndingScreen() == 1) TransitionToScreen(TITLE);
} break; } break;
@ -267,14 +267,14 @@ static void UpdateDrawFrame(void)
} }
else UpdateTransition(); // Update transition (fade-in, fade-out) else UpdateTransition(); // Update transition (fade-in, fade-out)
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Draw // Draw
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
switch(currentScreen)
switch(currentScreen)
{ {
case LOGO: DrawLogoScreen(); break; case LOGO: DrawLogoScreen(); break;
case TITLE: DrawTitleScreen(); break; case TITLE: DrawTitleScreen(); break;
@ -283,12 +283,12 @@ static void UpdateDrawFrame(void)
case ENDING: DrawEndingScreen(); break; case ENDING: DrawEndingScreen(); break;
default: break; default: break;
} }
// Draw full screen rectangle in front of everything // Draw full screen rectangle in front of everything
if (onTransition) DrawTransition(); if (onTransition) DrawTransition();
//DrawFPS(10, 10); //DrawFPS(10, 10);
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
} }

templates/advance_game/screens/screen_ending.c → templates/advance_game/screen_ending.c View File

@ -27,12 +27,10 @@
#include "screens.h" #include "screens.h"
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Global Variables Definition (local to this module)
// Module Variables Definition (local)
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Ending screen global variables
static int framesCounter;
static int finishScreen;
static int framesCounter = 0;
static int finishScreen = 0;
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Ending Screen Functions Definition // Ending Screen Functions Definition

templates/advance_game/screens/screen_gameplay.c → templates/advance_game/screen_gameplay.c View File

@ -27,12 +27,10 @@
#include "screens.h" #include "screens.h"
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Global Variables Definition (local to this module)
// Module Variables Definition (local)
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Gameplay screen global variables
static int framesCounter;
static int finishScreen;
static int framesCounter = 0;
static int finishScreen = 0;
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Gameplay Screen Functions Definition // Gameplay Screen Functions Definition

templates/advance_game/screens/screen_logo.c → templates/advance_game/screen_logo.c View File

@ -27,10 +27,8 @@
#include "screens.h" #include "screens.h"
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Global Variables Definition (local to this module)
// Module Variables Definition (local)
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Logo screen global variables
static int framesCounter = 0; static int framesCounter = 0;
static int finishScreen = 0; static int finishScreen = 0;
@ -60,12 +58,12 @@ void InitLogoScreen(void)
finishScreen = 0; finishScreen = 0;
framesCounter = 0; framesCounter = 0;
lettersCount = 0; lettersCount = 0;
logoPositionX = GetScreenWidth()/2 - 128; logoPositionX = GetScreenWidth()/2 - 128;
logoPositionY = GetScreenHeight()/2 - 128; logoPositionY = GetScreenHeight()/2 - 128;
for (int i = 0; i < 8; i++) raylib[i] = '\0'; for (int i = 0; i < 8; i++) raylib[i] = '\0';
state = 0; state = 0;
alpha = 1.0f; alpha = 1.0f;
} }
@ -129,7 +127,7 @@ void UpdateLogoScreen(void)
else if (state == 4) else if (state == 4)
{ {
framesCounter++; framesCounter++;
if (framesCounter > 100) if (framesCounter > 100)
{ {
alpha -= 0.02f; alpha -= 0.02f;
@ -186,7 +184,7 @@ void DrawLogoScreen(void)
DrawRectangle(GetScreenWidth()/2 - 112, GetScreenHeight()/2 - 112, 224, 224, Fade(RAYWHITE, alpha)); DrawRectangle(GetScreenWidth()/2 - 112, GetScreenHeight()/2 - 112, 224, 224, Fade(RAYWHITE, alpha));
DrawText(raylib, GetScreenWidth()/2 - 44, GetScreenHeight()/2 + 48, 50, Fade(BLACK, alpha)); DrawText(raylib, GetScreenWidth()/2 - 44, GetScreenHeight()/2 + 48, 50, Fade(BLACK, alpha));
if (framesCounter > 20) DrawText("powered by", logoPositionX, logoPositionY - 27, 20, Fade(DARKGRAY, alpha)); if (framesCounter > 20) DrawText("powered by", logoPositionX, logoPositionY - 27, 20, Fade(DARKGRAY, alpha));
} }
} }

templates/advance_game/screens/screen_options.c → templates/advance_game/screen_options.c View File

@ -27,12 +27,10 @@
#include "screens.h" #include "screens.h"
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Global Variables Definition (local to this module)
// Module Variables Definition (local)
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Options screen global variables
static int framesCounter;
static int finishScreen;
static int framesCounter = 0;
static int finishScreen = 0;
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Options Screen Functions Definition // Options Screen Functions Definition

templates/advance_game/screens/screen_title.c → templates/advance_game/screen_title.c View File

@ -27,12 +27,10 @@
#include "screens.h" #include "screens.h"
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Global Variables Definition (local to this module)
// Module Variables Definition (local)
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Title screen global variables
static int framesCounter;
static int finishScreen;
static int framesCounter = 0;
static int finishScreen = 0;
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Title Screen Functions Definition // Title Screen Functions Definition

templates/advance_game/screens/screens.h → templates/advance_game/screens.h View File

@ -32,7 +32,7 @@
typedef enum GameScreen { LOGO = 0, TITLE, OPTIONS, GAMEPLAY, ENDING } GameScreen; typedef enum GameScreen { LOGO = 0, TITLE, OPTIONS, GAMEPLAY, ENDING } GameScreen;
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Global Variables Definition
// Global Variables Declaration (shared by several modules)
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
extern GameScreen currentScreen; extern GameScreen currentScreen;
extern Font font; extern Font font;

Loading…
Cancel
Save