Proper screen switching
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
|
||||
typedef enum GameScreen {
|
||||
SCREEN_GAME,
|
||||
SCREEN_PAUSE_MENU,
|
||||
SCREEN_MAIN_MENU,
|
||||
SCREEN_SETTINGS,
|
||||
} GameScreen;
|
||||
|
||||
59
game/main.c
59
game/main.c
@@ -268,6 +268,14 @@ void update(float dt, void *userData) {
|
||||
switch (game->screen) {
|
||||
case SCREEN_GAME:
|
||||
updatePlayerInput();
|
||||
if (IsKeyReleased(input->mapping.backBtn)) {
|
||||
game->screen = SCREEN_PAUSE_MENU;
|
||||
}
|
||||
break;
|
||||
case SCREEN_PAUSE_MENU:
|
||||
if (IsKeyReleased(input->mapping.backBtn)) {
|
||||
game->screen = SCREEN_GAME;
|
||||
}
|
||||
break;
|
||||
case SCREEN_MAIN_MENU:
|
||||
break;
|
||||
@@ -333,7 +341,9 @@ static void renderGame(Game *game, float dt) {
|
||||
drawPlayerInputUI();
|
||||
|
||||
EndMode2D();
|
||||
}
|
||||
|
||||
static void renderGameMenu(Game *game, float dt) {
|
||||
// UI
|
||||
i32 width = GetScreenWidth();
|
||||
i32 height = GetScreenHeight();
|
||||
@@ -370,12 +380,47 @@ static void renderGame(Game *game, float dt) {
|
||||
uiGameResCount(100, -1, stoneRec, tileset->tiles);
|
||||
uiGameResCount(100, -1, foodRec, tileset->tiles);
|
||||
uiGameResCount(250, -1, goldRec, tileset->tiles);
|
||||
uiGameResCount(25, 100, popRec, tileset->tiles);
|
||||
uiGameResCount(1, 10, popRec, tileset->tiles);
|
||||
bzUIPopParent(UI);
|
||||
|
||||
|
||||
bzUIEnd(UI);
|
||||
}
|
||||
static void renderPauseMenu(Game *game, float dt) {
|
||||
i32 width = GetScreenWidth();
|
||||
i32 height = GetScreenHeight();
|
||||
|
||||
game->camera.zoom = 3 * uiGetScale();
|
||||
|
||||
bzUIBegin(UI, width, height);
|
||||
bzUISetParentLayout(UI, (BzUILayout) {
|
||||
.type = BZ_UI_LAYOUT_FLEX_BOX,
|
||||
.flags = BZ_UI_FLEX_DIR_COLUMN
|
||||
});
|
||||
|
||||
uiPushDivParentPercentage(1.0f, 0.4f);
|
||||
bzUISetParentLayout(UI, (BzUILayout) {
|
||||
.type = BZ_UI_LAYOUT_FLEX_BOX,
|
||||
.flags = BZ_UI_FLEX_DIR_COLUMN | BZ_UI_FLEX_JUSTIFY_CENTER | BZ_UI_FLEX_ALIGN_CENTER
|
||||
});
|
||||
uiMainMenuLabel("Paused");
|
||||
bzUIPopParent(UI);
|
||||
|
||||
uiPushDivParentPercentage(1.0f, 0.6f);
|
||||
bzUISetParentLayout(UI, (BzUILayout) {
|
||||
.type = BZ_UI_LAYOUT_FLEX_BOX,
|
||||
.flags = BZ_UI_FLEX_DIR_COLUMN | BZ_UI_FLEX_ALIGN_CENTER
|
||||
});
|
||||
if (uiMainMenuButton("Resume")) {
|
||||
game->screen = SCREEN_GAME;
|
||||
}
|
||||
if (uiMainMenuButton("Exit")) {
|
||||
game->screen = SCREEN_MAIN_MENU;
|
||||
unloadMap(game);
|
||||
loadMap(game, "assets/maps/main_menu_01.tmj");
|
||||
}
|
||||
bzUIPopParent(UI);
|
||||
bzUIEnd(UI);
|
||||
}
|
||||
|
||||
static void renderMainMenu(Game *game, float dt) {
|
||||
@@ -403,7 +448,7 @@ static void renderMainMenu(Game *game, float dt) {
|
||||
.type = BZ_UI_LAYOUT_FLEX_BOX,
|
||||
.flags = BZ_UI_FLEX_DIR_COLUMN | BZ_UI_FLEX_ALIGN_CENTER
|
||||
});
|
||||
if (uiMainMenuButton("Play") || true) {
|
||||
if (uiMainMenuButton("Play")) {
|
||||
game->screen = SCREEN_GAME;
|
||||
unloadMap(game);
|
||||
loadMap(game, "assets/maps/map_01.tmj");
|
||||
@@ -477,16 +522,18 @@ void render(float dt, void *userData) {
|
||||
Game *game = ecs_singleton_get_mut(ECS, Game);
|
||||
const InputState *input = ecs_singleton_get(ECS, InputState);;
|
||||
|
||||
if (IsKeyReleased(input->mapping.backBtn)) {
|
||||
game->screen = SCREEN_MAIN_MENU;
|
||||
}
|
||||
|
||||
Color shadow = BLACK;
|
||||
shadow.a = 35;
|
||||
|
||||
switch (game->screen) {
|
||||
case SCREEN_GAME:
|
||||
renderGame(game, dt);
|
||||
renderGameMenu(game, dt);
|
||||
break;
|
||||
case SCREEN_PAUSE_MENU:
|
||||
renderGame(game, dt);
|
||||
drawOverScreen(shadow);
|
||||
renderPauseMenu(game, dt);
|
||||
break;
|
||||
case SCREEN_MAIN_MENU:
|
||||
renderGame(game, dt);
|
||||
|
||||
Reference in New Issue
Block a user