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