diff --git a/level_load_test.c b/level_load_test.c index 842f3d7..e7d0731 100644 --- a/level_load_test.c +++ b/level_load_test.c @@ -264,15 +264,12 @@ int main(void) load_from_infofile("res/assets.info", &engine.assets); init_player_creation("res/player_spr.info", &engine.assets); - LevelPack_t* pack = add_level_pack(&engine.assets, "TestLevels", "res/defaultLevels.lvldata"); - assert(pack != NULL); - LevelScene_t scene; scene.scene.engine = &engine; init_scene(&scene.scene, &level_scene_render_func, &level_do_action); init_level_scene_data(&scene.data, MAX_N_TILES, all_tiles); - pack = get_level_pack(&engine.assets, "TestLevels"); + LevelPack_t* pack = get_level_pack(&engine.assets, "TestLevels"); assert(pack != NULL); scene.data.level_pack = pack; diff --git a/main.c b/main.c index 18b4c6d..4aba3ab 100644 --- a/main.c +++ b/main.c @@ -1,5 +1,7 @@ #include "raylib.h" +#include "assets_loader.h" #include "scene_impl.h" +#include "ent_impl.h" #include "mempool.h" #include #define N_SCENES 3 @@ -15,20 +17,6 @@ static GameEngine_t engine = { const int screenWidth = 1280; const int screenHeight = 640; -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 struct sc_queue_32 key_buffer; @@ -42,11 +30,20 @@ int main(void) init_memory_pools(); init_assets(&engine.assets); - load_assets(); + load_from_infofile("res/assets.info", &engine.assets); + init_player_creation("res/player_spr.info", &engine.assets); LevelScene_t level_scene; level_scene.scene.engine = &engine; init_sandbox_scene(&level_scene); + LevelPack_t* pack = get_level_pack(&engine.assets, "TestLevels"); + if (pack != NULL) + { + level_scene.data.level_pack = pack; + level_scene.data.current_level = 0; + load_level_tilemap(&level_scene, 0); + } + MenuScene_t menu_scene; menu_scene.scene.engine = &engine; init_menu_scene(&menu_scene); diff --git a/scenes/assets_loader.c b/scenes/assets_loader.c index a4642ab..9d09ea6 100644 --- a/scenes/assets_loader.c +++ b/scenes/assets_loader.c @@ -6,6 +6,7 @@ typedef enum AssetInfoType { TEXTURE_INFO, SPRITE_INFO, + LEVELPACK_INFO, INVALID_INFO }AssetInfoType_t; @@ -64,6 +65,10 @@ bool load_from_infofile(const char* file, Assets_t* assets) { info_type = SPRITE_INFO; } + else if (strcmp(tmp, "LevelPack") == 0) + { + info_type = LEVELPACK_INFO; + } else { info_type = INVALID_INFO; @@ -90,6 +95,16 @@ bool load_from_infofile(const char* file, Assets_t* assets) //strcpy(tmp2, name); } break; + case LEVELPACK_INFO: + { + if (add_level_pack(assets, name, info_str) == NULL) + { + printf("Unable to add level pack at line %lu\n", line_num); + break; + } + printf("Added level pack %s as %s\n", info_str, name); + } + break; case SPRITE_INFO: { SpriteInfo_t spr_info = {0}; diff --git a/scenes/engine/assets.c b/scenes/engine/assets.c index a15d438..5ae8c83 100644 --- a/scenes/engine/assets.c +++ b/scenes/engine/assets.c @@ -4,12 +4,12 @@ #include #define MAX_TEXTURES 16 -#define MAX_SPRITES 16 +#define MAX_SPRITES 64 #define MAX_SOUNDS 16 #define MAX_FONTS 4 #define MAX_N_TILES 4096 #define MAX_NAME_LEN 32 -#define MAX_LEVEL_PACK 1 +#define MAX_LEVEL_PACK 4 uint8_t n_loaded[5] = {0}; // Hard limit number of