From 53b0ddf75066274bef11cbcec873dd5164bc63c1 Mon Sep 17 00:00:00 2001 From: SlyVTT Date: Tue, 8 Aug 2023 09:46:07 +0200 Subject: [PATCH] converter.py correctly reads and treat maps in world file (importation into data structure in C files not fully working yet --- CMakeLists.txt | 13 +-- .../tileset2b_CG.png | Bin 34415 -> 0 bytes .../tilesetEGA64_CG_bak.png | Bin 45511 -> 0 bytes assets/converters.py | 88 +++++++++++++++--- assets/fxconv-metadata.txt | 11 ++- clean | 8 ++ src/main.c | 11 ++- src/mapdata.h | 8 +- src/mapstruct.h | 15 +-- src/player.c | 2 +- 10 files changed, 119 insertions(+), 37 deletions(-) delete mode 100644 assets-cg/levels/not used anymore (backup)/tileset2b_CG.png delete mode 100644 assets-cg/levels/not used anymore (backup)/tilesetEGA64_CG_bak.png create mode 100755 clean diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b2875c..1ce4118 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,10 +51,11 @@ set(SOURCES ) # Shared assets, fx-9860G-only assets and fx-CG-50-only assets set(ASSETS - assets/level0.json - assets/level1.json - assets/level2.json - assets/level3.json + #assets/level0.json + #assets/level1.json + #assets/level2.json + #assets/level3.json + assets/WorldRPG.world # ... ) @@ -89,7 +90,7 @@ set(ASSETS_fx_2b # ... ) -fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} ${ASSETS_fx_1b} ${ASSETS_fx_2b} ${ASSETS_cg_2b} ${ASSETS_cg_EGA64} WITH_METADATA) +fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} ${ASSETS_fx_1b} ${ASSETS_fx_2b} ${ASSETS_cg_2b} ${ASSETS_cg_EGA64} WITH_METADATA) if("${FXSDK_PLATFORM_LONG}" STREQUAL fx9860G) add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}} ${ASSETS_${FXSDK_PLATFORM}_${COLORMODE_fx}} ) @@ -146,4 +147,4 @@ elseif("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50) NAME "Col RPG EGA" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png) endif() -endif() \ No newline at end of file +endif() diff --git a/assets-cg/levels/not used anymore (backup)/tileset2b_CG.png b/assets-cg/levels/not used anymore (backup)/tileset2b_CG.png deleted file mode 100644 index 2e6b6e61b43e02229fe9de5ae304d282069d0523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34415 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�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

Agb-5e^ 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 diff --git a/assets/converters.py b/assets/converters.py index 7a9cb8b..bdab622 100644 --- a/assets/converters.py +++ b/assets/converters.py @@ -3,15 +3,80 @@ import fxconv import json import pathlib import csv +import os def convert(input, output, params, target): if params["custom-type"] == "map": - convert_map(input, output, params, target) + #convert_map(input, output, params, target) + #return 0 + return 1 + elif params["custom-type"] == "world": + convert_world(input, output, params, target) return 0 else: return 1 + + +def convert_world(input, output, params, target): + print( "WE ARE COMPUTING THE WORLD", input ) + + data = json.load(open(input, "r")) + nbMaps = ["fileName" in i for i in data["maps"]].count(True) + print( "We have to treat ", nbMaps, " maps") + print( "So let's go ... ") + + structWorld = fxconv.Structure() + + for i in range(nbMaps): + nameMap = data["maps"][i]["fileName"].replace(".tmx","") + nameMapFree = nameMap.split("/")[-1] + #count the number of "back" (cd ..) to locate the map on the computer + nbRetour = nameMap.count("..")+1 + #create the map absolute path + + + nameTMX = "/".join(input.split("/")[:-nbRetour]) + "/" + nameMap + ".tmx" + nameJSON = "/".join(input.split("/")[:-nbRetour]) + "/" + nameMap + ".json" + + commandline = 'tiled --export-map json ' + nameTMX + ' ' + nameJSON + print( "TILED COMMAND LINE FOR MAPS : ", commandline ) + os.system( commandline ) + + + mapPath = "/".join(input.split("/")[:-nbRetour]) + "/" + nameMap + ".json" + print("Map ", i , " name : ", mapPath ) + + + + xmin = data["maps"][i]["x"] + print( "xmin = ", xmin ) + structWorld += fxconv.u16( xmin ) #xmin parameter + + ymin = data["maps"][i]["y"] + print( "ymin = ", ymin ) + structWorld += fxconv.u16( ymin ) #ymin parameter + + xmax = data["maps"][i]["x"] + data["maps"][i]["width"] + print( "xmax = ", xmax ) + structWorld += fxconv.u16( xmax ) #xmax parameter + + ymax = data["maps"][i]["y"] + data["maps"][i]["height"] + print( "ymax = ", ymax ) + structWorld += fxconv.u16( ymax ) #ymax parameter + + map = convert_map( mapPath, output, params, target ) + print( "Map = ", map ) + structWorld += map + + #generate ! + fxconv.elf(structWorld, output, "_" + params["name"], **target) + + + + def convert_map(input, output, params, target): + print( "WE ARE COMPUTING THE MAP : ", input ) data = json.load(open(input, "r")) #find the tileset in use. it's a relative path (like ../tileset.tsx) @@ -22,9 +87,14 @@ def convert_map(input, output, params, target): #count the number of "back" (cd ..) to locate the tileset on the computer nbRetour = nameTileset.count("..")+1 #create the tileset absolute path - tilesetPath = "/".join(input.split("/")[:-nbRetour]) + "/" + nameTileset + ".json" + tilesetTSX = "/".join(input.split("/")[:-nbRetour]) + "/" + nameTileset + ".tsx" + tilesetJSON = "/".join(input.split("/")[:-nbRetour]) + "/" + nameTileset + ".json" + + commandline = 'tiled --export-tileset json ' + tilesetTSX + ' ' + tilesetJSON + print( "TILED COMMAND LINE FOR TILESET : ", commandline ) + os.system( commandline ) - tileset = open(tilesetPath, "r") + tileset = open(tilesetJSON, "r") data_tileset = json.load(tileset) tileset_size = data_tileset.get("columns") tileset.close() @@ -45,7 +115,6 @@ def convert_map(input, output, params, target): layer_foreground = 0 layer_background = 0 - #create the structure of the map structMap = fxconv.Structure() @@ -64,7 +133,6 @@ def convert_map(input, output, params, target): elif i==nbTilelayer: printf( "ERROR : No Walkable layer data !!!" ) - walk_data = bytes() layer = data["layers"][layer_walkable] for tile in layer["data"]: @@ -87,7 +155,6 @@ def convert_map(input, output, params, target): elif i==nbTilelayer: printf( "ERROR : No Background layer data !!!" ) - layer_data = bytes() layer = data["layers"][layer_background] for tile in layer["data"]: @@ -95,7 +162,6 @@ def convert_map(input, output, params, target): structMap += fxconv.ptr(layer_data) - #import the foreground layer of the map for i in range(nbTilelayer+1): datavalid = data["layers"][i] @@ -106,7 +172,6 @@ def convert_map(input, output, params, target): elif i==nbTilelayer: printf( "ERROR : No Foreground layer data !!!" ) - layer_data = bytes() layer = data["layers"][layer_foreground] for tile in layer["data"]: @@ -114,9 +179,8 @@ def convert_map(input, output, params, target): structMap += fxconv.ptr(layer_data) - - - #generate ! - fxconv.elf(structMap, output, "_" + params["name"], **target) + #fxconv.elf(structMap, output, "_" + params["name"], **target) + + return structMap diff --git a/assets/fxconv-metadata.txt b/assets/fxconv-metadata.txt index ddb88cb..77b9eb0 100644 --- a/assets/fxconv-metadata.txt +++ b/assets/fxconv-metadata.txt @@ -1,3 +1,8 @@ -*.json: - custom-type: map - name_regex: (.*)\.json map_\1 +# *.json: +# custom-type: map +# name_regex: (.*)\.json map_\1 + + +*.world: + custom-type: world + name: worldRPG diff --git a/clean b/clean new file mode 100755 index 0000000..6cf836c --- /dev/null +++ b/clean @@ -0,0 +1,8 @@ +cd assets +rm -f *.json +cd .. +rm -r build-cg +rm -r build-fx +rm *.g1a +rm *.g3a + diff --git a/src/main.c b/src/main.c index cc72975..2ff45f5 100644 --- a/src/main.c +++ b/src/main.c @@ -21,14 +21,20 @@ #include "game.h" #include "mapdata.h" +#include "mapstruct.h" #include "dialogs.h" extern bopti_image_t player_face_img; +extern World worldRPG[]; + + + + /* Game data (defined in "game.h")*/ Game game = { - &map_level0, + &worldRPG[0].mapdata, {10*PXSIZE, 48*PXSIZE, 0, 0, 100, SPEED}, false, false, false, 0 }; @@ -99,10 +105,13 @@ int main(void) { dgray(DGRAY_ON); #endif + /* showtext_dialog(&game, &player_face_img, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet.", true, true); int in = showtext_dialog_ask(&game, &player_face_img, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet.", true, false, "Lorem\0ipsum", 2, 0); if(in) showtext_dialog(&game, &player_face_img, "You choosed ipsum", false, true); else showtext_dialog(&game, &player_face_img, "You choosed Lorem", false, true); + */ + do{ /* clear screen */ dclear(C_WHITE); diff --git a/src/mapdata.h b/src/mapdata.h index e1ae6a5..5d3a221 100644 --- a/src/mapdata.h +++ b/src/mapdata.h @@ -1,10 +1,10 @@ #ifndef MAPDATA_H #define MAPDATA_H -extern Map map_level0; -extern Map map_level1; -extern Map map_level2; -extern Map map_level3; +#include +#include "mapstruct.h" + +extern World worldRPG[]; #endif diff --git a/src/mapstruct.h b/src/mapstruct.h index 7ac7d9a..c80bf30 100644 --- a/src/mapstruct.h +++ b/src/mapstruct.h @@ -26,21 +26,16 @@ typedef struct { } Map; - typedef struct { - - /* numberof maps in the world */ - uint16_t nbmaps; - /* table of coordinates for each map, each is a table of nbmaps elements */ /* area of map N is given by (xmin[N], ymin[N]) --> (xmax[N], ymax[N]) */ - uint16_t *xmin; - uint16_t *ymin; - uint16_t *xmax; - uint16_t *ymax; + uint16_t xmin; + uint16_t ymin; + uint16_t xmax; + uint16_t ymax; /* pointer to the currentmap*/ - Map *currentmap; + Map mapdata; } World; diff --git a/src/player.c b/src/player.c index b466f56..78330fa 100644 --- a/src/player.c +++ b/src/player.c @@ -28,7 +28,7 @@ extern bopti_image_t demo_player_img; void player_draw(Player *player) { dimage(player->px-P_WIDTH/2, player->py-P_HEIGHT/2, &demo_player_img); - dprint( 10, 10, C_RED, "X= %d - Y= %d", player->x, player->y ); + //dprint( 10, 10, C_RED, "X= %d - Y= %d", player->x, player->y ); } void player_move(Map *map_level, Player *player, Direction direction) {