Raycaster_G90/maps/convert/convert.py

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")