44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
|
import json
|
||
|
import sys
|
||
|
|
||
|
# Related commands:
|
||
|
# BLPConverter.exe /FBLP_BGRA .\UIFrames.png
|
||
|
# python .\texturepack.py .\UIFrames.json
|
||
|
|
||
|
assert(len(sys.argv) == 2)
|
||
|
|
||
|
with open(sys.argv[1]) as f:
|
||
|
info = json.loads(f.read())
|
||
|
|
||
|
def get_image_name(file_name):
|
||
|
name, ext = file_name.split(".")
|
||
|
assert(ext in ("tga", "svg", "png"))
|
||
|
return name
|
||
|
|
||
|
assert(info['meta']['scale'] == "1")
|
||
|
total_w = info['meta']['size']['w']
|
||
|
total_h = info['meta']['size']['h']
|
||
|
name = get_image_name(info['meta']['image'])
|
||
|
|
||
|
OUTER_TEMPLATE = """
|
||
|
\t\twidth = {},
|
||
|
\t\theight = {},
|
||
|
\t\tcoord = {{
|
||
|
{}
|
||
|
\t\t}}
|
||
|
"""
|
||
|
|
||
|
inner_parts = []
|
||
|
for file_name, frame_info in info['frames'].items():
|
||
|
file_name = get_image_name(file_name)
|
||
|
assert(not frame_info['trimmed'] and not frame_info['rotated'])
|
||
|
x = frame_info['frame']['x']
|
||
|
y = frame_info['frame']['y']
|
||
|
w = frame_info['frame']['w']
|
||
|
h = frame_info['frame']['h']
|
||
|
inner_parts += ["\t\t\t[\"{}\"] = {{ {}, {}, {}, {} }}".format(file_name, x, x + w, y, y + h)]
|
||
|
inner_parts.sort()
|
||
|
|
||
|
with open(name + ".lua", 'w') as f:
|
||
|
f.write(OUTER_TEMPLATE.format(total_w, total_h, ",\n".join(inner_parts)))
|