From 33de816841709981eb3a41515754ec2b2dfa2d8d Mon Sep 17 00:00:00 2001 From: En Yi Date: Sun, 7 Jul 2024 16:48:55 +0800 Subject: [PATCH] Replace hardcoded scene values to enum --- main.c | 10 +++++----- scenes/assets_tag.h | 10 ++++++---- scenes/game_scene.c | 2 +- scenes/level_select_scene.c | 8 ++++++++ scenes/menu_scene.c | 5 +++-- 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/main.c b/main.c index 6bfc197..30c2f59 100644 --- a/main.c +++ b/main.c @@ -80,11 +80,11 @@ int main(void) level_sel_scene.data.level_pack = pack; init_level_select_scene(&level_sel_scene); - scenes[0] = &menu_scene.scene; - scenes[1] = &level_sel_scene.scene; - scenes[2] = &level_scene.scene; - scenes[3] = &sandbox_scene.scene; - change_scene(&engine, 0); + scenes[MAIN_MENU_SCENE] = &menu_scene.scene; + scenes[LEVEL_SELECT_SCENE] = &level_sel_scene.scene; + scenes[GAME_SCENE] = &level_scene.scene; + scenes[SANDBOX_SCENE] = &sandbox_scene.scene; + change_scene(&engine, MAIN_MENU_SCENE); const float DT = 1.0f/60.0f; while (!WindowShouldClose()) diff --git a/scenes/assets_tag.h b/scenes/assets_tag.h index 15cee3e..a38df9f 100644 --- a/scenes/assets_tag.h +++ b/scenes/assets_tag.h @@ -35,9 +35,11 @@ typedef enum SFXTag { COIN_SFX, } SFXTag_t; -//typedef enum SceneType { -// LEVEL_SCENE = 0, -// MENU_SCENE, -//}SceneType_t; +typedef enum SceneType { + MAIN_MENU_SCENE = 0, + LEVEL_SELECT_SCENE, + GAME_SCENE, + SANDBOX_SCENE, +}SceneType_t; #endif diff --git a/scenes/game_scene.c b/scenes/game_scene.c index e78498a..2a3b1ac 100644 --- a/scenes/game_scene.c +++ b/scenes/game_scene.c @@ -89,7 +89,7 @@ static void level_do_action(Scene_t* scene, ActionType_t action, bool pressed) case ACTION_EXIT: if(scene->engine != NULL) { - change_scene(scene->engine, 0); + change_scene(scene->engine, MAIN_MENU_SCENE); } break; default: diff --git a/scenes/level_select_scene.c b/scenes/level_select_scene.c index 910bfa1..df4470b 100644 --- a/scenes/level_select_scene.c +++ b/scenes/level_select_scene.c @@ -1,4 +1,5 @@ #include "scene_impl.h" +#include "assets_tag.h" #include "raymath.h" #include @@ -42,6 +43,12 @@ static void level_select_do_action(Scene_t* scene, ActionType_t action, bool pre data->scroll = Clamp(data->scroll, 0, 400); } break; + case ACTION_EXIT: + if(scene->engine != NULL) + { + change_scene(scene->engine, MAIN_MENU_SCENE); + } + break; default: break; } @@ -84,6 +91,7 @@ void init_level_select_scene(LevelSelectScene_t* scene) sc_array_add(&scene->scene.systems, &level_select_render_func); sc_map_put_64(&scene->scene.action_map, KEY_UP, ACTION_UP); sc_map_put_64(&scene->scene.action_map, KEY_DOWN, ACTION_DOWN); + sc_map_put_64(&scene->scene.action_map, KEY_Q, ACTION_EXIT); } void free_level_select_scene(LevelSelectScene_t* scene) { diff --git a/scenes/menu_scene.c b/scenes/menu_scene.c index 8faf61f..570de18 100644 --- a/scenes/menu_scene.c +++ b/scenes/menu_scene.c @@ -1,4 +1,5 @@ #include "scene_impl.h" +#include "assets_tag.h" #include "raymath.h" #include @@ -21,10 +22,10 @@ static void exec_component_function(Scene_t* scene, int sel) switch(sel) { case 0: - change_scene(scene->engine, 1); + change_scene(scene->engine, LEVEL_SELECT_SCENE); break; case 1: - change_scene(scene->engine, 2); + change_scene(scene->engine, SANDBOX_SCENE); break; case 3: scene->state = 0;