basic level select screen
This commit is contained in:
parent
bd7108936d
commit
5c1073e21e
9 changed files with 97 additions and 19 deletions
3
Makefile
3
Makefile
|
@ -383,7 +383,8 @@ PROJECT_SOURCE_FILES ?= \
|
|||
$(PROJECT_SOURCE_PATH)/Credits.c \
|
||||
$(PROJECT_SOURCE_PATH)/Gameover.c \
|
||||
$(PROJECT_SOURCE_PATH)/Options.c \
|
||||
$(PROJECT_SOURCE_PATH)/Ending.c
|
||||
$(PROJECT_SOURCE_PATH)/Ending.c \
|
||||
$(PROJECT_SOURCE_PATH)/LevelSel.c
|
||||
|
||||
# Define all object files from source files
|
||||
OBJS = $(patsubst %.c, %.o, $(PROJECT_SOURCE_FILES))
|
||||
|
|
|
@ -383,7 +383,8 @@ PROJECT_SOURCE_FILES ?= \
|
|||
$(PROJECT_SOURCE_PATH)/Credits.c \
|
||||
$(PROJECT_SOURCE_PATH)/Gameover.c \
|
||||
$(PROJECT_SOURCE_PATH)/Options.c \
|
||||
$(PROJECT_SOURCE_PATH)/Ending.c
|
||||
$(PROJECT_SOURCE_PATH)/Ending.c \
|
||||
$(PROJECT_SOURCE_PATH)/LevelSel.c
|
||||
|
||||
# Define all object files from source files
|
||||
OBJS = $(patsubst %.c, %.o, $(PROJECT_SOURCE_FILES))
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
|
||||
#define INPUT_UP_PRESSED IsKeyPressed(KEY_UP) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_LEFT_FACE_UP)
|
||||
#define INPUT_DOWN_PRESSED IsKeyPressed(KEY_DOWN) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_LEFT_FACE_DOWN)
|
||||
#define INPUT_LEFT_PRESSED IsKeyPressed(KEY_LEFT) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_LEFT_FACE_LEFT)
|
||||
#define INPUT_RIGHT_PRESSED IsKeyPressed(KEY_RIGHT) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)
|
||||
|
||||
#define INPUT_OPTION_PRESSED IsKeyPressed(KEY_ENTER) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_MIDDLE_RIGHT)
|
||||
#define INPUT_FIRE_PRESSED IsKeyPressed(KEY_Z) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#include "Gfx.h"
|
||||
|
||||
int score = 0, bestscore = 0, finishfromGameplayScreen = 0;
|
||||
Levels level = 0;
|
||||
|
||||
Music Gameplaysong = { 0 };
|
||||
|
||||
|
@ -41,8 +40,6 @@ void InitGameplayScreen(void)
|
|||
|
||||
finishfromGameplayScreen = 0;
|
||||
|
||||
level = LEVEL1;
|
||||
|
||||
globalTimer = 0;
|
||||
|
||||
player.currentframe = 0;
|
||||
|
@ -240,6 +237,8 @@ void UpdateGameplayScreen(void)
|
|||
if (IsKeyPressed(KEY_G)) finishfromGameplayScreen = 1;
|
||||
if (IsKeyPressed(KEY_R)) finishfromGameplayScreen = 2;
|
||||
if (IsKeyPressed(KEY_W)) finishfromGameplayScreen = 3;
|
||||
if (IsKeyPressed(KEY_EQUAL)) level++;
|
||||
if (IsKeyPressed(KEY_MINUS)) level--;
|
||||
|
||||
// call gameover when killed
|
||||
if (player.hp < 1) { StopMusicStream(Gameplaysong); finishfromGameplayScreen = 1; }
|
||||
|
@ -249,14 +248,6 @@ void UpdateGameplayScreen(void)
|
|||
if (shoot[i].active) {
|
||||
shoot[i].hitbox.x += shoot[i].speed.x * GetFrameTime();
|
||||
}
|
||||
|
||||
if (CheckCollisionRecs(shoot[i].hitbox, enemy.hitbox) && shoot[i].active) {
|
||||
DamageActor(&enemy);
|
||||
scoreTimer += 300;
|
||||
enemy.hitbox.y = GetRandomValue(0, GetScreenHeight());
|
||||
shoot[i].active = false;
|
||||
}
|
||||
|
||||
if (shoot[i].hitbox.x + shoot[i].hitbox.width >= GetScreenWidth() + attack_sprite.width) shoot[i].active = false;
|
||||
}
|
||||
|
||||
|
@ -282,11 +273,20 @@ void UpdateGameplayScreen(void)
|
|||
}
|
||||
|
||||
// Enemy logic
|
||||
if (level < 3) {
|
||||
if (level == 2) {
|
||||
if ((int)globalTimer % 40 == 0) enemy.hitbox.y = GetRandomValue(0, GetScreenHeight() - enemy_sprite.height);
|
||||
|
||||
if (CheckCollisionRecs(player.hitbox, enemy.hitbox)) DamageActor(&player);
|
||||
|
||||
for (int i = 0; i < MAX_SHOOTS; i++) {
|
||||
if (CheckCollisionRecs(shoot[i].hitbox, enemy.hitbox) && shoot[i].active) {
|
||||
DamageActor(&enemy);
|
||||
scoreTimer += 300;
|
||||
enemy.hitbox.y = GetRandomValue(0, GetScreenHeight());
|
||||
shoot[i].active = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (enemy.hp < 1) { level++; enemy.hp = 5; }
|
||||
}
|
||||
|
||||
|
@ -347,13 +347,13 @@ void DrawGameplayScreen(void)
|
|||
DrawText(TextFormat("GetTime(): %f", GetTime()), 10, 340, 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);
|
||||
for (int i = 0; i < MAX_FIREWORKS; i++) {
|
||||
DrawTexture(firework_sprite, fireworks[i].sprite_pos.x, fireworks[i].sprite_pos.y, fireworks[i].color);
|
||||
}
|
||||
for (int i = 0; i < MAX_SHOOTS; i++) {
|
||||
if (shoot[i].active) DrawTexture(attack_sprite, shoot[i].sprite_pos.x, shoot[i].sprite_pos.y, shoot[i].color);
|
||||
}
|
||||
if (level == 2) DrawTextureRec(enemy_sprite, enemy.frameRec, enemy.sprite_pos, enemy.color);
|
||||
DrawTextureRec(player_sprite, player.frameRec, player.sprite_pos, player.color);
|
||||
DrawTexture(feather_sprite, 0, 0, GREEN);
|
||||
DrawText(TextFormat("= %i", player.hp), 30, 30, 30, GREEN);
|
||||
|
|
|
@ -9,8 +9,6 @@
|
|||
#ifndef GAMEPLAY_HEADER
|
||||
#define GAMEPLAY_HEADER
|
||||
|
||||
typedef enum Levels { LEVEL1 = 0, LEVEL2, LEVEL3 } Levels;
|
||||
|
||||
#define MAX_FIREWORKS 10
|
||||
#define PLAYER_HP 3
|
||||
#define MAX_SHOOTS 3
|
||||
|
|
56
src/LevelSel.c
Normal file
56
src/LevelSel.c
Normal file
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
- Avoid ~ a game by Canneddonuts
|
||||
- Filename ~ LevelSel.c
|
||||
- Author ~ Return0ne
|
||||
- 2022
|
||||
- *no license*
|
||||
*/
|
||||
|
||||
#include "../include/raylib.h"
|
||||
|
||||
#include "Screens.h"
|
||||
#include "Controls.h"
|
||||
#include "Gfx.h"
|
||||
|
||||
int finishfromLevelSelScreen = 0, levelSelected = 0;
|
||||
|
||||
void InitLevelSelScreen(void)
|
||||
{
|
||||
levelSelected = 0;
|
||||
finishfromLevelSelScreen = 0;
|
||||
}
|
||||
|
||||
void UpdateLevelSelScreen(void)
|
||||
{
|
||||
if (INPUT_LEFT_PRESSED) levelSelected++;
|
||||
if (INPUT_RIGHT_PRESSED) levelSelected--;
|
||||
if (levelSelected > 0) levelSelected--;
|
||||
if (levelSelected < -2) levelSelected++;
|
||||
|
||||
if ((levelSelected == 0) && (INPUT_OPTION_PRESSED)) { level = LEVEL1; finishfromLevelSelScreen = 1; }
|
||||
if ((levelSelected == -1) && (INPUT_OPTION_PRESSED)) { level = LEVEL2; finishfromLevelSelScreen = 1; }
|
||||
if ((levelSelected == -2) && (INPUT_OPTION_PRESSED)) { level = LEVEL3; finishfromLevelSelScreen = 1; }
|
||||
}
|
||||
|
||||
void DrawLevelSelScreen(void)
|
||||
{
|
||||
DrawTexture(background, 0, 0, GRAY);
|
||||
|
||||
if (levelSelected == 0) DrawText("1", 100, 220, 30, WHITE);
|
||||
else DrawText("1", 100, 220, 30, BLUE);
|
||||
|
||||
if (levelSelected == -1) DrawText("2", 150, 220, 30, WHITE);
|
||||
else DrawText("2", 150, 220, 30, BLUE);
|
||||
|
||||
if (levelSelected == -2) DrawText("3", 200, 220, 30, WHITE);
|
||||
else DrawText("3", 200, 220, 30, BLUE);
|
||||
}
|
||||
|
||||
void UnloadLevelSelScreen(void)
|
||||
{
|
||||
}
|
||||
|
||||
int FinishLevelSelScreen(void)
|
||||
{
|
||||
return finishfromLevelSelScreen;
|
||||
}
|
13
src/Main.c
13
src/Main.c
|
@ -26,6 +26,7 @@ static int transFromScreen = -1;
|
|||
static int transToScreen = -1;
|
||||
|
||||
GameScreen currentScreen = 0;
|
||||
Levels level = 0;
|
||||
|
||||
Texture2D background;
|
||||
Texture2D player_sprite;
|
||||
|
@ -73,6 +74,7 @@ void gameSetup(void)
|
|||
{
|
||||
// asset loading & setting of variable values
|
||||
currentScreen = TITLE;
|
||||
level = LEVEL1;
|
||||
background = LoadTexture("assets/gfx/background.png");
|
||||
ZadoBold = LoadFontEx("assets/fonts/ZadoBold.ttf", 96, 0, 110);
|
||||
|
||||
|
@ -104,6 +106,7 @@ static void update_transition(void)
|
|||
case CREDITS: UnloadCreditsScreen(); break;
|
||||
case OPTIONS: UnloadOptionsScreen(); break;
|
||||
case ENDING: UnloadEndingScreen(); break;
|
||||
case LEVELSEL: UnloadLevelSelScreen(); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
@ -114,6 +117,7 @@ static void update_transition(void)
|
|||
case CREDITS: InitCreditsScreen(); break;
|
||||
case OPTIONS: InitOptionsScreen(); break;
|
||||
case ENDING: InitEndingScreen(); break;
|
||||
case LEVELSEL: InitLevelSelScreen(); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
@ -154,7 +158,7 @@ static void update_draw_frame(void)
|
|||
|
||||
switch (FinishTitleScreen()) {
|
||||
case 1: transition_to_screen(CREDITS); break;
|
||||
case 2: transition_to_screen(GAMEPLAY); break;
|
||||
case 2: transition_to_screen(LEVELSEL); break;
|
||||
case 3: transition_to_screen(OPTIONS); break;
|
||||
}
|
||||
} break;
|
||||
|
@ -188,6 +192,11 @@ static void update_draw_frame(void)
|
|||
|
||||
if (FinishEndingScreen() == 1) transition_to_screen(TITLE);
|
||||
} break;
|
||||
case LEVELSEL: {
|
||||
UpdateLevelSelScreen();
|
||||
|
||||
if (FinishLevelSelScreen() == 1) transition_to_screen(GAMEPLAY);
|
||||
} break;
|
||||
default: break;
|
||||
}
|
||||
} else update_transition();
|
||||
|
@ -203,6 +212,7 @@ static void update_draw_frame(void)
|
|||
case GAMEOVER: DrawGameoverScreen(); break;
|
||||
case OPTIONS: DrawOptionsScreen(); break;
|
||||
case ENDING: DrawEndingScreen(); break;
|
||||
case LEVELSEL: DrawLevelSelScreen(); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
@ -222,6 +232,7 @@ static void unloadGame(void)
|
|||
case CREDITS: UnloadCreditsScreen(); break;
|
||||
case OPTIONS: UnloadOptionsScreen(); break;
|
||||
case ENDING: UnloadEndingScreen(); break;
|
||||
case LEVELSEL: UnloadLevelSelScreen(); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
|
|
@ -9,9 +9,11 @@
|
|||
#ifndef SCREENS_HEADER
|
||||
#define SCREENS_HEADER
|
||||
|
||||
typedef enum GameScreen { TITLE = 0, GAMEPLAY, GAMEOVER, CREDITS, OPTIONS, ENDING } GameScreen;
|
||||
typedef enum GameScreen { TITLE = 0, GAMEPLAY, GAMEOVER, CREDITS, OPTIONS, ENDING, LEVELSEL } GameScreen;
|
||||
typedef enum Levels { LEVEL1 = 0, LEVEL2, LEVEL3 } Levels;
|
||||
|
||||
extern GameScreen currentScreen;
|
||||
extern Levels level;
|
||||
|
||||
void InitTitleScreen(void);
|
||||
void UpdateTitleScreen(void);
|
||||
|
@ -50,4 +52,10 @@ void DrawEndingScreen(void);
|
|||
void UnloadEndingScreen(void);
|
||||
int FinishEndingScreen(void);
|
||||
|
||||
void InitLevelSelScreen(void);
|
||||
void UpdateLevelSelScreen(void);
|
||||
void DrawLevelSelScreen(void);
|
||||
void UnloadLevelSelScreen(void);
|
||||
int FinishLevelSelScreen(void);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -30,6 +30,7 @@ void DrawScore(void)
|
|||
|
||||
void InitTitleScreen(void)
|
||||
{
|
||||
titleSelected = 0;
|
||||
finishfromTitleScreen = 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue