mirror of
https://git.planet-casio.com/Slyvtt/Collab_RPG.git
synced 2025-04-19 01:17:10 +02:00
Made map importation from tmx a bit cleaner + map structure slightly lighter
This commit is contained in:
parent
5a1ba659a7
commit
e0e4140c9b
3 changed files with 80 additions and 25 deletions
|
@ -40,29 +40,82 @@ def convert_map(input, output, params, target):
|
|||
nbTilelayer = ["data" in i for i in data["layers"]].count(True) - 1
|
||||
print( nbTilelayer)
|
||||
|
||||
#index of the various layers (may change from one map to another)
|
||||
layer_walkable = 0
|
||||
layer_foreground = 0
|
||||
layer_background = 0
|
||||
|
||||
|
||||
#create the structure of the map
|
||||
structMap = fxconv.Structure()
|
||||
|
||||
structMap += fxconv.u32(w) + fxconv.u32(h) + fxconv.u32(nbTilelayer)
|
||||
structMap += fxconv.u16(w) + fxconv.u16(h) + fxconv.u16(nbTilelayer)
|
||||
structMap += fxconv.u16(tileset_size)
|
||||
structMap += fxconv.ref(f"img_{nameTilesetFree}")
|
||||
structMap += fxconv.u32(tileset_size)
|
||||
|
||||
|
||||
#extraction of the data contained in the layer "Walkable" of the map
|
||||
for i in range(nbTilelayer+1):
|
||||
datavalid = data["layers"][i]
|
||||
if datavalid["name"]=="Walkable":
|
||||
layer_walkable = i
|
||||
print( "Walkable Tile Data in layer : ", layer_walkable)
|
||||
break
|
||||
elif i==nbTilelayer:
|
||||
printf( "ERROR : No Walkable layer data !!!" )
|
||||
|
||||
|
||||
walk_data = bytes()
|
||||
layer = data["layers"][nbTilelayer]
|
||||
layer = data["layers"][layer_walkable]
|
||||
for tile in layer["data"]:
|
||||
if tile == 0: walk_data += fxconv.u16(tile)
|
||||
else : walk_data += fxconv.u16(tile-indexWalkable)
|
||||
|
||||
#print( tile )
|
||||
if tile == 0: walk_data += fxconv.u8(tile) #if walkable_data = 0 then it is a blanck cell so nothing to change
|
||||
else : walk_data += fxconv.u8(tile-indexWalkable) #if !=0 than we need to shift the tile number by considering the first tileID (given by indexwalkable)
|
||||
structMap += fxconv.ptr(walk_data)
|
||||
|
||||
#generate the array of tiles from the layer
|
||||
for i in range(nbTilelayer):
|
||||
print(i)
|
||||
layer_data = bytes()
|
||||
layer = data["layers"][i]
|
||||
for tile in layer["data"]:
|
||||
layer_data += fxconv.u16(tile-1)
|
||||
|
||||
structMap += fxconv.ptr(layer_data)
|
||||
#extraction of the data contained in the layer "Background" and "Foreground" of the map
|
||||
|
||||
|
||||
#import the Background layer of the map
|
||||
for i in range(nbTilelayer+1):
|
||||
datavalid = data["layers"][i]
|
||||
if datavalid["name"]=="Background":
|
||||
layer_background = i
|
||||
print( "Background Tile Data in layer : ", layer_background)
|
||||
break
|
||||
elif i==nbTilelayer:
|
||||
printf( "ERROR : No Background layer data !!!" )
|
||||
|
||||
|
||||
layer_data = bytes()
|
||||
layer = data["layers"][layer_background]
|
||||
for tile in layer["data"]:
|
||||
layer_data += fxconv.u16(tile-1)
|
||||
structMap += fxconv.ptr(layer_data)
|
||||
|
||||
|
||||
|
||||
#import the foreground layer of the map
|
||||
for i in range(nbTilelayer+1):
|
||||
datavalid = data["layers"][i]
|
||||
if datavalid["name"]=="Foreground":
|
||||
layer_foreground = i
|
||||
print( "Foreground Tile Data in layer : ", layer_foreground)
|
||||
break
|
||||
elif i==nbTilelayer:
|
||||
printf( "ERROR : No Foreground layer data !!!" )
|
||||
|
||||
|
||||
layer_data = bytes()
|
||||
layer = data["layers"][layer_foreground]
|
||||
for tile in layer["data"]:
|
||||
layer_data += fxconv.u16(tile-1)
|
||||
structMap += fxconv.ptr(layer_data)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#generate !
|
||||
fxconv.elf(structMap, output, "_" + params["name"], **target)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.10.1" orientation="orthogonal" renderorder="right-down" width="48" height="24" tilewidth="8" tileheight="8" infinite="0" nextlayerid="5" nextobjectid="1">
|
||||
<map version="1.8" tiledversion="1.8.0" orientation="orthogonal" renderorder="right-down" width="48" height="24" tilewidth="8" tileheight="8" infinite="0" nextlayerid="5" nextobjectid="1">
|
||||
<editorsettings>
|
||||
<export target="level0_walkable.json" format="json"/>
|
||||
</editorsettings>
|
||||
|
@ -14,7 +14,7 @@
|
|||
257,2,2,385,2,2,385,2,265,266,2,2,208,209,352,353,257,2,2,2,2,2,2,297,298,299,300,2,2,2,2,25,26,27,27,97,98,99,98,99,100,26,26,27,28,131,2,2,
|
||||
281,176,2,2,2,2,2,385,289,290,2,2,232,233,376,377,281,2,326,2,154,153,190,2,2,2,2,2,2,2,2,49,2,2,2,121,59,60,60,61,124,2,2,2,52,132,2,2,
|
||||
2,2,2,2,2,385,2,2,265,266,2,385,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,297,298,299,300,73,2,2,2,145,83,84,84,85,148,2,2,2,76,132,2,2,
|
||||
2,2,2,2,326,2,385,2,265,266,2,2,2,2,214,215,2,2,2,2,2,2,190,2,2,2,2,2,2,385,2,49,404,405,2,169,107,108,108,109,172,2,402,403,76,132,2,2,
|
||||
2,2,2,2,326,2,385,2,265,266,2,2,2,2,2,2,2,2,2,2,2,2,190,2,2,2,2,2,2,385,2,49,404,405,2,169,107,108,108,109,172,2,402,403,76,132,2,2,
|
||||
2,2,2,2,2,2,2,2,289,290,2,258,259,260,238,239,260,260,261,262,262,263,264,2,2,2,2,2,2,2,385,49,134,135,2,2,2,2,2,2,2,2,134,135,52,132,297,298,
|
||||
2,2,2,2,2,2,2,2,265,266,2,282,283,284,285,285,285,285,285,285,286,287,288,297,298,299,300,2,117,118,2,73,373,2,217,2,190,373,373,190,2,219,2,373,76,132,2,2,
|
||||
297,298,299,300,2,2,2,2,290,2,2,306,307,308,309,308,309,308,309,310,310,311,312,131,2,339,340,2,134,135,2,97,98,99,99,98,99,2,2,98,98,99,98,99,100,132,2,2,
|
||||
|
@ -42,7 +42,7 @@
|
|||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,302,0,130,129,166,0,0,0,0,249,250,251,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,202,
|
||||
0,0,0,0,278,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,202,203,204,273,274,275,276,0,356,357,0,0,0,0,0,0,0,0,354,355,0,0,225,226,
|
||||
201,202,203,204,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,225,226,227,228,0,0,0,0,0,380,381,0,0,0,0,0,0,0,0,378,379,0,0,249,250,
|
||||
225,226,227,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,250,251,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,273,274,
|
||||
225,226,227,228,0,0,0,0,0,0,0,0,0,0,214,215,0,0,0,0,0,0,0,249,250,251,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,273,274,
|
||||
249,250,251,252,201,202,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,273,274,275,276,0,93,94,0,0,0,0,0,0,166,0,0,166,0,0,0,0,0,0,0,0,
|
||||
273,274,275,276,225,226,227,228,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,201,203,
|
||||
0,0,0,0,249,250,251,252,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,225,227,
|
||||
|
@ -61,7 +61,7 @@
|
|||
226,227,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,226,228,273,274,275,276,225,227,228,201,202,203,204,201,202,203,204,0,201,202,203,204,249,250,251,252,273,274,275
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="3" name="Walkable" width="48" height="24" visible="0">
|
||||
<layer id="3" name="Walkable" width="48" height="24">
|
||||
<data encoding="csv">
|
||||
0,0,410,410,0,0,0,0,410,410,0,0,0,0,0,0,0,410,410,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,410,410,0,0,0,410,410,410,410,0,410,410,
|
||||
410,410,410,410,410,410,410,410,410,410,410,410,0,0,410,410,410,410,410,0,0,0,0,0,0,0,0,0,410,410,0,0,0,0,0,410,410,410,410,410,410,410,410,410,410,0,410,410,
|
||||
|
@ -70,15 +70,15 @@
|
|||
410,0,0,0,0,0,0,0,0,0,0,0,410,411,411,411,410,0,0,0,0,0,0,0,410,410,0,0,0,0,0,410,410,410,410,410,410,410,410,410,410,410,410,410,410,0,0,0,
|
||||
410,0,0,0,0,0,0,0,0,0,0,0,411,411,411,411,410,0,410,0,410,410,410,0,0,0,0,0,0,0,0,410,0,0,0,410,410,410,410,410,410,0,0,0,410,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,410,410,0,410,0,0,0,410,410,410,410,410,410,0,0,0,410,0,0,0,
|
||||
0,0,0,0,410,0,0,0,0,0,0,0,0,0,410,410,0,0,0,0,0,0,410,0,0,0,0,0,0,0,0,410,410,410,0,410,410,0,0,410,410,0,410,410,410,0,0,0,
|
||||
0,0,0,0,410,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,410,0,0,0,0,0,0,0,0,410,410,410,0,410,410,0,0,410,410,0,410,410,410,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,410,410,410,410,410,410,410,410,410,410,410,410,0,0,0,0,0,0,0,0,410,0,0,0,0,0,0,0,0,0,0,0,0,410,0,0,410,
|
||||
0,0,0,0,0,0,0,0,0,0,0,410,410,410,410,410,410,410,410,410,410,410,410,0,410,410,0,0,410,410,0,410,0,0,0,0,410,0,0,410,0,0,0,0,410,0,0,0,
|
||||
0,410,410,0,0,0,0,0,0,0,0,410,410,410,410,410,410,410,410,410,410,410,410,0,0,410,0,0,0,0,0,410,410,410,410,410,410,0,0,410,410,410,410,410,410,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,410,410,410,410,410,410,410,410,410,410,410,410,0,0,410,410,0,0,0,0,410,410,410,410,410,410,0,0,410,410,410,410,410,410,0,0,0,
|
||||
0,0,0,0,0,410,410,0,0,0,0,410,410,410,410,410,410,410,410,410,410,410,410,0,0,0,0,0,0,0,0,410,410,410,410,410,410,0,0,410,410,410,410,410,410,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,410,410,410,410,410,410,410,410,410,410,410,410,0,0,0,0,0,0,0,0,410,410,410,410,410,410,0,0,410,410,410,410,0,0,410,410,410,
|
||||
0,0,0,0,412,412,412,412,412,0,0,410,410,410,410,410,0,0,410,410,410,410,410,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,410,
|
||||
410,410,0,0,412,412,412,412,412,0,0,0,0,0,0,0,0,0,0,0,0,0,410,410,0,0,0,0,0,0,0,410,0,0,0,410,410,0,0,0,0,0,0,410,0,0,0,410,
|
||||
0,0,0,0,412,412,412,412,412,0,0,410,410,410,410,410,0,0,410,410,410,410,410,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,
|
||||
410,410,0,0,412,412,412,412,412,0,0,0,0,0,0,0,0,0,0,0,0,0,410,410,0,0,0,0,0,0,0,410,0,0,0,410,410,0,0,0,0,0,0,410,0,0,0,0,
|
||||
0,0,0,0,412,412,412,412,412,0,0,410,410,0,0,0,0,0,0,0,0,0,410,410,0,0,410,410,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,410,410,410,410,
|
||||
0,0,0,0,412,412,412,412,412,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,410,410,410,410,
|
||||
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,410,410,410,410,
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define MAPSTRUCT_H
|
||||
|
||||
#include <gint/display.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
|
||||
|
@ -17,19 +18,20 @@ typedef struct {
|
|||
|
||||
typedef struct {
|
||||
/* width, height and the number of layer of the map */
|
||||
int w, h, nblayers;
|
||||
uint16_t w, h;
|
||||
uint16_t nblayers;
|
||||
uint16_t tileset_size;
|
||||
|
||||
/* the tileset to use */
|
||||
bopti_image_t *tileset;
|
||||
int tileset_size;
|
||||
|
||||
/* contain the properties of the tiles */
|
||||
/* this is given by the layer Walkable of the map in Tiled
|
||||
*/
|
||||
short *walkable;
|
||||
uint8_t *walkable;
|
||||
|
||||
/* list of all the tiles */
|
||||
short *layers[];
|
||||
uint16_t *layers[];
|
||||
|
||||
|
||||
} Map;
|
||||
|
|
Loading…
Add table
Reference in a new issue