Update options.py to generate JSON files to be used with player-settings pages
This commit is contained in:
parent
d2c420a1fd
commit
8ba408385b
|
@ -2,16 +2,56 @@ import os
|
||||||
from Utils import __version__
|
from Utils import __version__
|
||||||
from jinja2 import Template
|
from jinja2 import Template
|
||||||
import yaml
|
import yaml
|
||||||
|
import json
|
||||||
|
|
||||||
from worlds.AutoWorld import AutoWorldRegister
|
from worlds.AutoWorld import AutoWorldRegister
|
||||||
|
|
||||||
target_folder = os.path.join("WebHostLib", "static", "generated")
|
target_folder = os.path.join("WebHostLib", "static", "generated")
|
||||||
|
|
||||||
|
|
||||||
def create():
|
def create():
|
||||||
for game_name, world in AutoWorldRegister.world_types.items():
|
for game_name, world in AutoWorldRegister.world_types.items():
|
||||||
res = Template(open(os.path.join("WebHostLib", "templates", "options.yaml")).read()).render(
|
res = Template(open(os.path.join("WebHostLib", "templates", "options.yaml")).read()).render(
|
||||||
options=world.options, __version__ = __version__, game=game_name, yaml_dump = yaml.dump
|
options=world.options, __version__=__version__, game=game_name, yaml_dump=yaml.dump
|
||||||
)
|
)
|
||||||
|
|
||||||
with open(os.path.join(target_folder, game_name+".yaml"), "w") as f:
|
with open(os.path.join(target_folder, game_name + ".yaml"), "w") as f:
|
||||||
f.write(res)
|
f.write(res)
|
||||||
|
|
||||||
|
# Generate JSON files for player-settings pages
|
||||||
|
player_settings = {
|
||||||
|
"readOnly": {
|
||||||
|
"description": "Generated by https://archipelago.gg/",
|
||||||
|
"game": game_name,
|
||||||
|
},
|
||||||
|
"generalOptions": {
|
||||||
|
"name": "Player",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
game_options = {}
|
||||||
|
for option_name, option in world.options.items():
|
||||||
|
if option.options:
|
||||||
|
this_option = {
|
||||||
|
"type": "select",
|
||||||
|
"friendlyName": option.friendly_name if hasattr(option, "friendly_name") else option_name,
|
||||||
|
"description": option.__doc__ if option.__doc__ else "Please document me!",
|
||||||
|
"defaultValue": None,
|
||||||
|
"options": []
|
||||||
|
}
|
||||||
|
|
||||||
|
for sub_option_name, sub_option_id in option.options.items():
|
||||||
|
this_option["options"].append({
|
||||||
|
"name": sub_option_name,
|
||||||
|
"value": sub_option_name,
|
||||||
|
})
|
||||||
|
|
||||||
|
if sub_option_id == option.default:
|
||||||
|
this_option["defaultValue"] = sub_option_name
|
||||||
|
|
||||||
|
game_options[option_name] = this_option
|
||||||
|
|
||||||
|
player_settings["gameOptions"] = game_options
|
||||||
|
|
||||||
|
with open(os.path.join(target_folder, game_name + ".json"), "w") as f:
|
||||||
|
f.write(json.dumps(player_settings, indent=2, separators=(',', ': ')))
|
||||||
|
|
Loading…
Reference in New Issue