Fix main program crash

Changelog:
- Init asset management and pass into scene inits
scene_man
En Yi 2023-05-07 16:27:14 +08:00
parent d4dfe01182
commit 7c94ecde89
1 changed files with 22 additions and 9 deletions

31
main.c
View File

@ -7,7 +7,8 @@ Scene_t *scenes[N_SCENES];
static GameEngine_t engine = { static GameEngine_t engine = {
.scenes = scenes, .scenes = scenes,
.max_scenes = 2, .max_scenes = 2,
.curr_scene = 0 .curr_scene = 0,
.assets = {0}
}; };
const int screenWidth = 1280; const int screenWidth = 1280;
@ -15,6 +16,16 @@ const int screenHeight = 640;
static void load_assets(void) static void load_assets(void)
{ {
Texture2D* tex = add_texture(&engine.assets, "plr_tex", "res/test_tex.png");
Sprite_t* spr = add_sprite(&engine.assets, "plr_stand", tex);
spr->origin = (Vector2){0, 0};
spr->frame_size = (Vector2){32, 32};
spr = add_sprite(&engine.assets, "plr_run", tex);
spr->frame_count = 4;
spr->origin = (Vector2){0, 0};
spr->frame_size = (Vector2){32, 32};
spr->speed = 15;
} }
// Maintain own queue to handle key presses // Maintain own queue to handle key presses
@ -28,16 +39,20 @@ int main(void)
InitWindow(screenWidth, screenHeight, "raylib"); InitWindow(screenWidth, screenHeight, "raylib");
SetTargetFPS(60); // Set our game to run at 60 frames-per-second SetTargetFPS(60); // Set our game to run at 60 frames-per-second
init_memory_pools(); init_memory_pools();
init_assets(&engine.assets);
load_assets();
LevelScene_t level_scene; LevelScene_t level_scene;
init_level_scene(&level_scene);
level_scene.scene.engine = &engine; level_scene.scene.engine = &engine;
init_level_scene(&level_scene);
MenuScene_t menu_scene; MenuScene_t menu_scene;
init_menu_scene(&menu_scene);
menu_scene.scene.engine = &engine; menu_scene.scene.engine = &engine;
init_menu_scene(&menu_scene);
scenes[0] = &menu_scene.scene; scenes[0] = &menu_scene.scene;
scenes[1] = &level_scene.scene; scenes[1] = &level_scene.scene;
load_assets();
change_scene(&engine, 0); change_scene(&engine, 0);
//Camera2D camera = { 0 }; //Camera2D camera = { 0 };
//camera.offset = (Vector2){0,0}; //camera.offset = (Vector2){0,0};
//camera.rotation = 0.0f; //camera.rotation = 0.0f;
@ -79,18 +94,16 @@ int main(void)
update_scene(curr_scene); update_scene(curr_scene);
update_entity_manager(&curr_scene->ent_manager); update_entity_manager(&curr_scene->ent_manager);
// This is needed to advance time delta // This is needed to advance time delta
BeginDrawing(); render_scene(curr_scene);
render_scene(curr_scene);
ClearBackground(RAYWHITE);
EndDrawing();
if (curr_scene->state != SCENE_PLAYING) if (curr_scene->state != SCENE_PLAYING)
{ {
sc_queue_clear(&key_buffer); sc_queue_clear(&key_buffer);
} }
} }
CloseWindow();
free_level_scene(&level_scene); free_level_scene(&level_scene);
free_menu_scene(&menu_scene); free_menu_scene(&menu_scene);
sc_queue_term(&key_buffer); sc_queue_term(&key_buffer);
term_assets(&engine.assets);
CloseWindow();
} }