From f4167c6270e13945c89bbe8ebd3e284c227d8f50 Mon Sep 17 00:00:00 2001 From: En Yi Date: Tue, 20 Aug 2024 16:38:07 +0800 Subject: [PATCH] Add chest count in main game --- engine/assets.c | 3 ++- engine/assets.h | 1 + res/ldtk_repacker.py | 5 ++++- scenes/game_scene.c | 2 ++ scenes/scene_systems.c | 2 ++ 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/engine/assets.c b/engine/assets.c index c803aaa..3fc4d1d 100644 --- a/engine/assets.c +++ b/engine/assets.c @@ -275,7 +275,7 @@ static LevelPack_t* add_level_pack_zst(Assets_t* assets, const char* name, const for (lvls = 0; lvls < n_levels; ++lvls) { printf("Parsing level %u\n", lvls); - output.size = 36; + output.size = 38; output.pos = 0; do @@ -310,6 +310,7 @@ static LevelPack_t* add_level_pack_zst(Assets_t* assets, const char* name, const memcpy(pack_info->pack.levels[lvls].level_name, level_decompressor.out_buffer, 32); memcpy(&pack_info->pack.levels[lvls].width, level_decompressor.out_buffer + 32, 2); memcpy(&pack_info->pack.levels[lvls].height, level_decompressor.out_buffer + 34, 2); + memcpy(&pack_info->pack.levels[lvls].n_chests, level_decompressor.out_buffer + 36, 2); pack_info->pack.levels[lvls].level_name[31] = '\0'; printf("Level name: %s\n", pack_info->pack.levels[lvls].level_name); printf("WxH: %u %u\n", pack_info->pack.levels[lvls].width, pack_info->pack.levels[lvls].height); diff --git a/engine/assets.h b/engine/assets.h index 920ee49..569ec19 100644 --- a/engine/assets.h +++ b/engine/assets.h @@ -58,6 +58,7 @@ typedef struct LevelMap char level_name[32]; uint16_t width; uint16_t height; + uint16_t n_chests; LevelTileInfo_t* tiles; }LevelMap_t; diff --git a/res/ldtk_repacker.py b/res/ldtk_repacker.py index 018a4ed..848bcd8 100644 --- a/res/ldtk_repacker.py +++ b/res/ldtk_repacker.py @@ -77,6 +77,7 @@ with open(converted_filename, 'wb+') as out_file: out_file.write(struct.pack("coins.current, data->coins.total); + DrawText(buffer, gui_x, data->game_rec.y + data->game_rec.height, 24, BLACK); EndTextureMode(); } diff --git a/scenes/scene_systems.c b/scenes/scene_systems.c index d88f515..d34d9fb 100644 --- a/scenes/scene_systems.c +++ b/scenes/scene_systems.c @@ -65,6 +65,8 @@ bool load_level_tilemap(LevelScene_t* scene, unsigned int level_num) scene->data.tilemap.width = lvl_map.width; scene->data.tilemap.height = lvl_map.height; scene->data.tilemap.n_tiles = n_tiles; + scene->data.coins.current = 0; + scene->data.coins.total = lvl_map.n_chests; clear_entity_manager(&scene->scene.ent_manager);