Add chest count in main game

main
En Yi 2024-08-20 16:38:07 +08:00
parent bae17e8a87
commit f4167c6270
5 changed files with 11 additions and 2 deletions

View File

@ -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);

View File

@ -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;

View File

@ -77,6 +77,7 @@ with open(converted_filename, 'wb+') as out_file:
out_file.write(struct.pack("<I", n_levels))
# Then loop the levels. Read the layerIndstances
for level in level_pack_data["levels"]:
n_chests : int = 0
# Search for __identifier for the level layout
level_name = level["identifier"]
print("Parsing level", level_name)
@ -104,6 +105,8 @@ with open(converted_filename, 'wb+') as out_file:
for i, tile in enumerate(level_layout["gridTiles"]):
try:
tiles_info[tile["d"][0]][0] = ids_tiletype_map[tile["t"]]
if tiles_info[tile["d"][0]][0] == ENUMIDS_TILETYPE_MAPPING ["Chest"]:
n_chests += 1
except Exception as e:
print("Error on tile", i, i % width, i // height)
print(e)
@ -117,7 +120,7 @@ with open(converted_filename, 'wb+') as out_file:
x,y = ent["__grid"]
tiles_info[y*width + x][0] = ENUMIDS_TILETYPE_MAPPING[ent["__identifier"]]
out_file.write(struct.pack("<32s2H", level_name.encode('utf-8'), width, height))
out_file.write(struct.pack("<32s3H", level_name.encode('utf-8'), width, height, n_chests))
for tile in tiles_info:
out_file.write(struct.pack("<3Bx", *tile))

View File

@ -51,6 +51,8 @@ static void level_scene_render_func(Scene_t* scene)
print_mempool_stats(buffer);
DrawText(buffer, gui_x, 150, 12, BLACK);
sprintf(buffer, "Chests: %u / %u", data->coins.current, data->coins.total);
DrawText(buffer, gui_x, data->game_rec.y + data->game_rec.height, 24, BLACK);
EndTextureMode();
}

View File

@ -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);