Source code for redeclipse.cli
import argparse
import json
import logging
from redeclipse import MapParser
from redeclipse.magicavoxel.writer import to_magicavoxel
log = logging.getLogger(__name__)
[docs]def parse(input):
mp = MapParser()
return mp.read(input)
[docs]def output_args(parser):
parser.add_argument('--mpz_out', type=argparse.FileType('w'), help='Output .mpz file')
parser.add_argument('--magica', type=argparse.FileType('wb'), help='Output .vox file')
parser.add_argument('--graph', type=argparse.FileType('w'), help='Output .json file')
[docs]def output(v, mymap, upm, prefabs, args):
if args.magica:
to_magicavoxel(v, args.magica, prefabs.TEXMAN)
if args.mpz_out:
prefabs.TEXMAN.emit_conf(args.mpz_out)
prefabs.TEXMAN.copy_data()
filename = args.mpz_out.name.replace('.mpz', '.cfg')
with open(filename, 'a') as handle:
for line in mymap.cfg_extra:
handle.write(line + '\n')
mymap.world = v.to_octree()
mymap.world[0].octsav = 0
mymap.write(args.mpz_out.name)
if args.graph:
data = {
"nodes": [{'id': id(None), 'name': 'None', 'label': 'None'}],
"links": []
}
for room in upm.rooms:
data['nodes'].append({
'id': id(room),
'name': room.name,
'label': room.name,
})
for a, b in upm.links:
la = upm.occupied.get(a, None)
lb = upm.occupied.get(b, None)
data['links'].append({
'source': id(la),
'target': id(lb),
'type': 'connected'
})
json.dump(data, args.graph)