Add spoiler json output option

This commit is contained in:
2025-03-05 19:06:19 -06:00
parent 8ecf4e530a
commit 88224a5aca
3 changed files with 9 additions and 0 deletions

2
.gitignore vendored
View File

@@ -1,6 +1,8 @@
.idea
.vscode
*_Spoiler.txt
*_Spoiler.json
*_Meta.json
*.pyc
*.sfc
*.wixobj

View File

@@ -19,6 +19,7 @@ class ArgumentDefaultsHelpFormatter(argparse.RawTextHelpFormatter):
def start():
parser = argparse.ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
parser.add_argument('--create_spoiler', help='Output a Spoiler File', action='store_true')
parser.add_argument('--json_spoiler', help='Output a JSON Spoiler File', action='store_true')
parser.add_argument('--logic', default='noglitches', const='noglitches', nargs='?', choices=['noglitches', 'minorglitches', 'nologic'],
help='''\
Select Enforcement of Item Requirements. (default: %(default)s)

View File

@@ -144,6 +144,12 @@ def main(args, seed=None):
if args.create_spoiler and not args.jsonout:
world.spoiler.to_file(output_path('%s_Spoiler.txt' % outfilebase))
if args.json_spoiler:
with open(output_path('%s_Spoiler.json' % outfilebase), 'w') as outfile:
outfile.write(world.spoiler.to_json())
with open(output_path('%s_Meta.json' % outfilebase), 'w') as outfile:
outfile.write(json.dumps(world.spoiler.metadata))
if not args.skip_playthrough:
logger.info('Calculating playthrough.')
create_playthrough(world)