Add chest count in main game
parent
bae17e8a87
commit
f4167c6270
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue