From 422b9f734ed83ab7be953f99144d7c934473dd1d Mon Sep 17 00:00:00 2001 From: Mark B Date: Thu, 28 Jul 2022 12:02:47 -0400 Subject: [PATCH] added ending screen --- Makefile | 3 ++- Makefile.emscripten | 3 ++- README.md | 3 ++- doc-assets/preview1.png | Bin 0 -> 6882 bytes doc-assets/preview2.png | Bin 0 -> 7492 bytes src/Ending.c | 40 ++++++++++++++++++++++++++++++++++++++++ src/Gameplay.c | 29 ++++++++++++++--------------- src/Main.c | 16 ++++++++++++++-- src/Screens.h | 8 +++++++- src/Timers.h | 3 +-- 10 files changed, 82 insertions(+), 23 deletions(-) create mode 100644 doc-assets/preview1.png create mode 100644 doc-assets/preview2.png create mode 100644 src/Ending.c diff --git a/Makefile b/Makefile index 15a299b..8bab3c7 100644 --- a/Makefile +++ b/Makefile @@ -382,7 +382,8 @@ PROJECT_SOURCE_FILES ?= \ $(PROJECT_SOURCE_PATH)/Title.c \ $(PROJECT_SOURCE_PATH)/Credits.c \ $(PROJECT_SOURCE_PATH)/Gameover.c \ - $(PROJECT_SOURCE_PATH)/Options.c + $(PROJECT_SOURCE_PATH)/Options.c \ + $(PROJECT_SOURCE_PATH)/Ending.c # Define all object files from source files OBJS = $(patsubst %.c, %.o, $(PROJECT_SOURCE_FILES)) diff --git a/Makefile.emscripten b/Makefile.emscripten index 8defc54..96046ae 100644 --- a/Makefile.emscripten +++ b/Makefile.emscripten @@ -382,7 +382,8 @@ PROJECT_SOURCE_FILES ?= \ $(PROJECT_SOURCE_PATH)/Title.c \ $(PROJECT_SOURCE_PATH)/Credits.c \ $(PROJECT_SOURCE_PATH)/Gameover.c \ - $(PROJECT_SOURCE_PATH)/Options.c + $(PROJECT_SOURCE_PATH)/Options.c \ + $(PROJECT_SOURCE_PATH)/Ending.c # Define all object files from source files OBJS = $(patsubst %.c, %.o, $(PROJECT_SOURCE_FILES)) diff --git a/README.md b/README.md index d381f3b..a2ee764 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ A dumb raylib test which you can play [here](https://canneddonuts.itch.io/avoid- ## To-do - a build guide -- multiple stages - a tutorial ## Note @@ -11,3 +10,5 @@ This games code more specifically 'Main.c' is a retyped version of this [repo](h ## Preview ![Alt Text](./doc-assets/preview.png) +![Alt Text](./doc-assets/preview1.png) +![Alt Text](./doc-assets/preview2.png) diff --git a/doc-assets/preview1.png b/doc-assets/preview1.png new file mode 100644 index 0000000000000000000000000000000000000000..09bc60b06bc7bf4df63d83a795963e783cedeeab GIT binary patch literal 6882 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 XPgxatTWNsrL4gMvI`_)d5n=xW_HugV literal 0 HcmV?d00001 diff --git a/src/Ending.c b/src/Ending.c new file mode 100644 index 0000000..6d7e228 --- /dev/null +++ b/src/Ending.c @@ -0,0 +1,40 @@ +/* +- Avoid ~ a game by Canneddonuts +- Filename ~ Ending.c +- Author ~ Return0ne +- 2022 +- *no license* +*/ + +#include "../include/raylib.h" + +#include "Screens.h" +#include "Textures.h" + +int finishfromEndingScreen = 0; + +void InitEndingScreen(void) +{ + finishfromEndingScreen = 0; +} + +void UpdateEndingScreen(void) +{ + +} + +void DrawEndingScreen(void) +{ + DrawTexture(background, 0, 0, GOLD); + DrawText("THANK YOU SO MUCH FOR PLAYING!!!", 145, 20, 30, GOLD); + DrawText("Canneddonuts 2022", 500, 420, 30, WHITE); +} + +void UnloadEndingScreen(void) +{ +} + +int FinishEndingScreen(void) +{ + return finishfromEndingScreen; +} diff --git a/src/Gameplay.c b/src/Gameplay.c index f06d1e1..94e89fa 100644 --- a/src/Gameplay.c +++ b/src/Gameplay.c @@ -24,7 +24,7 @@ void SetEnemyLevel(void) switch (level) { case LEVEL1: enemy.speed *= 1.0f; break; case LEVEL2: enemy.speed *= 2.0f; break; - case LEVEL3: enemy.speed *= 3.0f; break; + case LEVEL3: enemy.speed *= 2.0f; break; } } @@ -46,7 +46,7 @@ void InitGameplayScreen(void) level = LEVEL1; - SetMasterVolume(0.5); + globalTimer = 0; player.currentframe = 0; player.speed = 300.0f; @@ -68,7 +68,6 @@ void InitGameplayScreen(void) player_iframeTimer = 0; player_in = false; player.color = RAYWHITE; - player_flashtimer = 0; enemy.currentframe = 0; enemy.hp = 5; @@ -90,7 +89,6 @@ void InitGameplayScreen(void) enemy.color = RAYWHITE; enemy_hurt = false; enemy_iframetimer = 0; - enemy_flashtimer = 0; feather.hitbox = (Rectangle) { GetRandomValue(0, GetScreenWidth() - feather_sprite.width), @@ -148,13 +146,12 @@ void DamagePlayer(void) void UpdateTimers(void) { score++; - player_flashtimer++; - enemy_flashtimer++; + globalTimer++; if (player_in) { player_iframeTimer++; player.currentframe = 1; - if (player_flashtimer % 2 == 0) player.color = BLANK; + if (globalTimer % 2 == 0) player.color = BLANK; else player.color = RAYWHITE; if (player_iframeTimer >= 60) { player_in = false; @@ -165,7 +162,7 @@ void UpdateTimers(void) if (enemy_hurt) { enemy_iframetimer++; enemy.currentframe = 1; - if (enemy_flashtimer % 2 == 0) enemy.color = BLANK; + if (globalTimer % 2 == 0) enemy.color = BLANK; else enemy.color = RAYWHITE; if (enemy_iframetimer >= 60) { enemy_hurt = false; @@ -178,6 +175,8 @@ void UpdateGameplayScreen(void) { if (INPUT_OPTION_PRESSED) pause = !pause; + if (level > 2) finishfromGameplayScreen = 3; + if (!pause) { if (INPUT_LEFT_DOWN) player.hitbox.x -= GetFrameTime() * player.speed; @@ -230,6 +229,7 @@ void UpdateGameplayScreen(void) if (IsKeyPressed(KEY_NINE)) ammo = 99; if (IsKeyPressed(KEY_ZERO)) ammo = 0; if (IsKeyPressed(KEY_R)) finishfromGameplayScreen = 2; + if (IsKeyPressed(KEY_W)) finishfromGameplayScreen = 3; if (player.hp <= 0) finishfromGameplayScreen = 1; @@ -258,8 +258,8 @@ void UpdateGameplayScreen(void) case 0: player.hp++; feather.power = 1; break; case 1: ammo++; if (player.hp < 5) feather.power = 0; else feather.power = 1; break; } - if (!mute) PlaySoundMulti(fxfeather); - feather.hitbox.x = GetRandomValue(0, GetScreenWidth() - feather_sprite.width); + if (!mute && player.hp < 5) PlaySoundMulti(fxfeather); + feather.hitbox.x = GetRandomValue(0, 600); feather.hitbox.y = GetRandomValue(0, GetScreenHeight() - feather_sprite.height); } @@ -298,7 +298,7 @@ void UpdateGameplayScreen(void) switch (level) { case LEVEL1: fireworks[i].speed.x = 300.0f; break; case LEVEL2: fireworks[i].speed.x = 600.0f; break; - case LEVEL3: fireworks[i].speed.x = 1200.0f; break; + case LEVEL3: fireworks[i].speed.x = 900.0f; break; } } } else pauseTimer++; @@ -308,7 +308,7 @@ void DrawGameplayScreen(void) { switch (level) { case LEVEL1: DrawTexture(background, 0, 0, RAYWHITE); break; - case LEVEL2: DrawTexture(background, 0, 0, BLUE); break; + case LEVEL2: DrawTexture(background, 0, 0, ORANGE); break; case LEVEL3: DrawTexture(background, 0, 0, RED); break; } DrawFPS(10, 430); @@ -324,11 +324,10 @@ void DrawGameplayScreen(void) } DrawText(TextFormat("enemy.hitbox.y: %f", enemy.hitbox.y), 10, 200, 20, GREEN); DrawText(TextFormat("enemy.speed: %f", enemy.speed), 10, 220, 20, GREEN); - DrawText(TextFormat("enemy_flashtimer: %i", enemy_flashtimer), 10, 240, 20, GREEN); + DrawText(TextFormat("globalTimer: %i", globalTimer), 10, 240, 20, GREEN); DrawText(TextFormat("firework_sprite.width: %d", firework_sprite.width), 10, 260, 20, GREEN); DrawText(TextFormat("player_iframeTimer: %d", player_iframeTimer), 10, 280, 20, GREEN); - DrawText(TextFormat("player_flashtimer: %d", player_flashtimer), 10, 300, 20, GREEN); - DrawText(TextFormat("player_in: %d", player_in), 10, 320, 20, GREEN); + DrawText(TextFormat("player_in: %d", player_in), 10, 300, 20, GREEN); } if (feather.active) DrawTexture(feather_sprite, feather.sprite_pos.x, feather.sprite_pos.y, feather.color); DrawTextureRec(enemy_sprite, enemy.frameRec, enemy.sprite_pos, enemy.color); diff --git a/src/Main.c b/src/Main.c index ddf22e5..b756f44 100644 --- a/src/Main.c +++ b/src/Main.c @@ -72,6 +72,8 @@ void gameSetup(void) // asset loading & setting of variable values currentScreen = TITLE; background = LoadTexture("assets/gfx/background.png"); + + SetMasterVolume(0.5); } @@ -98,6 +100,7 @@ static void update_transition(void) case GAMEOVER: UnloadGameoverScreen(); break; case CREDITS: UnloadCreditsScreen(); break; case OPTIONS: UnloadOptionsScreen(); break; + case ENDING: UnloadEndingScreen(); break; default: break; } @@ -107,6 +110,7 @@ static void update_transition(void) case GAMEOVER: InitGameoverScreen(); break; case CREDITS: InitCreditsScreen(); break; case OPTIONS: InitOptionsScreen(); break; + case ENDING: InitEndingScreen(); break; default: break; } @@ -157,8 +161,11 @@ static void update_draw_frame(void) case GAMEPLAY: { UpdateGameplayScreen(); - if (FinishGameplayScreen() == 1) transition_to_screen(GAMEOVER); - else if (FinishGameplayScreen() == 2) transition_to_screen(TITLE); + switch (FinishGameplayScreen()) { + case 1: transition_to_screen(GAMEOVER); break; + case 2: transition_to_screen(TITLE); break; + case 3: transition_to_screen(ENDING); break; + } } break; case GAMEOVER: { UpdateGameoverScreen(); @@ -171,6 +178,9 @@ static void update_draw_frame(void) if (FinishOptionsScreen() == 1) transition_to_screen(TITLE); } break; + case ENDING: { + UpdateEndingScreen(); + } break; default: break; } } else update_transition(); @@ -185,6 +195,7 @@ static void update_draw_frame(void) case GAMEPLAY: DrawGameplayScreen(); break; case GAMEOVER: DrawGameoverScreen(); break; case OPTIONS: DrawOptionsScreen(); break; + case ENDING: DrawEndingScreen(); break; default: break; } @@ -201,6 +212,7 @@ static void unloadGame(void) case GAMEOVER: UnloadGameoverScreen(); break; case CREDITS: UnloadCreditsScreen(); break; case OPTIONS: UnloadOptionsScreen(); break; + case ENDING: UnloadEndingScreen(); break; default: break; } diff --git a/src/Screens.h b/src/Screens.h index 4a1b79f..78aa3a1 100644 --- a/src/Screens.h +++ b/src/Screens.h @@ -9,7 +9,7 @@ #ifndef SCREENS_HEADER #define SCREENS_HEADER -typedef enum GameScreen { TITLE = 0, GAMEPLAY, GAMEOVER, CREDITS, OPTIONS } GameScreen; +typedef enum GameScreen { TITLE = 0, GAMEPLAY, GAMEOVER, CREDITS, OPTIONS, ENDING } GameScreen; extern GameScreen currentScreen; @@ -44,4 +44,10 @@ void DrawOptionsScreen(void); void UnloadOptionsScreen(void); int FinishOptionsScreen(void); +void InitEndingScreen(void); +void UpdateEndingScreen(void); +void DrawEndingScreen(void); +void UnloadEndingScreen(void); +int FinishEndingScreen(void); + #endif diff --git a/src/Timers.h b/src/Timers.h index 1830b1e..0687cdc 100644 --- a/src/Timers.h +++ b/src/Timers.h @@ -11,8 +11,7 @@ int pauseTimer; int player_iframeTimer; -int player_flashtimer; int enemy_iframetimer; -int enemy_flashtimer; +int globalTimer; #endif