748 lines
34 KiB
Python
Executable File
748 lines
34 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from argparse import Namespace
|
|
from glob import glob
|
|
import json
|
|
import logging
|
|
import random
|
|
import os
|
|
import shutil
|
|
from tkinter import Checkbutton, OptionMenu, Toplevel, LabelFrame, PhotoImage, Tk, LEFT, RIGHT, BOTTOM, TOP, StringVar, IntVar, Frame, Label, W, E, X, BOTH, Entry, Spinbox, Button, filedialog, messagebox, ttk
|
|
from urllib.parse import urlparse
|
|
from urllib.request import urlopen
|
|
|
|
from AdjusterMain import adjust
|
|
from DungeonRandomizer import parse_arguments
|
|
from gui.adjust.overview import adjust_page
|
|
from gui.randomize.item import item_page
|
|
from gui.randomize.entrando import entrando_page
|
|
from gui.randomize.enemizer import enemizer_page
|
|
from gui.randomize.dungeon import dungeon_page
|
|
from gui.randomize.multiworld import multiworld_page
|
|
from gui.randomize.gameoptions import gameoptions_page
|
|
from gui.randomize.generation import generation_page
|
|
from gui.bottom import bottom_frame
|
|
from GuiUtils import ToolTips, set_icon, BackgroundTaskProgress
|
|
from Main import main, __version__ as ESVersion
|
|
from Rom import Sprite
|
|
from Utils import is_bundled, local_path, output_path, open_file
|
|
|
|
|
|
def guiMain(args=None):
|
|
mainWindow = Tk()
|
|
self = mainWindow
|
|
mainWindow.wm_title("Door Shuffle %s" % ESVersion)
|
|
|
|
set_icon(mainWindow)
|
|
|
|
notebook = ttk.Notebook(self)
|
|
self.randomizerWindow = ttk.Frame(notebook)
|
|
self.adjustWindow = ttk.Frame(notebook)
|
|
self.customWindow = ttk.Frame(notebook)
|
|
notebook.add(self.randomizerWindow, text='Randomize')
|
|
notebook.add(self.adjustWindow, text='Adjust')
|
|
notebook.add(self.customWindow, text='Custom')
|
|
notebook.pack()
|
|
|
|
# randomizer controls
|
|
|
|
# Randomize notebook page:
|
|
# make notebook pages: Item, Entrances, Enemizer, Dungeon Shuffle, Multiworld, Game Options, Generation Setup
|
|
# Item: Item Randomizer settings
|
|
# Entrances: Entrance Randomizer settings
|
|
# Enemizer: Enemy Randomizer settings
|
|
# Dungeon Shuffle: Dungeon Door Randomizer settings
|
|
# Multiworld: Multiworld settings
|
|
# Game Options: Cosmetic settings that don't affect logic/placement
|
|
# Generation Setup: Primarily one&done settings
|
|
self.randomizerNotebook = ttk.Notebook(self.randomizerWindow)
|
|
|
|
# Item Randomizer
|
|
self.itemWindow = item_page(self.randomizerNotebook)
|
|
self.randomizerNotebook.add(self.itemWindow, text="Items")
|
|
|
|
# Entrance Randomizer
|
|
self.entrandoWindow = entrando_page(self.randomizerNotebook)
|
|
self.randomizerNotebook.add(self.entrandoWindow, text="Entrances")
|
|
|
|
# Enemizer
|
|
self.enemizerWindow = enemizer_page(self.randomizerNotebook)
|
|
self.randomizerNotebook.add(self.enemizerWindow, text="Enemizer")
|
|
|
|
# Dungeon Shuffle
|
|
self.dungeonRandoWindow = dungeon_page(self.randomizerNotebook)
|
|
self.randomizerNotebook.add(self.dungeonRandoWindow, text="Dungeon Shuffle")
|
|
|
|
# Multiworld
|
|
self.multiworldWindow = multiworld_page(self.randomizerNotebook)
|
|
self.randomizerNotebook.add(self.multiworldWindow, text="Multiworld")
|
|
|
|
# Game Options
|
|
self.gameOptionsWindow = gameoptions_page(self.randomizerNotebook)
|
|
self.randomizerNotebook.add(self.gameOptionsWindow, text="Game Options")
|
|
|
|
# Generation Setup
|
|
self.generationSetupWindow = generation_page(self.randomizerNotebook)
|
|
self.randomizerNotebook.add(self.generationSetupWindow, text="Generation Setup")
|
|
|
|
# add randomizer notebook to main window
|
|
self.randomizerNotebook.pack()
|
|
|
|
# bottom of window: Open Output Directory, Open Documentation (if exists)
|
|
self.farBottomFrame = bottom_frame(self,self,None)
|
|
# set bottom frame to main window
|
|
self.farBottomFrame.pack(side=BOTTOM, fill=X, padx=5, pady=5)
|
|
|
|
# Adjuster Controls
|
|
self.adjustContent = adjust_page(self,self.adjustWindow)
|
|
# self.adjustContent,self.working_dirs = adjust_page(self,self.adjustWindow,self.working_dirs)
|
|
self.adjustContent.pack(side=TOP, fill=BOTH, expand=True)
|
|
|
|
# Custom Controls
|
|
|
|
topFrame3 = Frame(self.customWindow)
|
|
|
|
def validation(P):
|
|
if str.isdigit(P) or P == "":
|
|
return True
|
|
else:
|
|
return False
|
|
vcmd=(topFrame3.register(validation), '%P')
|
|
|
|
itemList1 = Frame(topFrame3)
|
|
itemList2 = Frame(topFrame3)
|
|
itemList3 = Frame(topFrame3)
|
|
itemList4 = Frame(topFrame3)
|
|
itemList5 = Frame(topFrame3)
|
|
|
|
bowFrame = Frame(itemList1)
|
|
bowLabel = Label(bowFrame, text='Bow')
|
|
self.customWindow.bowVar = StringVar(value='0')
|
|
bowEntry = Entry(bowFrame, textvariable=self.customWindow.bowVar, width=3, validate='all', vcmd=vcmd)
|
|
bowFrame.pack()
|
|
bowLabel.pack(anchor=W, side=LEFT, padx=(0,53))
|
|
bowEntry.pack(anchor=E)
|
|
|
|
progbowFrame = Frame(itemList1)
|
|
progbowLabel = Label(progbowFrame, text='Prog.Bow')
|
|
self.customWindow.progbowVar = StringVar(value='2')
|
|
progbowEntry = Entry(progbowFrame, textvariable=self.customWindow.progbowVar, width=3, validate='all', vcmd=vcmd)
|
|
progbowFrame.pack()
|
|
progbowLabel.pack(anchor=W, side=LEFT, padx=(0,25))
|
|
progbowEntry.pack(anchor=E)
|
|
|
|
boomerangFrame = Frame(itemList1)
|
|
boomerangLabel = Label(boomerangFrame, text='Boomerang')
|
|
self.customWindow.boomerangVar = StringVar(value='1')
|
|
boomerangEntry = Entry(boomerangFrame, textvariable=self.customWindow.boomerangVar, width=3, validate='all', vcmd=vcmd)
|
|
boomerangFrame.pack()
|
|
boomerangLabel.pack(anchor=W, side=LEFT, padx=(0,14))
|
|
boomerangEntry.pack(anchor=E)
|
|
|
|
magicboomerangFrame = Frame(itemList1)
|
|
magicboomerangLabel = Label(magicboomerangFrame, text='M.Boomerang')
|
|
self.customWindow.magicboomerangVar = StringVar(value='1')
|
|
magicboomerangEntry = Entry(magicboomerangFrame, textvariable=self.customWindow.magicboomerangVar, width=3, validate='all', vcmd=vcmd)
|
|
magicboomerangFrame.pack()
|
|
magicboomerangLabel.pack(anchor=W, side=LEFT)
|
|
magicboomerangEntry.pack(anchor=E)
|
|
|
|
hookshotFrame = Frame(itemList1)
|
|
hookshotLabel = Label(hookshotFrame, text='Hookshot')
|
|
self.customWindow.hookshotVar = StringVar(value='1')
|
|
hookshotEntry = Entry(hookshotFrame, textvariable=self.customWindow.hookshotVar, width=3, validate='all', vcmd=vcmd)
|
|
hookshotFrame.pack()
|
|
hookshotLabel.pack(anchor=W, side=LEFT, padx=(0,24))
|
|
hookshotEntry.pack(anchor=E)
|
|
|
|
mushroomFrame = Frame(itemList1)
|
|
mushroomLabel = Label(mushroomFrame, text='Mushroom')
|
|
self.customWindow.mushroomVar = StringVar(value='1')
|
|
mushroomEntry = Entry(mushroomFrame, textvariable=self.customWindow.mushroomVar, width=3, validate='all', vcmd=vcmd)
|
|
mushroomFrame.pack()
|
|
mushroomLabel.pack(anchor=W, side=LEFT, padx=(0,17))
|
|
mushroomEntry.pack(anchor=E)
|
|
|
|
magicpowderFrame = Frame(itemList1)
|
|
magicpowderLabel = Label(magicpowderFrame, text='Magic Powder')
|
|
self.customWindow.magicpowderVar = StringVar(value='1')
|
|
magicpowderEntry = Entry(magicpowderFrame, textvariable=self.customWindow.magicpowderVar, width=3, validate='all', vcmd=vcmd)
|
|
magicpowderFrame.pack()
|
|
magicpowderLabel.pack(anchor=W, side=LEFT)
|
|
magicpowderEntry.pack(anchor=E)
|
|
|
|
firerodFrame = Frame(itemList1)
|
|
firerodLabel = Label(firerodFrame, text='Fire Rod')
|
|
self.customWindow.firerodVar = StringVar(value='1')
|
|
firerodEntry = Entry(firerodFrame, textvariable=self.customWindow.firerodVar, width=3, validate='all', vcmd=vcmd)
|
|
firerodFrame.pack()
|
|
firerodLabel.pack(anchor=W, side=LEFT, padx=(0,33))
|
|
firerodEntry.pack(anchor=E)
|
|
|
|
icerodFrame = Frame(itemList1)
|
|
icerodLabel = Label(icerodFrame, text='Ice Rod')
|
|
self.customWindow.icerodVar = StringVar(value='1')
|
|
icerodEntry = Entry(icerodFrame, textvariable=self.customWindow.icerodVar, width=3, validate='all', vcmd=vcmd)
|
|
icerodFrame.pack()
|
|
icerodLabel.pack(anchor=W, side=LEFT, padx=(0,37))
|
|
icerodEntry.pack(anchor=E)
|
|
|
|
bombosFrame = Frame(itemList1)
|
|
bombosLabel = Label(bombosFrame, text='Bombos')
|
|
self.customWindow.bombosVar = StringVar(value='1')
|
|
bombosEntry = Entry(bombosFrame, textvariable=self.customWindow.bombosVar, width=3, validate='all', vcmd=vcmd)
|
|
bombosFrame.pack()
|
|
bombosLabel.pack(anchor=W, side=LEFT, padx=(0,32))
|
|
bombosEntry.pack(anchor=E)
|
|
|
|
etherFrame = Frame(itemList1)
|
|
etherLabel = Label(etherFrame, text='Ether')
|
|
self.customWindow.etherVar = StringVar(value='1')
|
|
etherEntry = Entry(etherFrame, textvariable=self.customWindow.etherVar, width=3, validate='all', vcmd=vcmd)
|
|
etherFrame.pack()
|
|
etherLabel.pack(anchor=W, side=LEFT, padx=(0,49))
|
|
etherEntry.pack(anchor=E)
|
|
|
|
quakeFrame = Frame(itemList1)
|
|
quakeLabel = Label(quakeFrame, text='Quake')
|
|
self.customWindow.quakeVar = StringVar(value='1')
|
|
quakeEntry = Entry(quakeFrame, textvariable=self.customWindow.quakeVar, width=3, validate='all', vcmd=vcmd)
|
|
quakeFrame.pack()
|
|
quakeLabel.pack(anchor=W, side=LEFT, padx=(0,42))
|
|
quakeEntry.pack(anchor=E)
|
|
|
|
lampFrame = Frame(itemList1)
|
|
lampLabel = Label(lampFrame, text='Lamp')
|
|
self.customWindow.lampVar = StringVar(value='1')
|
|
lampEntry = Entry(lampFrame, textvariable=self.customWindow.lampVar, width=3, validate='all', vcmd=vcmd)
|
|
lampFrame.pack()
|
|
lampLabel.pack(anchor=W, side=LEFT, padx=(0,46))
|
|
lampEntry.pack(anchor=E)
|
|
|
|
hammerFrame = Frame(itemList1)
|
|
hammerLabel = Label(hammerFrame, text='Hammer')
|
|
self.customWindow.hammerVar = StringVar(value='1')
|
|
hammerEntry = Entry(hammerFrame, textvariable=self.customWindow.hammerVar, width=3, validate='all', vcmd=vcmd)
|
|
hammerFrame.pack()
|
|
hammerLabel.pack(anchor=W, side=LEFT, padx=(0,29))
|
|
hammerEntry.pack(anchor=E)
|
|
|
|
shovelFrame = Frame(itemList1)
|
|
shovelLabel = Label(shovelFrame, text='Shovel')
|
|
self.customWindow.shovelVar = StringVar(value='1')
|
|
shovelEntry = Entry(shovelFrame, textvariable=self.customWindow.shovelVar, width=3, validate='all', vcmd=vcmd)
|
|
shovelFrame.pack()
|
|
shovelLabel.pack(anchor=W, side=LEFT, padx=(0,41))
|
|
shovelEntry.pack(anchor=E)
|
|
|
|
fluteFrame = Frame(itemList1)
|
|
fluteLabel = Label(fluteFrame, text='Flute')
|
|
self.customWindow.fluteVar = StringVar(value='1')
|
|
fluteEntry = Entry(fluteFrame, textvariable=self.customWindow.fluteVar, width=3, validate='all', vcmd=vcmd)
|
|
fluteFrame.pack()
|
|
fluteLabel.pack(anchor=W, side=LEFT, padx=(0,50))
|
|
fluteEntry.pack(anchor=E)
|
|
|
|
bugnetFrame = Frame(itemList2)
|
|
bugnetLabel = Label(bugnetFrame, text='Bug Net')
|
|
self.customWindow.bugnetVar = StringVar(value='1')
|
|
bugnetEntry = Entry(bugnetFrame, textvariable=self.customWindow.bugnetVar, width=3, validate='all', vcmd=vcmd)
|
|
bugnetFrame.pack()
|
|
bugnetLabel.pack(anchor=W, side=LEFT, padx=(0,41))
|
|
bugnetEntry.pack(anchor=E)
|
|
|
|
bookFrame = Frame(itemList2)
|
|
bookLabel = Label(bookFrame, text='Book')
|
|
self.customWindow.bookVar = StringVar(value='1')
|
|
bookEntry = Entry(bookFrame, textvariable=self.customWindow.bookVar, width=3, validate='all', vcmd=vcmd)
|
|
bookFrame.pack()
|
|
bookLabel.pack(anchor=W, side=LEFT, padx=(0,57))
|
|
bookEntry.pack(anchor=E)
|
|
|
|
bottleFrame = Frame(itemList2)
|
|
bottleLabel = Label(bottleFrame, text='Bottle')
|
|
self.customWindow.bottleVar = StringVar(value='4')
|
|
bottleEntry = Entry(bottleFrame, textvariable=self.customWindow.bottleVar, width=3, validate='all', vcmd=vcmd)
|
|
bottleFrame.pack()
|
|
bottleLabel.pack(anchor=W, side=LEFT, padx=(0,53))
|
|
bottleEntry.pack(anchor=E)
|
|
|
|
somariaFrame = Frame(itemList2)
|
|
somariaLabel = Label(somariaFrame, text='C.Somaria')
|
|
self.customWindow.somariaVar = StringVar(value='1')
|
|
somariaEntry = Entry(somariaFrame, textvariable=self.customWindow.somariaVar, width=3, validate='all', vcmd=vcmd)
|
|
somariaFrame.pack()
|
|
somariaLabel.pack(anchor=W, side=LEFT, padx=(0,30))
|
|
somariaEntry.pack(anchor=E)
|
|
|
|
byrnaFrame = Frame(itemList2)
|
|
byrnaLabel = Label(byrnaFrame, text='C.Byrna')
|
|
self.customWindow.byrnaVar = StringVar(value='1')
|
|
byrnaEntry = Entry(byrnaFrame, textvariable=self.customWindow.byrnaVar, width=3, validate='all', vcmd=vcmd)
|
|
byrnaFrame.pack()
|
|
byrnaLabel.pack(anchor=W, side=LEFT, padx=(0,43))
|
|
byrnaEntry.pack(anchor=E)
|
|
|
|
capeFrame = Frame(itemList2)
|
|
capeLabel = Label(capeFrame, text='Magic Cape')
|
|
self.customWindow.capeVar = StringVar(value='1')
|
|
capeEntry = Entry(capeFrame, textvariable=self.customWindow.capeVar, width=3, validate='all', vcmd=vcmd)
|
|
capeFrame.pack()
|
|
capeLabel.pack(anchor=W, side=LEFT, padx=(0,21))
|
|
capeEntry.pack(anchor=E)
|
|
|
|
mirrorFrame = Frame(itemList2)
|
|
mirrorLabel = Label(mirrorFrame, text='Magic Mirror')
|
|
self.customWindow.mirrorVar = StringVar(value='1')
|
|
mirrorEntry = Entry(mirrorFrame, textvariable=self.customWindow.mirrorVar, width=3, validate='all', vcmd=vcmd)
|
|
mirrorFrame.pack()
|
|
mirrorLabel.pack(anchor=W, side=LEFT, padx=(0,15))
|
|
mirrorEntry.pack(anchor=E)
|
|
|
|
bootsFrame = Frame(itemList2)
|
|
bootsLabel = Label(bootsFrame, text='Pegasus Boots')
|
|
self.customWindow.bootsVar = StringVar(value='1')
|
|
bootsEntry = Entry(bootsFrame, textvariable=self.customWindow.bootsVar, width=3, validate='all', vcmd=vcmd)
|
|
bootsFrame.pack()
|
|
bootsLabel.pack(anchor=W, side=LEFT, padx=(0,8))
|
|
bootsEntry.pack(anchor=E)
|
|
|
|
powergloveFrame = Frame(itemList2)
|
|
powergloveLabel = Label(powergloveFrame, text='Power Glove')
|
|
self.customWindow.powergloveVar = StringVar(value='0')
|
|
powergloveEntry = Entry(powergloveFrame, textvariable=self.customWindow.powergloveVar, width=3, validate='all', vcmd=vcmd)
|
|
powergloveFrame.pack()
|
|
powergloveLabel.pack(anchor=W, side=LEFT, padx=(0,18))
|
|
powergloveEntry.pack(anchor=E)
|
|
|
|
titansmittFrame = Frame(itemList2)
|
|
titansmittLabel = Label(titansmittFrame, text='Titan\'s Mitt')
|
|
self.customWindow.titansmittVar = StringVar(value='0')
|
|
titansmittEntry = Entry(titansmittFrame, textvariable=self.customWindow.titansmittVar, width=3, validate='all', vcmd=vcmd)
|
|
titansmittFrame.pack()
|
|
titansmittLabel.pack(anchor=W, side=LEFT, padx=(0,24))
|
|
titansmittEntry.pack(anchor=E)
|
|
|
|
proggloveFrame = Frame(itemList2)
|
|
proggloveLabel = Label(proggloveFrame, text='Prog.Glove')
|
|
self.customWindow.proggloveVar = StringVar(value='2')
|
|
proggloveEntry = Entry(proggloveFrame, textvariable=self.customWindow.proggloveVar, width=3, validate='all', vcmd=vcmd)
|
|
proggloveFrame.pack()
|
|
proggloveLabel.pack(anchor=W, side=LEFT, padx=(0,26))
|
|
proggloveEntry.pack(anchor=E)
|
|
|
|
flippersFrame = Frame(itemList2)
|
|
flippersLabel = Label(flippersFrame, text='Flippers')
|
|
self.customWindow.flippersVar = StringVar(value='1')
|
|
flippersEntry = Entry(flippersFrame, textvariable=self.customWindow.flippersVar, width=3, validate='all', vcmd=vcmd)
|
|
flippersFrame.pack()
|
|
flippersLabel.pack(anchor=W, side=LEFT, padx=(0,43))
|
|
flippersEntry.pack(anchor=E)
|
|
|
|
pearlFrame = Frame(itemList2)
|
|
pearlLabel = Label(pearlFrame, text='Moon Pearl')
|
|
self.customWindow.pearlVar = StringVar(value='1')
|
|
pearlEntry = Entry(pearlFrame, textvariable=self.customWindow.pearlVar, width=3, validate='all', vcmd=vcmd)
|
|
pearlFrame.pack()
|
|
pearlLabel.pack(anchor=W, side=LEFT, padx=(0,23))
|
|
pearlEntry.pack(anchor=E)
|
|
|
|
heartpieceFrame = Frame(itemList2)
|
|
heartpieceLabel = Label(heartpieceFrame, text='Piece of Heart')
|
|
self.customWindow.heartpieceVar = StringVar(value='24')
|
|
heartpieceEntry = Entry(heartpieceFrame, textvariable=self.customWindow.heartpieceVar, width=3, validate='all', vcmd=vcmd)
|
|
heartpieceFrame.pack()
|
|
heartpieceLabel.pack(anchor=W, side=LEFT, padx=(0,10))
|
|
heartpieceEntry.pack(anchor=E)
|
|
|
|
fullheartFrame = Frame(itemList2)
|
|
fullheartLabel = Label(fullheartFrame, text='Heart Container')
|
|
self.customWindow.fullheartVar = StringVar(value='10')
|
|
fullheartEntry = Entry(fullheartFrame, textvariable=self.customWindow.fullheartVar, width=3, validate='all', vcmd=vcmd)
|
|
fullheartFrame.pack()
|
|
fullheartLabel.pack(anchor=W, side=LEFT)
|
|
fullheartEntry.pack(anchor=E)
|
|
|
|
sancheartFrame = Frame(itemList2)
|
|
sancheartLabel = Label(sancheartFrame, text='Sanctuary Heart')
|
|
self.customWindow.sancheartVar = StringVar(value='1')
|
|
sancheartEntry = Entry(sancheartFrame, textvariable=self.customWindow.sancheartVar, width=3, validate='all', vcmd=vcmd)
|
|
sancheartFrame.pack()
|
|
sancheartLabel.pack(anchor=W, side=LEFT)
|
|
sancheartEntry.pack(anchor=E)
|
|
|
|
sword1Frame = Frame(itemList3)
|
|
sword1Label = Label(sword1Frame, text='Sword 1')
|
|
self.customWindow.sword1Var = StringVar(value='0')
|
|
sword1Entry = Entry(sword1Frame, textvariable=self.customWindow.sword1Var, width=3, validate='all', vcmd=vcmd)
|
|
sword1Frame.pack()
|
|
sword1Label.pack(anchor=W, side=LEFT, padx=(0,34))
|
|
sword1Entry.pack(anchor=E)
|
|
|
|
sword2Frame = Frame(itemList3)
|
|
sword2Label = Label(sword2Frame, text='Sword 2')
|
|
self.customWindow.sword2Var = StringVar(value='0')
|
|
sword2Entry = Entry(sword2Frame, textvariable=self.customWindow.sword2Var, width=3, validate='all', vcmd=vcmd)
|
|
sword2Frame.pack()
|
|
sword2Label.pack(anchor=W, side=LEFT, padx=(0,34))
|
|
sword2Entry.pack(anchor=E)
|
|
|
|
sword3Frame = Frame(itemList3)
|
|
sword3Label = Label(sword3Frame, text='Sword 3')
|
|
self.customWindow.sword3Var = StringVar(value='0')
|
|
sword3Entry = Entry(sword3Frame, textvariable=self.customWindow.sword3Var, width=3, validate='all', vcmd=vcmd)
|
|
sword3Frame.pack()
|
|
sword3Label.pack(anchor=W, side=LEFT, padx=(0,34))
|
|
sword3Entry.pack(anchor=E)
|
|
|
|
sword4Frame = Frame(itemList3)
|
|
sword4Label = Label(sword4Frame, text='Sword 4')
|
|
self.customWindow.sword4Var = StringVar(value='0')
|
|
sword4Entry = Entry(sword4Frame, textvariable=self.customWindow.sword4Var, width=3, validate='all', vcmd=vcmd)
|
|
sword4Frame.pack()
|
|
sword4Label.pack(anchor=W, side=LEFT, padx=(0,34))
|
|
sword4Entry.pack(anchor=E)
|
|
|
|
progswordFrame = Frame(itemList3)
|
|
progswordLabel = Label(progswordFrame, text='Prog.Sword')
|
|
self.customWindow.progswordVar = StringVar(value='4')
|
|
progswordEntry = Entry(progswordFrame, textvariable=self.customWindow.progswordVar, width=3, validate='all', vcmd=vcmd)
|
|
progswordFrame.pack()
|
|
progswordLabel.pack(anchor=W, side=LEFT, padx=(0,15))
|
|
progswordEntry.pack(anchor=E)
|
|
|
|
shield1Frame = Frame(itemList3)
|
|
shield1Label = Label(shield1Frame, text='Shield 1')
|
|
self.customWindow.shield1Var = StringVar(value='0')
|
|
shield1Entry = Entry(shield1Frame, textvariable=self.customWindow.shield1Var, width=3, validate='all', vcmd=vcmd)
|
|
shield1Frame.pack()
|
|
shield1Label.pack(anchor=W, side=LEFT, padx=(0,35))
|
|
shield1Entry.pack(anchor=E)
|
|
|
|
shield2Frame = Frame(itemList3)
|
|
shield2Label = Label(shield2Frame, text='Shield 2')
|
|
self.customWindow.shield2Var = StringVar(value='0')
|
|
shield2Entry = Entry(shield2Frame, textvariable=self.customWindow.shield2Var, width=3, validate='all', vcmd=vcmd)
|
|
shield2Frame.pack()
|
|
shield2Label.pack(anchor=W, side=LEFT, padx=(0,35))
|
|
shield2Entry.pack(anchor=E)
|
|
|
|
shield3Frame = Frame(itemList3)
|
|
shield3Label = Label(shield3Frame, text='Shield 3')
|
|
self.customWindow.shield3Var = StringVar(value='0')
|
|
shield3Entry = Entry(shield3Frame, textvariable=self.customWindow.shield3Var, width=3, validate='all', vcmd=vcmd)
|
|
shield3Frame.pack()
|
|
shield3Label.pack(anchor=W, side=LEFT, padx=(0,35))
|
|
shield3Entry.pack(anchor=E)
|
|
|
|
progshieldFrame = Frame(itemList3)
|
|
progshieldLabel = Label(progshieldFrame, text='Prog.Shield')
|
|
self.customWindow.progshieldVar = StringVar(value='3')
|
|
progshieldEntry = Entry(progshieldFrame, textvariable=self.customWindow.progshieldVar, width=3, validate='all', vcmd=vcmd)
|
|
progshieldFrame.pack()
|
|
progshieldLabel.pack(anchor=W, side=LEFT, padx=(0,16))
|
|
progshieldEntry.pack(anchor=E)
|
|
|
|
bluemailFrame = Frame(itemList3)
|
|
bluemailLabel = Label(bluemailFrame, text='Blue Mail')
|
|
self.customWindow.bluemailVar = StringVar(value='0')
|
|
bluemailEntry = Entry(bluemailFrame, textvariable=self.customWindow.bluemailVar, width=3, validate='all', vcmd=vcmd)
|
|
bluemailFrame.pack()
|
|
bluemailLabel.pack(anchor=W, side=LEFT, padx=(0,27))
|
|
bluemailEntry.pack(anchor=E)
|
|
|
|
redmailFrame = Frame(itemList3)
|
|
redmailLabel = Label(redmailFrame, text='Red Mail')
|
|
self.customWindow.redmailVar = StringVar(value='0')
|
|
redmailEntry = Entry(redmailFrame, textvariable=self.customWindow.redmailVar, width=3, validate='all', vcmd=vcmd)
|
|
redmailFrame.pack()
|
|
redmailLabel.pack(anchor=W, side=LEFT, padx=(0,30))
|
|
redmailEntry.pack(anchor=E)
|
|
|
|
progmailFrame = Frame(itemList3)
|
|
progmailLabel = Label(progmailFrame, text='Prog.Mail')
|
|
self.customWindow.progmailVar = StringVar(value='2')
|
|
progmailEntry = Entry(progmailFrame, textvariable=self.customWindow.progmailVar, width=3, validate='all', vcmd=vcmd)
|
|
progmailFrame.pack()
|
|
progmailLabel.pack(anchor=W, side=LEFT, padx=(0,25))
|
|
progmailEntry.pack(anchor=E)
|
|
|
|
halfmagicFrame = Frame(itemList3)
|
|
halfmagicLabel = Label(halfmagicFrame, text='Half Magic')
|
|
self.customWindow.halfmagicVar = StringVar(value='1')
|
|
halfmagicEntry = Entry(halfmagicFrame, textvariable=self.customWindow.halfmagicVar, width=3, validate='all', vcmd=vcmd)
|
|
halfmagicFrame.pack()
|
|
halfmagicLabel.pack(anchor=W, side=LEFT, padx=(0,18))
|
|
halfmagicEntry.pack(anchor=E)
|
|
|
|
quartermagicFrame = Frame(itemList3)
|
|
quartermagicLabel = Label(quartermagicFrame, text='Quarter Magic')
|
|
self.customWindow.quartermagicVar = StringVar(value='0')
|
|
quartermagicEntry = Entry(quartermagicFrame, textvariable=self.customWindow.quartermagicVar, width=3, validate='all', vcmd=vcmd)
|
|
quartermagicFrame.pack()
|
|
quartermagicLabel.pack(anchor=W, side=LEFT)
|
|
quartermagicEntry.pack(anchor=E)
|
|
|
|
bcap5Frame = Frame(itemList3)
|
|
bcap5Label = Label(bcap5Frame, text='Bomb C.+5')
|
|
self.customWindow.bcap5Var = StringVar(value='0')
|
|
bcap5Entry = Entry(bcap5Frame, textvariable=self.customWindow.bcap5Var, width=3, validate='all', vcmd=vcmd)
|
|
bcap5Frame.pack()
|
|
bcap5Label.pack(anchor=W, side=LEFT, padx=(0,16))
|
|
bcap5Entry.pack(anchor=E)
|
|
|
|
bcap10Frame = Frame(itemList3)
|
|
bcap10Label = Label(bcap10Frame, text='Bomb C.+10')
|
|
self.customWindow.bcap10Var = StringVar(value='0')
|
|
bcap10Entry = Entry(bcap10Frame, textvariable=self.customWindow.bcap10Var, width=3, validate='all', vcmd=vcmd)
|
|
bcap10Frame.pack()
|
|
bcap10Label.pack(anchor=W, side=LEFT, padx=(0,10))
|
|
bcap10Entry.pack(anchor=E)
|
|
|
|
acap5Frame = Frame(itemList4)
|
|
acap5Label = Label(acap5Frame, text='Arrow C.+5')
|
|
self.customWindow.acap5Var = StringVar(value='0')
|
|
acap5Entry = Entry(acap5Frame, textvariable=self.customWindow.acap5Var, width=3, validate='all', vcmd=vcmd)
|
|
acap5Frame.pack()
|
|
acap5Label.pack(anchor=W, side=LEFT, padx=(0,7))
|
|
acap5Entry.pack(anchor=E)
|
|
|
|
acap10Frame = Frame(itemList4)
|
|
acap10Label = Label(acap10Frame, text='Arrow C.+10')
|
|
self.customWindow.acap10Var = StringVar(value='0')
|
|
acap10Entry = Entry(acap10Frame, textvariable=self.customWindow.acap10Var, width=3, validate='all', vcmd=vcmd)
|
|
acap10Frame.pack()
|
|
acap10Label.pack(anchor=W, side=LEFT, padx=(0,1))
|
|
acap10Entry.pack(anchor=E)
|
|
|
|
arrow1Frame = Frame(itemList4)
|
|
arrow1Label = Label(arrow1Frame, text='Arrow (1)')
|
|
self.customWindow.arrow1Var = StringVar(value='1')
|
|
arrow1Entry = Entry(arrow1Frame, textvariable=self.customWindow.arrow1Var, width=3, validate='all', vcmd=vcmd)
|
|
arrow1Frame.pack()
|
|
arrow1Label.pack(anchor=W, side=LEFT, padx=(0,18))
|
|
arrow1Entry.pack(anchor=E)
|
|
|
|
arrow10Frame = Frame(itemList4)
|
|
arrow10Label = Label(arrow10Frame, text='Arrows (10)')
|
|
self.customWindow.arrow10Var = StringVar(value='12')
|
|
arrow10Entry = Entry(arrow10Frame, textvariable=self.customWindow.arrow10Var, width=3, validate='all', vcmd=vcmd)
|
|
arrow10Frame.pack()
|
|
arrow10Label.pack(anchor=W, side=LEFT, padx=(0,7))
|
|
arrow10Entry.pack(anchor=E)
|
|
|
|
bomb1Frame = Frame(itemList4)
|
|
bomb1Label = Label(bomb1Frame, text='Bomb (1)')
|
|
self.customWindow.bomb1Var = StringVar(value='0')
|
|
bomb1Entry = Entry(bomb1Frame, textvariable=self.customWindow.bomb1Var, width=3, validate='all', vcmd=vcmd)
|
|
bomb1Frame.pack()
|
|
bomb1Label.pack(anchor=W, side=LEFT, padx=(0,18))
|
|
bomb1Entry.pack(anchor=E)
|
|
|
|
bomb3Frame = Frame(itemList4)
|
|
bomb3Label = Label(bomb3Frame, text='Bombs (3)')
|
|
self.customWindow.bomb3Var = StringVar(value='16')
|
|
bomb3Entry = Entry(bomb3Frame, textvariable=self.customWindow.bomb3Var, width=3, validate='all', vcmd=vcmd)
|
|
bomb3Frame.pack()
|
|
bomb3Label.pack(anchor=W, side=LEFT, padx=(0,13))
|
|
bomb3Entry.pack(anchor=E)
|
|
|
|
bomb10Frame = Frame(itemList4)
|
|
bomb10Label = Label(bomb10Frame, text='Bombs (10)')
|
|
self.customWindow.bomb10Var = StringVar(value='1')
|
|
bomb10Entry = Entry(bomb10Frame, textvariable=self.customWindow.bomb10Var, width=3, validate='all', vcmd=vcmd)
|
|
bomb10Frame.pack()
|
|
bomb10Label.pack(anchor=W, side=LEFT, padx=(0,7))
|
|
bomb10Entry.pack(anchor=E)
|
|
|
|
rupee1Frame = Frame(itemList4)
|
|
rupee1Label = Label(rupee1Frame, text='Rupee (1)')
|
|
self.customWindow.rupee1Var = StringVar(value='2')
|
|
rupee1Entry = Entry(rupee1Frame, textvariable=self.customWindow.rupee1Var, width=3, validate='all', vcmd=vcmd)
|
|
rupee1Frame.pack()
|
|
rupee1Label.pack(anchor=W, side=LEFT, padx=(0,17))
|
|
rupee1Entry.pack(anchor=E)
|
|
|
|
rupee5Frame = Frame(itemList4)
|
|
rupee5Label = Label(rupee5Frame, text='Rupees (5)')
|
|
self.customWindow.rupee5Var = StringVar(value='4')
|
|
rupee5Entry = Entry(rupee5Frame, textvariable=self.customWindow.rupee5Var, width=3, validate='all', vcmd=vcmd)
|
|
rupee5Frame.pack()
|
|
rupee5Label.pack(anchor=W, side=LEFT, padx=(0,12))
|
|
rupee5Entry.pack(anchor=E)
|
|
|
|
rupee20Frame = Frame(itemList4)
|
|
rupee20Label = Label(rupee20Frame, text='Rupees (20)')
|
|
self.customWindow.rupee20Var = StringVar(value='28')
|
|
rupee20Entry = Entry(rupee20Frame, textvariable=self.customWindow.rupee20Var, width=3, validate='all', vcmd=vcmd)
|
|
rupee20Frame.pack()
|
|
rupee20Label.pack(anchor=W, side=LEFT, padx=(0,6))
|
|
rupee20Entry.pack(anchor=E)
|
|
|
|
rupee50Frame = Frame(itemList4)
|
|
rupee50Label = Label(rupee50Frame, text='Rupees (50)')
|
|
self.customWindow.rupee50Var = StringVar(value='7')
|
|
rupee50Entry = Entry(rupee50Frame, textvariable=self.customWindow.rupee50Var, width=3, validate='all', vcmd=vcmd)
|
|
rupee50Frame.pack()
|
|
rupee50Label.pack(anchor=W, side=LEFT, padx=(0,6))
|
|
rupee50Entry.pack(anchor=E)
|
|
|
|
rupee100Frame = Frame(itemList4)
|
|
rupee100Label = Label(rupee100Frame, text='Rupees (100)')
|
|
self.customWindow.rupee100Var = StringVar(value='1')
|
|
rupee100Entry = Entry(rupee100Frame, textvariable=self.customWindow.rupee100Var, width=3, validate='all', vcmd=vcmd)
|
|
rupee100Frame.pack()
|
|
rupee100Label.pack(anchor=W, side=LEFT, padx=(0,0))
|
|
rupee100Entry.pack(anchor=E)
|
|
|
|
rupee300Frame = Frame(itemList4)
|
|
rupee300Label = Label(rupee300Frame, text='Rupees (300)')
|
|
self.customWindow.rupee300Var = StringVar(value='5')
|
|
rupee300Entry = Entry(rupee300Frame, textvariable=self.customWindow.rupee300Var, width=3, validate='all', vcmd=vcmd)
|
|
rupee300Frame.pack()
|
|
rupee300Label.pack(anchor=W, side=LEFT, padx=(0,0))
|
|
rupee300Entry.pack(anchor=E)
|
|
|
|
blueclockFrame = Frame(itemList4)
|
|
blueclockLabel = Label(blueclockFrame, text='Blue Clock')
|
|
self.customWindow.blueclockVar = StringVar(value='0')
|
|
blueclockEntry = Entry(blueclockFrame, textvariable=self.customWindow.blueclockVar, width=3, validate='all', vcmd=vcmd)
|
|
blueclockFrame.pack()
|
|
blueclockLabel.pack(anchor=W, side=LEFT, padx=(0,11))
|
|
blueclockEntry.pack(anchor=E)
|
|
|
|
greenclockFrame = Frame(itemList4)
|
|
greenclockLabel = Label(greenclockFrame, text='Green Clock')
|
|
self.customWindow.greenclockVar = StringVar(value='0')
|
|
greenclockEntry = Entry(greenclockFrame, textvariable=self.customWindow.greenclockVar, width=3, validate='all', vcmd=vcmd)
|
|
greenclockFrame.pack()
|
|
greenclockLabel.pack(anchor=W, side=LEFT, padx=(0,3))
|
|
greenclockEntry.pack(anchor=E)
|
|
|
|
redclockFrame = Frame(itemList4)
|
|
redclockLabel = Label(redclockFrame, text='Red Clock')
|
|
self.customWindow.redclockVar = StringVar(value='0')
|
|
redclockEntry = Entry(redclockFrame, textvariable=self.customWindow.redclockVar, width=3, validate='all', vcmd=vcmd)
|
|
redclockFrame.pack()
|
|
redclockLabel.pack(anchor=W, side=LEFT, padx=(0,14))
|
|
redclockEntry.pack(anchor=E)
|
|
|
|
silverarrowFrame = Frame(itemList5)
|
|
silverarrowLabel = Label(silverarrowFrame, text='Silver Arrow')
|
|
self.customWindow.silverarrowVar = StringVar(value='0')
|
|
silverarrowEntry = Entry(silverarrowFrame, textvariable=self.customWindow.silverarrowVar, width=3, validate='all', vcmd=vcmd)
|
|
silverarrowFrame.pack()
|
|
silverarrowLabel.pack(anchor=W, side=LEFT, padx=(0,64))
|
|
silverarrowEntry.pack(anchor=E)
|
|
|
|
universalkeyFrame = Frame(itemList5)
|
|
universalkeyLabel = Label(universalkeyFrame, text='Universal Key')
|
|
self.customWindow.universalkeyVar = StringVar(value='0')
|
|
universalkeyEntry = Entry(universalkeyFrame, textvariable=self.customWindow.universalkeyVar, width=3, validate='all', vcmd=vcmd)
|
|
universalkeyFrame.pack()
|
|
universalkeyLabel.pack(anchor=W, side=LEFT, padx=(0,57))
|
|
universalkeyEntry.pack(anchor=E)
|
|
|
|
triforcepieceFrame = Frame(itemList5)
|
|
triforcepieceLabel = Label(triforcepieceFrame, text='Triforce Piece')
|
|
self.customWindow.triforcepieceVar = StringVar(value='0')
|
|
triforcepieceEntry = Entry(triforcepieceFrame, textvariable=self.customWindow.triforcepieceVar, width=3, validate='all', vcmd=vcmd)
|
|
triforcepieceFrame.pack()
|
|
triforcepieceLabel.pack(anchor=W, side=LEFT, padx=(0,55))
|
|
triforcepieceEntry.pack(anchor=E)
|
|
|
|
triforcecountFrame = Frame(itemList5)
|
|
triforcecountLabel = Label(triforcecountFrame, text='Triforce Pieces Required')
|
|
self.customWindow.triforcecountVar = StringVar(value='0')
|
|
triforcecountEntry = Entry(triforcecountFrame, textvariable=self.customWindow.triforcecountVar, width=3, validate='all', vcmd=vcmd)
|
|
triforcecountFrame.pack()
|
|
triforcecountLabel.pack(anchor=W, side=LEFT, padx=(0,0))
|
|
triforcecountEntry.pack(anchor=E)
|
|
|
|
triforceFrame = Frame(itemList5)
|
|
triforceLabel = Label(triforceFrame, text='Triforce (win game)')
|
|
self.customWindow.triforceVar = StringVar(value='0')
|
|
triforceEntry = Entry(triforceFrame, textvariable=self.customWindow.triforceVar, width=3, validate='all', vcmd=vcmd)
|
|
triforceFrame.pack()
|
|
triforceLabel.pack(anchor=W, side=LEFT, padx=(0,23))
|
|
triforceEntry.pack(anchor=E)
|
|
|
|
rupoorFrame = Frame(itemList5)
|
|
rupoorLabel = Label(rupoorFrame, text='Rupoor')
|
|
self.customWindow.rupoorVar = StringVar(value='0')
|
|
rupoorEntry = Entry(rupoorFrame, textvariable=self.customWindow.rupoorVar, width=3, validate='all', vcmd=vcmd)
|
|
rupoorFrame.pack()
|
|
rupoorLabel.pack(anchor=W, side=LEFT, padx=(0,87))
|
|
rupoorEntry.pack(anchor=E)
|
|
|
|
rupoorcostFrame = Frame(itemList5)
|
|
rupoorcostLabel = Label(rupoorcostFrame, text='Rupoor Cost')
|
|
self.customWindow.rupoorcostVar = StringVar(value='10')
|
|
rupoorcostEntry = Entry(rupoorcostFrame, textvariable=self.customWindow.rupoorcostVar, width=6, validate='all', vcmd=vcmd)
|
|
rupoorcostFrame.pack()
|
|
rupoorcostLabel.pack(anchor=W, side=LEFT, padx=(0,43))
|
|
rupoorcostEntry.pack(anchor=E)
|
|
|
|
itemList1.pack(side=LEFT, padx=(0,0))
|
|
itemList2.pack(side=LEFT, padx=(0,0))
|
|
itemList3.pack(side=LEFT, padx=(0,0))
|
|
itemList4.pack(side=LEFT, padx=(0,0))
|
|
itemList5.pack(side=LEFT, padx=(0,0))
|
|
topFrame3.pack(side=TOP, pady=(17,0))
|
|
|
|
if args is not None:
|
|
for k,v in vars(args).items():
|
|
if type(v) is dict:
|
|
setattr(args, k, v[1]) # only get values for player 1 for now
|
|
# load values from commandline args
|
|
self.generationSetupWindow.createSpoilerVar.set(int(args.create_spoiler))
|
|
self.generationSetupWindow.suppressRomVar.set(int(args.suppress_rom))
|
|
self.dungeonRandoWindow.mapshuffleVar.set(args.mapshuffle)
|
|
self.dungeonRandoWindow.compassshuffleVar.set(args.compassshuffle)
|
|
self.dungeonRandoWindow.keyshuffleVar.set(args.keyshuffle)
|
|
self.dungeonRandoWindow.bigkeyshuffleVar.set(args.bigkeyshuffle)
|
|
self.itemWindow.retroVar.set(args.retro)
|
|
self.entrandoWindow.openpyramidVar.set(args.openpyramid)
|
|
self.gameOptionsWindow.quickSwapVar.set(int(args.quickswap))
|
|
self.gameOptionsWindow.disableMusicVar.set(int(args.disablemusic))
|
|
if args.multi:
|
|
self.multiworldWindow.worldVar.set(str(args.multi))
|
|
if args.count:
|
|
self.farBottomFrame.countVar.set(str(args.count))
|
|
if args.seed:
|
|
self.farBottomFrame.seedVar.set(str(args.seed))
|
|
self.itemWindow.modeVar.set(args.mode)
|
|
self.itemWindow.swordVar.set(args.swords)
|
|
self.itemWindow.difficultyVar.set(args.difficulty)
|
|
self.itemWindow.itemfunctionVar.set(args.item_functionality)
|
|
self.itemWindow.timerVar.set(args.timer)
|
|
self.itemWindow.progressiveVar.set(args.progressive)
|
|
self.itemWindow.accessibilityVar.set(args.accessibility)
|
|
self.itemWindow.goalVar.set(args.goal)
|
|
self.itemWindow.crystalsGTVar.set(args.crystals_gt)
|
|
self.itemWindow.crystalsGanonVar.set(args.crystals_ganon)
|
|
self.itemWindow.algorithmVar.set(args.algorithm)
|
|
self.entrandoWindow.shuffleVar.set(args.shuffle)
|
|
self.dungeonRandoWindow.doorShuffleVar.set(args.door_shuffle)
|
|
self.gameOptionsWindow.heartcolorVar.set(args.heartcolor)
|
|
self.gameOptionsWindow.heartbeepVar.set(args.heartbeep)
|
|
self.gameOptionsWindow.fastMenuVar.set(args.fastmenu)
|
|
self.itemWindow.logicVar.set(args.logic)
|
|
self.generationSetupWindow.romVar.set(args.rom)
|
|
self.entrandoWindow.shuffleGanonVar.set(args.shuffleganon)
|
|
self.gameOptionsWindow.hintsVar.set(args.hints)
|
|
self.enemizerWindow.enemizerCLIpathVar.set(args.enemizercli)
|
|
self.enemizerWindow.potShuffleVar.set(args.shufflepots)
|
|
self.enemizerWindow.enemyShuffleVar.set(args.shuffleenemies)
|
|
self.enemizerWindow.enemizerBossVar.set(args.shufflebosses)
|
|
self.enemizerWindow.enemizerDamageVar.set(args.enemy_damage)
|
|
self.enemizerWindow.enemizerHealthVar.set(args.enemy_health)
|
|
self.gameOptionsWindow.owPalettesVar.set(args.ow_palettes)
|
|
self.gameOptionsWindow.uwPalettesVar.set(args.uw_palettes)
|
|
# if args.sprite is not None:
|
|
# self.gameOptionsWindow.set_sprite(Sprite(args.sprite))
|
|
|
|
mainWindow.mainloop()
|
|
|
|
if __name__ == '__main__':
|
|
guiMain()
|