From a12fb2e47fa1c2c435b937b29572adb3ecbd56db Mon Sep 17 00:00:00 2001 From: bgiraudr Date: Tue, 18 Jan 2022 18:59:09 +0100 Subject: [PATCH] Add dialog + update how object's layout are parse --- assets-cg/converters.py | 68 ++++++++++++++++------------------ assets-cg/fxconv-metadata.txt | 2 +- assets-cg/icon-sel.png | Bin 8388 -> 6375 bytes assets-cg/icon-uns.png | Bin 4629 -> 4575 bytes assets-cg/maps/inside/1.tmx | 13 ++++--- assets-cg/maps/inside/2.tmx | 10 ++--- assets-cg/maps/inside/3.tmx | 13 +++++-- assets-cg/maps/testCarte.tmx | 66 +++++++++++++++++++++++++++++++-- src/engine.c | 4 +- 9 files changed, 121 insertions(+), 55 deletions(-) diff --git a/assets-cg/converters.py b/assets-cg/converters.py index 6aeeafd..0a785d3 100644 --- a/assets-cg/converters.py +++ b/assets-cg/converters.py @@ -16,8 +16,9 @@ def convert_map(input, output, params, target): TILE_DOOR_OUT = 3 TILE_TALKABLE = 4 - with open(input, "r") as jsonData: - data = json.load(jsonData) + DIALOG_LAYOUT = "dialog" + + data = json.load(open(input, "r")) #find the tileset in use. it's a relative path (like ../tileset.tsx) nameTileset = data["tilesets"][0]["source"].replace(".tsx","") @@ -57,45 +58,24 @@ def convert_map(input, output, params, target): #Extract from the json the width, height w, h = data["width"], data["height"] - indexObjectlayer = None #nbTileLayer is the number of "true" layers (without ObjectsLayer) - nbTilelayer = len(data["layers"]) - for i in range(nbTilelayer): - try: - data["layers"][i]["data"] - nbTilelayer = i+1 - except KeyError: - indexObjectlayer = i - break - - if indexObjectlayer != None: - nbDialog = len(data["layers"][indexObjectlayer]["objects"]) - else: - nbDialog = 0 + nbTilelayer = ["data" in i for i in data["layers"]].count(True) + objectLayers = data["layers"][nbTilelayer:len(data["layers"])] + nbDialog = 0 structMap = fxconv.Structure() + dialogs = fxconv.Structure() + + for layer in objectLayers: + if layer.get("name") == DIALOG_LAYOUT: + nbDialog = len(layer["objects"]) + dialogs = parseDialog(layer) + else: + print("UNKNOWN LAYOUT FOUND : " + layer.get("name")) + structMap += fxconv.u32(w) + fxconv.u32(h) + fxconv.u32(nbTilelayer) + fxconv.u32(nbDialog) structMap += fxconv.ref(f"img_{nameTilesetFree}") - - dialogs = fxconv.Structure() - # print(indexObjectlayer) - if indexObjectlayer != None: - #generate all of the dialog - for i in data["layers"][indexObjectlayer]["objects"]: - dialogs += fxconv.u32(int(i["x"]/i["width"])) - #Tiled seem to start at the bottom y of the object - #So if tile is 16 px wide, you would start at line y = 1 - dialogs += fxconv.u32(int(i["y"]/i["width"])-1) - - try: - for j in i["properties"]: - if(j["value"] == ""): j["value"] = " " - dialogs += fxconv.string(j["value"]) - except KeyError: - dialogs += fxconv.string("default name") - dialogs += fxconv.string("default text") - structMap += fxconv.ptr(dialogs) #generation of the collision map (take the maximum of the layer except for bridges) @@ -130,4 +110,20 @@ def convert_map(input, output, params, target): structMap += fxconv.ptr(layer_data) #generate ! - fxconv.elf(structMap, output, "_" + params["name"], **target) \ No newline at end of file + fxconv.elf(structMap, output, "_" + params["name"], **target) + +def parseDialog(layer): + dialogs = fxconv.Structure() + for i in layer["objects"]: + dialogs += fxconv.u32(int(i["x"]/i["width"])) + #Tiled seem to start at the bottom y of the object + dialogs += fxconv.u32(int(i["y"]/i["width"])-1) + + try: + for j in i["properties"]: + if(j["value"] == ""): j["value"] = " " + dialogs += fxconv.string(j["value"]) + except KeyError: + dialogs += fxconv.string("default name") + dialogs += fxconv.string("default text") + return dialogs \ No newline at end of file diff --git a/assets-cg/fxconv-metadata.txt b/assets-cg/fxconv-metadata.txt index c5f692f..845e22f 100644 --- a/assets-cg/fxconv-metadata.txt +++ b/assets-cg/fxconv-metadata.txt @@ -1,7 +1,7 @@ tileset.png: type: bopti-image name: img_tileset - profile:p4 + profile: p4 spritesheet.png: type: bopti-image diff --git a/assets-cg/icon-sel.png b/assets-cg/icon-sel.png index 7137b504cfd44f62f3105ce7a203b9100a557d0f..c6151c5a62c94afff80567a94943ef0711a2b790 100644 GIT binary patch literal 6375 zcmV004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 LNkvXXu0mjfMjhGA diff --git a/assets-cg/maps/inside/1.tmx b/assets-cg/maps/inside/1.tmx index 991f10e..034794d 100644 --- a/assets-cg/maps/inside/1.tmx +++ b/assets-cg/maps/inside/1.tmx @@ -1,5 +1,5 @@ - + @@ -35,15 +35,18 @@ - - + + - - + + + + + diff --git a/assets-cg/maps/inside/2.tmx b/assets-cg/maps/inside/2.tmx index 913f180..3121d4e 100644 --- a/assets-cg/maps/inside/2.tmx +++ b/assets-cg/maps/inside/2.tmx @@ -46,17 +46,17 @@ 0,0,0,0,0,0,707,0,0,707,0,0,0,0,0 - + - - + + - - + + diff --git a/assets-cg/maps/inside/3.tmx b/assets-cg/maps/inside/3.tmx index 96c8bf9..a069a31 100644 --- a/assets-cg/maps/inside/3.tmx +++ b/assets-cg/maps/inside/3.tmx @@ -24,8 +24,8 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,710,710,0,0,0,0,679,0,0,0,0,710,710,0,0,710,710,0,0, -0,739,739,0,704,705,0,20,21,0,0,0,739,739,0,0,739,739,0,0, -0,0,0,0,733,734,0,49,50,654,655,0,0,0,0,0,0,0,0,0, +0,739,739,0,704,705,0,0,0,0,0,0,739,739,0,0,739,739,0,0, +0,0,0,0,733,734,0,0,0,654,655,0,0,0,0,0,0,0,0,0, 0,0,0,0,706,706,0,0,0,654,655,591,0,0,0,0,0,0,0,0, 0,0,591,614,615,615,616,0,0,711,713,620,0,0,0,0,0,0,0,0, 0,0,620,0,0,0,0,0,0,740,742,649,0,0,0,0,0,0,0,0, @@ -58,13 +58,18 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - + - + + + + + + diff --git a/assets-cg/maps/testCarte.tmx b/assets-cg/maps/testCarte.tmx index c29477e..ecbcc70 100644 --- a/assets-cg/maps/testCarte.tmx +++ b/assets-cg/maps/testCarte.tmx @@ -1,5 +1,5 @@ - + @@ -88,11 +88,11 @@ 294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,381,382,383,381,382,383,381,382,383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - + - + @@ -119,5 +119,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/engine.c b/src/engine.c index fc57ace..f944215 100644 --- a/src/engine.c +++ b/src/engine.c @@ -18,6 +18,8 @@ void engine_draw(struct Game const *game) { engine_draw_player(game); drect(0,0,DWIDTH,20,C_BLACK); drect(0,DHEIGHT-20,DWIDTH,DHEIGHT,C_BLACK); + drect(0,0,20,DHEIGHT,C_BLACK); + drect(DWIDTH-20,0,DWIDTH,DHEIGHT,C_BLACK); dprint(1,1,C_WHITE,"%d:%d",game->player->pos.x, game->player->pos.y); dprint(1,20,C_WHITE,"%d",game->player->sprint); @@ -28,7 +30,7 @@ void engine_draw_map(struct Game const *game) { const int y_offset = (game->camera.offset.y - DHEIGHT/2); for (int y = 1 ; y <= DHEIGHT / TILE_SIZE-1; y++) { - for (int x = 0 ; x <= DWIDTH / TILE_SIZE+1; x++) { + for (int x = 1 ; x <= DWIDTH / TILE_SIZE; x++) { for (int layer = 0 ; layer < game->map->nb_layers; layer++) { unsigned int tile_id = 0; //detect if the map is oob