Integrate level select screen to main

Not complete tho
main
En Yi 2024-07-07 15:45:17 +08:00
parent 893fc1c73f
commit 0c461d3167
3 changed files with 29 additions and 7 deletions

13
main.c
View File

@ -10,7 +10,7 @@
Scene_t *scenes[N_SCENES];
static GameEngine_t engine = {
.scenes = scenes,
.max_scenes = 3,
.max_scenes = 4,
.curr_scene = 0,
.assets = {0}
};
@ -74,9 +74,16 @@ int main(void)
MenuScene_t menu_scene;
menu_scene.scene.engine = &engine;
init_menu_scene(&menu_scene);
LevelSelectScene_t level_sel_scene;
level_sel_scene.scene.engine = &engine;
level_sel_scene.data.level_pack = pack;
init_level_select_scene(&level_sel_scene);
scenes[0] = &menu_scene.scene;
scenes[1] = &level_scene.scene;
scenes[2] = &sandbox_scene.scene;
scenes[1] = &level_sel_scene.scene;
scenes[2] = &level_scene.scene;
scenes[3] = &sandbox_scene.scene;
change_scene(&engine, 0);
const float DT = 1.0f/60.0f;

View File

@ -57,13 +57,27 @@ void init_level_select_scene(LevelSelectScene_t* scene)
scene->data.scroll = 400;
scene->data.level_display = LoadRenderTexture(300, 800);
const unsigned int n_elems = 800 / (12+3);
char buf[32];
BeginTextureMode(scene->data.level_display);
ClearBackground(GRAY);
for (unsigned int i = 0; i < n_elems; ++i)
if (scene->data.level_pack != NULL)
{
char buf[32];
sprintf(buf, "Level %u", i);
DrawText(buf, 0, (12+3) * i, 12, BLACK);
for (unsigned int i = 0; i < scene->data.level_pack->n_levels; ++i)
{
DrawText(scene->data.level_pack->levels[i].level_name, 0, (12+3) * i, 12, BLACK);
}
for (unsigned int i = scene->data.level_pack->n_levels; i < n_elems; ++i)
{
DrawText("---", 0, (12+3) * i, 12, BLACK);
}
}
else
{
for (unsigned int i = 0; i < n_elems; ++i)
{
sprintf(buf, "Level %u", i);
DrawText(buf, 0, (12+3) * i, 12, BLACK);
}
}
EndTextureMode();

View File

@ -89,6 +89,7 @@ typedef struct MenuScene {
typedef struct LevelSelectSceneData {
RenderTexture2D level_display;
float scroll;
LevelPack_t* level_pack;
} LevelSelectSceneData_t;
typedef struct LevelSelectScene {