Replace hardcoded scene values to enum

main
En Yi 2024-07-07 16:48:55 +08:00
parent 0c461d3167
commit 33de816841
5 changed files with 23 additions and 12 deletions

10
main.c
View File

@ -80,11 +80,11 @@ int main(void)
level_sel_scene.data.level_pack = pack; level_sel_scene.data.level_pack = pack;
init_level_select_scene(&level_sel_scene); init_level_select_scene(&level_sel_scene);
scenes[0] = &menu_scene.scene; scenes[MAIN_MENU_SCENE] = &menu_scene.scene;
scenes[1] = &level_sel_scene.scene; scenes[LEVEL_SELECT_SCENE] = &level_sel_scene.scene;
scenes[2] = &level_scene.scene; scenes[GAME_SCENE] = &level_scene.scene;
scenes[3] = &sandbox_scene.scene; scenes[SANDBOX_SCENE] = &sandbox_scene.scene;
change_scene(&engine, 0); change_scene(&engine, MAIN_MENU_SCENE);
const float DT = 1.0f/60.0f; const float DT = 1.0f/60.0f;
while (!WindowShouldClose()) while (!WindowShouldClose())

View File

@ -35,9 +35,11 @@ typedef enum SFXTag {
COIN_SFX, COIN_SFX,
} SFXTag_t; } SFXTag_t;
//typedef enum SceneType { typedef enum SceneType {
// LEVEL_SCENE = 0, MAIN_MENU_SCENE = 0,
// MENU_SCENE, LEVEL_SELECT_SCENE,
//}SceneType_t; GAME_SCENE,
SANDBOX_SCENE,
}SceneType_t;
#endif #endif

View File

@ -89,7 +89,7 @@ static void level_do_action(Scene_t* scene, ActionType_t action, bool pressed)
case ACTION_EXIT: case ACTION_EXIT:
if(scene->engine != NULL) if(scene->engine != NULL)
{ {
change_scene(scene->engine, 0); change_scene(scene->engine, MAIN_MENU_SCENE);
} }
break; break;
default: default:

View File

@ -1,4 +1,5 @@
#include "scene_impl.h" #include "scene_impl.h"
#include "assets_tag.h"
#include "raymath.h" #include "raymath.h"
#include <stdio.h> #include <stdio.h>
@ -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); data->scroll = Clamp(data->scroll, 0, 400);
} }
break; break;
case ACTION_EXIT:
if(scene->engine != NULL)
{
change_scene(scene->engine, MAIN_MENU_SCENE);
}
break;
default: default:
break; break;
} }
@ -84,6 +91,7 @@ void init_level_select_scene(LevelSelectScene_t* scene)
sc_array_add(&scene->scene.systems, &level_select_render_func); 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_UP, ACTION_UP);
sc_map_put_64(&scene->scene.action_map, KEY_DOWN, ACTION_DOWN); 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) void free_level_select_scene(LevelSelectScene_t* scene)
{ {

View File

@ -1,4 +1,5 @@
#include "scene_impl.h" #include "scene_impl.h"
#include "assets_tag.h"
#include "raymath.h" #include "raymath.h"
#include <stdio.h> #include <stdio.h>
@ -21,10 +22,10 @@ static void exec_component_function(Scene_t* scene, int sel)
switch(sel) switch(sel)
{ {
case 0: case 0:
change_scene(scene->engine, 1); change_scene(scene->engine, LEVEL_SELECT_SCENE);
break; break;
case 1: case 1:
change_scene(scene->engine, 2); change_scene(scene->engine, SANDBOX_SCENE);
break; break;
case 3: case 3:
scene->state = 0; scene->state = 0;