Factorio: implement decent option display names for Spoiler

This commit is contained in:
Fabian Dill 2021-08-02 04:57:57 +02:00
parent 40044ac5a6
commit d2add54cd6
3 changed files with 24 additions and 6 deletions

View File

@ -1104,7 +1104,7 @@ class Item():
return self.world.get_name_string_for_object(self) if self.world else f'{self.name} (Player {self.player})'
class Spoiler(object):
class Spoiler():
world: MultiWorld
def __init__(self, world):
@ -1295,9 +1295,10 @@ class Spoiler(object):
outfile.write('Accessibility: %s\n' % self.metadata['accessibility'][player])
options = self.world.worlds[player].options
if options:
for f_option in options:
for f_option, option in options.items():
res = getattr(self.world, f_option)[player]
outfile.write(f'{f_option+":":33}{bool_to_text(res) if type(res) == Options.Toggle else res.get_option_name()}\n')
displayname = getattr(option, "displayname", f_option)
outfile.write(f'{displayname+":":33}{bool_to_text(res) if type(res) == Options.Toggle else res.get_option_name()}\n')
if player in self.world.get_game_players("A Link to the Past"):
for team in range(self.world.teams):

View File

@ -754,5 +754,7 @@ def roll_alttp_settings(ret: argparse.Namespace, weights, plando_options):
if __name__ == '__main__':
import atexit
atexit.register(input, "Press enter to close.")
confirmation = atexit.register(input, "Press enter to close.")
main()
# in case of error-free exit should not need confirmation
atexit.unregister(confirmation)

View File

@ -11,6 +11,7 @@ LuaBool = Or(bool, And(int, lambda n: n in (0, 1)))
class MaxSciencePack(Choice):
"""Maximum level of science pack required to complete the game."""
displayname = "Maximum Required Science Pack"
option_automation_science_pack = 0
option_logistic_science_pack = 1
option_military_science_pack = 2
@ -34,6 +35,7 @@ class MaxSciencePack(Choice):
class TechCost(Choice):
"""How expensive are the technologies."""
displayname = "Technology Cost Scale"
option_very_easy = 0
option_easy = 1
option_kind = 2
@ -46,6 +48,7 @@ class TechCost(Choice):
class Silo(Choice):
"""Ingredients to craft rocket silo or auto-place if set to spawn."""
displayname = "Rocket Silo"
option_vanilla = 0
option_randomize_recipe = 1
option_spawn = 2
@ -54,6 +57,7 @@ class Silo(Choice):
class FreeSamples(Choice):
"""Get free items with your technologies."""
displayname = "Free Samples"
option_none = 0
option_single_craft = 1
option_half_stack = 2
@ -63,6 +67,7 @@ class FreeSamples(Choice):
class TechTreeLayout(Choice):
"""Selects how the tech tree nodes are interwoven."""
displayname = "Technology Tree Layout"
option_single = 0
option_small_diamonds = 1
option_medium_diamonds = 2
@ -78,6 +83,7 @@ class TechTreeLayout(Choice):
class TechTreeInformation(Choice):
"""How much information should be displayed in the tech tree."""
displayname = "Technology Tree Information"
option_none = 0
option_advancement = 1
option_full = 2
@ -86,6 +92,7 @@ class TechTreeInformation(Choice):
class RecipeTime(Choice):
"""randomize the time it takes for any recipe to craft, this includes smelting, chemical lab, hand crafting etc."""
displayname = "Recipe Time"
option_vanilla = 0
option_fast = 1
option_normal = 2
@ -106,15 +113,18 @@ class Progressive(Choice):
class RecipeIngredients(Choice):
"""Select if rocket, or rocket + science pack ingredients should be random."""
displayname = "Random Recipe Ingredients Level"
option_rocket = 0
option_science_pack = 1
class FactorioStartItems(OptionDict):
displayname = "Starting Items"
default = {"burner-mining-drill": 19, "stone-furnace": 19}
class FactorioWorldGen(OptionDict):
displayname = "World Generation"
# FIXME: do we want default be a rando-optimized default or in-game DS?
value: typing.Dict[str, typing.Dict[str, typing.Any]]
default = {
@ -245,6 +255,11 @@ class FactorioWorldGen(OptionDict):
else:
raise NotImplementedError(f"Cannot Convert from non-dictionary, got {type(data)}")
class ImportedBlueprint(DefaultOnToggle):
displayname = "Blueprints"
class ProgressiveToggle(DefaultOnToggle):
displayname = "Progressive Technologies"
factorio_options: typing.Dict[str, type(Option)] = {
"max_science_pack": MaxSciencePack,
@ -256,7 +271,7 @@ factorio_options: typing.Dict[str, type(Option)] = {
"starting_items": FactorioStartItems,
"recipe_time": RecipeTime,
"recipe_ingredients": RecipeIngredients,
"imported_blueprints": DefaultOnToggle,
"imported_blueprints": ImportedBlueprint,
"world_gen": FactorioWorldGen,
"progressive": DefaultOnToggle
"progressive": ProgressiveToggle
}