Added Overworld Shuffle parameter to CLI and Gui
This commit is contained in:
@@ -18,10 +18,11 @@ from RoomData import Room
|
||||
|
||||
class World(object):
|
||||
|
||||
def __init__(self, players, shuffle, doorShuffle, logic, mode, swords, difficulty, difficulty_adjustments,
|
||||
def __init__(self, players, owShuffle, shuffle, doorShuffle, logic, mode, swords, difficulty, difficulty_adjustments,
|
||||
timer, progressive, goal, algorithm, accessibility, shuffle_ganon, retro, custom, customitemarray, hints):
|
||||
self.players = players
|
||||
self.teams = 1
|
||||
self.owShuffle = owShuffle.copy()
|
||||
self.shuffle = shuffle.copy()
|
||||
self.doorShuffle = doorShuffle.copy()
|
||||
self.intensity = {}
|
||||
@@ -1926,6 +1927,7 @@ class Spoiler(object):
|
||||
'retro': self.world.retro,
|
||||
'weapons': self.world.swords,
|
||||
'goal': self.world.goal,
|
||||
'ow_shuffle': self.world.owShuffle,
|
||||
'shuffle': self.world.shuffle,
|
||||
'door_shuffle': self.world.doorShuffle,
|
||||
'intensity': self.world.intensity,
|
||||
@@ -1991,6 +1993,7 @@ class Spoiler(object):
|
||||
outfile.write('Goal: %s\n' % self.metadata['goal'][player])
|
||||
outfile.write('Difficulty: %s\n' % self.metadata['item_pool'][player])
|
||||
outfile.write('Item Functionality: %s\n' % self.metadata['item_functionality'][player])
|
||||
outfile.write('Overworld Shuffle: %s\n' % self.metadata['ow_shuffle'][player])
|
||||
outfile.write('Entrance Shuffle: %s\n' % self.metadata['shuffle'][player])
|
||||
outfile.write('Door Shuffle: %s\n' % self.metadata['door_shuffle'][player])
|
||||
outfile.write('Intensity: %s\n' % self.metadata['intensity'][player])
|
||||
|
||||
3
CLI.py
3
CLI.py
@@ -87,7 +87,7 @@ def parse_cli(argv, no_defaults=False):
|
||||
for player in range(1, multiargs.multi + 1):
|
||||
playerargs = parse_cli(shlex.split(getattr(ret,f"p{player}")), True)
|
||||
|
||||
for name in ['logic', 'mode', 'swords', 'goal', 'difficulty', 'item_functionality',
|
||||
for name in ['logic', 'mode', 'swords', 'goal', 'difficulty', 'item_functionality', 'ow_shuffle',
|
||||
'shuffle', 'door_shuffle', 'intensity', 'crystals_ganon', 'crystals_gt', 'openpyramid',
|
||||
'mapshuffle', 'compassshuffle', 'keyshuffle', 'bigkeyshuffle', 'startinventory',
|
||||
'retro', 'accessibility', 'hints', 'beemizer', 'experimental', 'dungeon_counters',
|
||||
@@ -124,6 +124,7 @@ def parse_settings():
|
||||
# Shuffle Ganon defaults to TRUE
|
||||
"openpyramid": False,
|
||||
"shuffleganon": True,
|
||||
"ow_shuffle": "vanilla",
|
||||
"shuffle": "vanilla",
|
||||
|
||||
"shufflepots": False,
|
||||
|
||||
6
Gui.py
6
Gui.py
@@ -10,6 +10,7 @@ from source.gui.startinventory.overview import startinventory_page
|
||||
from source.gui.custom.overview import custom_page
|
||||
from source.gui.loadcliargs import loadcliargs, loadadjustargs
|
||||
from source.gui.randomize.item import item_page
|
||||
from source.gui.randomize.overworld import overworld_page
|
||||
from source.gui.randomize.entrando import entrando_page
|
||||
from source.gui.randomize.enemizer import enemizer_page
|
||||
from source.gui.randomize.dungeon import dungeon_page
|
||||
@@ -107,6 +108,7 @@ def guiMain(args=None):
|
||||
# Randomize notebook page:
|
||||
# make notebook pages: Item, Entrances, Enemizer, Dungeon Shuffle, Multiworld, Game Options, Generation Setup
|
||||
# Item: Item Randomizer settings
|
||||
# Overworld: Overworld Randomizer settings
|
||||
# Entrances: Entrance Randomizer settings
|
||||
# Enemizer: Enemy Randomizer settings
|
||||
# Dungeon Shuffle: Dungeon Door Randomizer settings
|
||||
@@ -122,6 +124,10 @@ def guiMain(args=None):
|
||||
self.pages["randomizer"].pages["item"] = item_page(self.pages["randomizer"].notebook)
|
||||
self.pages["randomizer"].notebook.add(self.pages["randomizer"].pages["item"], text="Items")
|
||||
|
||||
# Overworld Randomizer
|
||||
self.pages["randomizer"].pages["overworld"] = overworld_page(self.pages["randomizer"].notebook)
|
||||
self.pages["randomizer"].notebook.add(self.pages["randomizer"].pages["overworld"], text="Overworld")
|
||||
|
||||
# Entrance Randomizer
|
||||
self.pages["randomizer"].pages["entrance"] = entrando_page(self.pages["randomizer"].notebook)
|
||||
self.pages["randomizer"].notebook.add(self.pages["randomizer"].pages["entrance"], text="Entrances")
|
||||
|
||||
2
Main.py
2
Main.py
@@ -39,7 +39,7 @@ def main(args, seed=None, fish=None):
|
||||
start = time.perf_counter()
|
||||
|
||||
# initialize the world
|
||||
world = World(args.multi, args.shuffle, args.door_shuffle, args.logic, args.mode, args.swords,
|
||||
world = World(args.multi, args.ow_shuffle, args.shuffle, args.door_shuffle, args.logic, args.mode, args.swords,
|
||||
args.difficulty, args.item_functionality, args.timer, args.progressive, args.goal, args.algorithm,
|
||||
args.accessibility, args.shuffleganon, args.retro, args.custom, args.customitemarray, args.hints)
|
||||
logger = logging.getLogger('')
|
||||
|
||||
@@ -145,6 +145,8 @@ def roll_settings(weights):
|
||||
|
||||
ret.accessibility = get_choice('accessibility')
|
||||
|
||||
overworld_shuffle = get_choice('overworld_shuffle')
|
||||
ret.ow_shuffle = overworld_shuffle if overworld_shuffle != 'none' else 'vanilla'
|
||||
entrance_shuffle = get_choice('entrance_shuffle')
|
||||
ret.shuffle = entrance_shuffle if entrance_shuffle != 'none' else 'vanilla'
|
||||
door_shuffle = get_choice('door_shuffle')
|
||||
|
||||
@@ -121,6 +121,12 @@ Use to batch generate multiple seeds with same settings. If a seed number is pro
|
||||
|
||||
Show the help message and exit.
|
||||
|
||||
```
|
||||
--ow_shuffle <mode>
|
||||
```
|
||||
|
||||
For specifying the overworld shuffle you want as above. (default: vanilla)
|
||||
|
||||
```
|
||||
--door_shuffle <mode>
|
||||
```
|
||||
|
||||
@@ -104,6 +104,14 @@
|
||||
"vt26"
|
||||
]
|
||||
},
|
||||
"ow_shuffle": {
|
||||
"choices": [
|
||||
"vanilla",
|
||||
"simple",
|
||||
"full",
|
||||
"crossed"
|
||||
]
|
||||
},
|
||||
"shuffle": {
|
||||
"choices": [
|
||||
"vanilla",
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"version": "Version",
|
||||
"seed": "Seed",
|
||||
"player": "Player",
|
||||
"shuffling.overworld": "Shuffling overworld",
|
||||
"shuffling.world": "Shuffling the World about",
|
||||
"shuffling.dungeons": "Shuffling dungeons",
|
||||
"shuffling.pots": "Shuffling pots",
|
||||
@@ -192,6 +193,16 @@
|
||||
"The dungeon variants only mix up dungeons and keep the rest of",
|
||||
"the overworld vanilla."
|
||||
],
|
||||
"ow_shuffle": [
|
||||
"Select Overworld Shuffling Algorithm. (default: %(default)s)",
|
||||
"Vanilla: All overworld transitions are connected the same",
|
||||
" way they were in the base game.",
|
||||
"Simple: Overworld retains the same vanilla shape, but some overworld",
|
||||
" screens will be swapped with their opposite world version.",
|
||||
"Full: Overworld screen transitions will lead to other",
|
||||
" overworld screens from the same world.",
|
||||
"Crossed: Overworld screen transitions can lead to any other overworld screen."
|
||||
],
|
||||
"door_shuffle": [
|
||||
"Select Door Shuffling Algorithm. (default: %(default)s)",
|
||||
"Basic: Doors are mixed within a single dungeon.",
|
||||
|
||||
@@ -109,6 +109,12 @@
|
||||
"randomizer.enemizer.enemizercli.online": "(get online)",
|
||||
|
||||
|
||||
"randomizer.overworld.overworldshuffle": "Overworld Shuffle",
|
||||
"randomizer.overworld.overworldshuffle.vanilla": "Vanilla",
|
||||
"randomizer.overworld.overworldshuffle.simple": "Simple",
|
||||
"randomizer.overworld.overworldshuffle.full": "Full",
|
||||
"randomizer.overworld.overworldshuffle.crossed": "Crossed",
|
||||
|
||||
"randomizer.entrance.openpyramid": "Pre-open Pyramid Hole",
|
||||
"randomizer.entrance.shuffleganon": "Include Ganon's Tower and Pyramid Hole in shuffle pool",
|
||||
|
||||
|
||||
12
resources/app/gui/randomize/overworld/widgets.json
Normal file
12
resources/app/gui/randomize/overworld/widgets.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"widgets": {
|
||||
"overworldshuffle": {
|
||||
"type": "selectbox",
|
||||
"default": "vanilla",
|
||||
"options": [
|
||||
"vanilla",
|
||||
"full"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -69,6 +69,9 @@ SETTINGSTOPROCESS = {
|
||||
"accessibility": "accessibility",
|
||||
"sortingalgo": "algorithm"
|
||||
},
|
||||
"overworld": {
|
||||
"overworldshuffle": "ow_shuffle"
|
||||
},
|
||||
"entrance": {
|
||||
"openpyramid": "openpyramid",
|
||||
"shuffleganon": "shuffleganon",
|
||||
|
||||
29
source/gui/randomize/overworld.py
Normal file
29
source/gui/randomize/overworld.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from tkinter import ttk, Frame, Label, E, W, LEFT, RIGHT
|
||||
import source.gui.widgets as widgets
|
||||
import json
|
||||
import os
|
||||
|
||||
def overworld_page(parent):
|
||||
# Overworld Shuffle
|
||||
self = ttk.Frame(parent)
|
||||
|
||||
# Overworld Shuffle options
|
||||
self.widgets = {}
|
||||
|
||||
# Overworld Shuffle option sections
|
||||
self.frames = {}
|
||||
|
||||
# Load Overworld Shuffle option widgets as defined by JSON file
|
||||
# Defns include frame name, widget type, widget options, widget placement attributes
|
||||
# These get split left & right
|
||||
self.frames["widgets"] = Frame(self)
|
||||
self.frames["widgets"].pack(anchor=W)
|
||||
with open(os.path.join("resources","app","gui","randomize","overworld","widgets.json")) as overworldWidgets:
|
||||
myDict = json.load(overworldWidgets)
|
||||
myDict = myDict["widgets"]
|
||||
dictWidgets = widgets.make_widgets_from_dict(self, myDict, self.frames["widgets"])
|
||||
for key in dictWidgets:
|
||||
self.widgets[key] = dictWidgets[key]
|
||||
self.widgets[key].pack(anchor=W)
|
||||
|
||||
return self
|
||||
Reference in New Issue
Block a user