perfect_dark/tools/assetmgr/mktextures

51 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python3
import assetmgr
import json
import os
def main():
fd = open('src/assets/%s/textures.json' % os.environ['ROMID'], 'r')
data = fd.read()
fd.close()
rows = json.loads(data)
make_objects(rows)
make_header(rows)
def make_header(rows):
typename = 'texturenum'
enums = [row['id'] for row in rows]
filename = 'textures.h'
terminator = 'TEXTURE_END'
assetmgr.write_enums(typename, enums, filename, terminator)
def make_objects(rows):
databinary = bytes()
listbinary = bytes()
pos = 0
for row in rows:
contents = getcontents('src/assets/%s/textures/%s' % (os.environ['ROMID'], row['file']))
flags = ((row['flag00'] & 0x0f) << 4) | (row['surfacetype'] & 0x0f)
databinary += contents
listbinary += flags.to_bytes(1, 'big')
listbinary += pos.to_bytes(3, 'big')
listbinary += b'\x00\x00\x00\x00'
pos += len(contents)
listbinary += pos.to_bytes(4, 'big')
assetmgr.write_object(databinary, 'texturesdata.o')
assetmgr.write_object(listbinary, 'textureslist.o')
def getcontents(filename):
with open(filename, 'rb') as fd:
return fd.read()
main()