71 lines
3.0 KiB
Python
71 lines
3.0 KiB
Python
|
|
from BaseClasses import Tutorial
|
|
from enum import Enum
|
|
from worlds.AutoWorld import World, WebWorld
|
|
from .Data import game_table, meta_table
|
|
from .Helpers import convert_to_long_string
|
|
|
|
##############
|
|
# Meta Classes
|
|
##############
|
|
class ManualWeb(WebWorld):
|
|
tutorials = [Tutorial(
|
|
"Multiworld Setup Guide",
|
|
"A guide to setting up manual game integration for Archipelago multiworld games.",
|
|
"English",
|
|
"setup_en.md",
|
|
"setup/en",
|
|
["Fuzzy"]
|
|
)]
|
|
|
|
######################################
|
|
# Convert meta.json data to properties
|
|
######################################
|
|
def set_world_description(base_doc: str) -> str:
|
|
if meta_table.get("docs", {}).get("apworld_description"):
|
|
return convert_to_long_string(meta_table["docs"]["apworld_description"])
|
|
|
|
return base_doc
|
|
|
|
|
|
def set_world_webworld(web: WebWorld) -> WebWorld:
|
|
from .Options import make_options_group
|
|
if meta_table.get("docs", {}).get("web", {}):
|
|
Web_Config = meta_table["docs"]["web"]
|
|
|
|
web.theme = Web_Config.get("theme", web.theme)
|
|
web.game_info_languages = Web_Config.get("game_info_languages", web.game_info_languages)
|
|
web.options_presets = Web_Config.get("options_presets", web.options_presets)
|
|
web.options_page = Web_Config.get("options_page", web.options_page)
|
|
web.option_groups = make_options_group()
|
|
if hasattr(web, 'bug_report_page'):
|
|
web.bug_report_page = Web_Config.get("bug_report_page", web.bug_report_page)
|
|
else:
|
|
web.bug_report_page = Web_Config.get("bug_report_page", None)
|
|
|
|
if Web_Config.get("tutorials", []):
|
|
tutorials = []
|
|
for tutorial in Web_Config.get("tutorials", []):
|
|
# Converting json to Tutorials
|
|
tutorials.append(Tutorial(
|
|
tutorial.get("name", "Multiworld Setup Guide"),
|
|
tutorial.get("description", "A guide to setting up manual game integration for Archipelago multiworld games."),
|
|
tutorial.get("language", "English"),
|
|
tutorial.get("file_name", "setup_en.md"),
|
|
tutorial.get("link", "setup/en"),
|
|
tutorial.get("authors", [game_table.get("creator")])
|
|
))
|
|
web.tutorials = tutorials
|
|
return web
|
|
|
|
#################
|
|
# Meta Properties
|
|
#################
|
|
world_description: str = set_world_description("""
|
|
Manual games allow you to set custom check locations and custom item names that will be rolled into a multiworld.
|
|
This allows any variety of game -- PC, console, board games, Microsoft Word memes... really anything -- to be part of a multiworld randomizer.
|
|
The key component to including these games is some level of manual restriction. Since the items are not actually withheld from the player,
|
|
the player must manually refrain from using these gathered items until the tracker shows that they have been acquired or sent.
|
|
""")
|
|
world_webworld: ManualWeb = set_world_webworld(ManualWeb())
|