109 lines
2.7 KiB
Python
109 lines
2.7 KiB
Python
#Fcalva 17/02/2023
|
|
|
|
import os
|
|
import os.path
|
|
import sys
|
|
import json
|
|
|
|
|
|
def conv_log(msg):
|
|
print("convert.py : "+msg)
|
|
|
|
conv_log("Converting maps to C object...")
|
|
|
|
try:
|
|
if sys.argv[1] == "script":
|
|
converted_path = "./maps/convert/converted.c"
|
|
maps_path = "./maps/"
|
|
except:
|
|
converted_path = "./converted.c"
|
|
maps_path = "../"
|
|
|
|
try:
|
|
convert = open(converted_path, mode="x+t", buffering=1, encoding="utf-8", newline="\n")
|
|
convert.write('#include "../../src/fixed.h"\n')
|
|
convert.write('#include "../../src/types.h"\n')
|
|
except:
|
|
conv_log("converted.c wasn't deleted !")
|
|
|
|
folder = os.listdir(path=maps_path)
|
|
|
|
for i in range(0, len(folder)):
|
|
flen = len(folder[i])-1
|
|
extention = folder[i].split(".")
|
|
extention = extention[len(extention)-1]
|
|
if extention == "rcmap":
|
|
continue
|
|
else:
|
|
folder.pop(i)
|
|
|
|
for map in folder:
|
|
conv_log("Coverting map "+map)
|
|
data = json.load(open(maps_path+map, "r"))
|
|
mapname = map.split(".")[0]
|
|
w = data["w"]
|
|
h = data["h"]
|
|
d = data["d"]
|
|
scount = data["sprite_count"]
|
|
|
|
convert.write("uint8_t "+mapname+"_floor[]={")
|
|
for i in range(0, w*h-1):
|
|
convert.write(str(data["floor"][i])+",")
|
|
convert.write(str(data["floor"][w*h-1]))
|
|
convert.write("};\n")
|
|
|
|
convert.write("uint8_t "+mapname+"_wall[]={")
|
|
for i in range(0, w*h*d-1):
|
|
c = data["wall"][i]
|
|
if i < w*h:
|
|
for j in range(0, d):
|
|
if data["wall"][i+w*h*j] != 0:
|
|
c=data["wall"][i]
|
|
break
|
|
c=255
|
|
convert.write(str(c)+",")
|
|
convert.write(str(data["wall"][w*h*d-1]))
|
|
convert.write("};\n")
|
|
|
|
convert.write("Sprite "+mapname+"_sprites[]={")
|
|
for i in range(0, scount-1):
|
|
sprite = data["sprites"][i]
|
|
convert.write("{")
|
|
convert.write(str(sprite[0])+",")
|
|
convert.write(str(sprite[1])+",")
|
|
convert.write(str(sprite[2])+",")
|
|
convert.write(str(sprite[3]))
|
|
convert.write("},")
|
|
try:
|
|
sprite = data["sprites"][scount-1]
|
|
convert.write("{")
|
|
convert.write(str(sprite[0])+",")
|
|
convert.write(str(sprite[1])+",")
|
|
convert.write(str(sprite[2])+",")
|
|
convert.write(str(sprite[3]))
|
|
convert.write("}};\n")
|
|
except:
|
|
convert.write("};\n")
|
|
|
|
convert.write("ShooterMap "+mapname+"={")
|
|
convert.write(str(w)+",")
|
|
convert.write(str(h)+",")
|
|
convert.write(str(d)+",")
|
|
convert.write(str(data["startpos_x"])+",")
|
|
convert.write(str(data["startpos_y"])+",")
|
|
convert.write(str(data["startpos_z"])+",")
|
|
convert.write(str(data["startdir_x"])+",")
|
|
convert.write(str(data["startdir_y"])+",")
|
|
convert.write(str(data["startplane_x"])+",")
|
|
convert.write(str(data["startplane_y"])+",")
|
|
|
|
convert.write("&"+mapname+"_floor,")
|
|
|
|
convert.write("&"+mapname+"_wall,")
|
|
|
|
convert.write(str(scount)+",")
|
|
|
|
convert.write("&"+mapname+"_sprites")
|
|
|
|
convert.write("};\n")
|