From 88bb18f12f2ebeb2290e904b10c274ace3eab37a Mon Sep 17 00:00:00 2001 From: "Mike A. Trethewey" Date: Tue, 11 Feb 2020 02:17:50 -0800 Subject: [PATCH] Pretty Game Options options --- gui/bottom.py | 16 ++-- gui/loadcliargs.py | 16 ++-- gui/randomize/enemizer.py | 4 +- gui/randomize/gameoptions.py | 163 ++++++++++++++++++++++++----------- 4 files changed, 131 insertions(+), 68 deletions(-) diff --git a/gui/bottom.py b/gui/bottom.py index 3eee7427..71b99040 100644 --- a/gui/bottom.py +++ b/gui/bottom.py @@ -50,9 +50,9 @@ def bottom_frame(self,parent,args=None): guiargs.algorithm = parent.itemWindow.itemWidgets["sortingalgo"].storageVar.get() guiargs.shuffle = parent.entrandoWindow.entrandoWidgets["entranceshuffle"].storageVar.get() guiargs.door_shuffle = parent.dungeonRandoWindow.dungeonWidgets["dungeondoorshuffle"].storageVar.get() - guiargs.heartbeep = parent.gameOptionsWindow.heartbeepVar.get() - guiargs.heartcolor = parent.gameOptionsWindow.heartcolorVar.get() - guiargs.fastmenu = parent.gameOptionsWindow.fastMenuVar.get() + guiargs.heartbeep = parent.gameOptionsWindow.gameOptionsWidgets["heartbeep"].storageVar.get() + guiargs.heartcolor = parent.gameOptionsWindow.gameOptionsWidgets["heartcolor"].storageVar.get() + guiargs.fastmenu = parent.gameOptionsWindow.gameOptionsWidgets["menuspeed"].storageVar.get() guiargs.create_spoiler = bool(parent.generationSetupWindow.createSpoilerVar.get()) guiargs.skip_playthrough = not bool(parent.generationSetupWindow.createSpoilerVar.get()) guiargs.suppress_rom = bool(parent.generationSetupWindow.suppressRomVar.get()) @@ -62,12 +62,12 @@ def bottom_frame(self,parent,args=None): guiargs.keyshuffle = bool(parent.dungeonRandoWindow.dungeonWidgets["smallkeyshuffle"].storageVar.get()) guiargs.bigkeyshuffle = bool(parent.dungeonRandoWindow.dungeonWidgets["bigkeyshuffle"].storageVar.get()) guiargs.retro = bool(parent.itemWindow.itemWidgets["retro"].storageVar.get()) - guiargs.quickswap = bool(parent.gameOptionsWindow.quickSwapVar.get()) - guiargs.disablemusic = bool(parent.gameOptionsWindow.disableMusicVar.get()) - guiargs.ow_palettes = parent.gameOptionsWindow.owPalettesVar.get() - guiargs.uw_palettes = parent.gameOptionsWindow.uwPalettesVar.get() + guiargs.quickswap = bool(parent.gameOptionsWindow.gameOptionsWidgets["quickswap"].storageVar.get()) + guiargs.disablemusic = bool(parent.gameOptionsWindow.gameOptionsWidgets["nobgm"].storageVar.get()) + guiargs.ow_palettes = parent.gameOptionsWindow.gameOptionsWidgets["owpalettes"].storageVar.get() + guiargs.uw_palettes = parent.gameOptionsWindow.gameOptionsWidgets["uwpalettes"].storageVar.get() guiargs.shuffleganon = bool(parent.entrandoWindow.entrandoWidgets["shuffleganon"].storageVar.get()) - guiargs.hints = bool(parent.gameOptionsWindow.hintsVar.get()) + guiargs.hints = bool(parent.gameOptionsWindow.gameOptionsWidgets["hints"].storageVar.get()) guiargs.enemizercli = parent.enemizerWindow.enemizerCLIpathVar.get() guiargs.shufflebosses = parent.enemizerWindow.enemizerWidgets["bossshuffle"].storageVar.get() guiargs.shuffleenemies = parent.enemizerWindow.enemizerWidgets["enemyshuffle"].storageVar.get() diff --git a/gui/loadcliargs.py b/gui/loadcliargs.py index d72209d7..f9c73c23 100644 --- a/gui/loadcliargs.py +++ b/gui/loadcliargs.py @@ -12,8 +12,8 @@ def loadcliargs(gui,args): gui.dungeonRandoWindow.dungeonWidgets["bigkeyshuffle"].storageVar.set(args.bigkeyshuffle) gui.itemWindow.itemWidgets["retro"].storageVar.set(args.retro) gui.entrandoWindow.entrandoWidgets["openpyramid"].storageVar.set(args.openpyramid) - gui.gameOptionsWindow.quickSwapVar.set(int(args.quickswap)) - gui.gameOptionsWindow.disableMusicVar.set(int(args.disablemusic)) + gui.gameOptionsWindow.gameOptionsWidgets["quickswap"].storageVar.set(int(args.quickswap)) + gui.gameOptionsWindow.gameOptionsWidgets["nobgm"].storageVar.set(int(args.disablemusic)) if args.multi: gui.multiworldWindow.multiworldWidgets["worlds"].storageVar.set(str(args.multi)) if args.count: @@ -33,20 +33,20 @@ def loadcliargs(gui,args): gui.itemWindow.itemWidgets["sortingalgo"].storageVar.set(args.algorithm) gui.entrandoWindow.entrandoWidgets["entranceshuffle"].storageVar.set(args.shuffle) gui.dungeonRandoWindow.dungeonWidgets["dungeondoorshuffle"].storageVar.set(args.door_shuffle) - gui.gameOptionsWindow.heartcolorVar.set(args.heartcolor) - gui.gameOptionsWindow.heartbeepVar.set(args.heartbeep) - gui.gameOptionsWindow.fastMenuVar.set(args.fastmenu) + gui.gameOptionsWindow.gameOptionsWidgets["heartcolor"].storageVar.set(args.heartcolor) + gui.gameOptionsWindow.gameOptionsWidgets["heartbeep"].storageVar.set(args.heartbeep) + gui.gameOptionsWindow.gameOptionsWidgets["menuspeed"].storageVar.set(args.fastmenu) gui.itemWindow.itemWidgets["logiclevel"].storageVar.set(args.logic) gui.generationSetupWindow.romVar.set(args.rom) gui.entrandoWindow.entrandoWidgets["shuffleganon"].storageVar.set(args.shuffleganon) - gui.gameOptionsWindow.hintsVar.set(args.hints) + gui.gameOptionsWindow.gameOptionsWidgets["hints"].storageVar.set(args.hints) gui.enemizerWindow.enemizerCLIpathVar.set(args.enemizercli) gui.enemizerWindow.enemizerWidgets["potshuffle"].storageVar.set(args.shufflepots) gui.enemizerWindow.enemizerWidgets["enemyshuffle"].storageVar.set(args.shuffleenemies) gui.enemizerWindow.enemizerWidgets["bossshuffle"].storageVar.set(args.shufflebosses) gui.enemizerWindow.enemizerWidgets["enemydamage"].storageVar.set(args.enemy_damage) gui.enemizerWindow.enemizerWidgets["enemyhealth"].storageVar.set(args.enemy_health) - gui.gameOptionsWindow.owPalettesVar.set(args.ow_palettes) - gui.gameOptionsWindow.uwPalettesVar.set(args.uw_palettes) + gui.gameOptionsWindow.gameOptionsWidgets["owpalettes"].storageVar.set(args.ow_palettes) + gui.gameOptionsWindow.gameOptionsWidgets["uwpalettes"].storageVar.set(args.uw_palettes) # if args.sprite is not None: # gui.gameOptionsWindow.set_sprite(Sprite(args.sprite)) \ No newline at end of file diff --git a/gui/randomize/enemizer.py b/gui/randomize/enemizer.py index d7ae0524..74e570d7 100644 --- a/gui/randomize/enemizer.py +++ b/gui/randomize/enemizer.py @@ -59,7 +59,7 @@ def enemizer_page(parent,working_dirs): "Chaos": "chaos" } ) - self.enemizerWidgets[key].pack(anchor=W) + self.enemizerWidgets[key].pack(anchor=E) ## Randomize Bosses key = "bossshuffle" @@ -77,7 +77,7 @@ def enemizer_page(parent,working_dirs): "Chaos": "chaos" } ) - self.enemizerWidgets[key].pack(anchor=W) + self.enemizerWidgets[key].pack(anchor=E) ## Enemy Damage key = "enemydamage" diff --git a/gui/randomize/gameoptions.py b/gui/randomize/gameoptions.py index 103aa2aa..2cd1d863 100644 --- a/gui/randomize/gameoptions.py +++ b/gui/randomize/gameoptions.py @@ -1,25 +1,46 @@ from tkinter import ttk, IntVar, StringVar, Button, Checkbutton, Entry, Frame, Label, OptionMenu, E, W, LEFT, RIGHT from classes.SpriteSelector import SpriteSelector +import gui.widgets as widgets def gameoptions_page(parent): + # Game Options self = ttk.Frame(parent) # Game Options options + self.gameOptionsWidgets = {} + ## Hints: Useful/Not useful - self.hintsVar = IntVar() - self.hintsVar.set(1) #set default - hintsCheckbutton = Checkbutton(self, text="Include Helpful Hints", variable=self.hintsVar) - hintsCheckbutton.pack(anchor=W) + key = "hints" + self.gameOptionsWidgets[key] = widgets.make_widget( + self, + "checkbox", + self, + "Include Helpful Hints", + None + ) + self.gameOptionsWidgets[key].pack(anchor=W) ## Disable BGM - self.disableMusicVar = IntVar() - disableMusicCheckbutton = Checkbutton(self, text="Disable music", variable=self.disableMusicVar) - disableMusicCheckbutton.pack(anchor=W) + key = "nobgm" + self.gameOptionsWidgets[key] = widgets.make_widget( + self, + "checkbox", + self, + "Disable Music & MSU-1", + None + ) + self.gameOptionsWidgets[key].pack(anchor=W) ## L/R Quickswap - self.quickSwapVar = IntVar() - quickSwapCheckbutton = Checkbutton(self, text="L/R Quickswapping", variable=self.quickSwapVar) - quickSwapCheckbutton.pack(anchor=W) + key = "quickswap" + self.gameOptionsWidgets[key] = widgets.make_widget( + self, + "checkbox", + self, + "L/R Quickswapping", + None + ) + self.gameOptionsWidgets[key].pack(anchor=W) leftRomOptionsFrame = Frame(self) rightRomOptionsFrame = Frame(self) @@ -27,24 +48,42 @@ def gameoptions_page(parent): rightRomOptionsFrame.pack(side=RIGHT) ## Heart Color - heartcolorFrame = Frame(leftRomOptionsFrame) - heartcolorLabel = Label(heartcolorFrame, text='Heart color') - heartcolorLabel.pack(side=LEFT) - self.heartcolorVar = StringVar() - self.heartcolorVar.set('red') - heartcolorOptionMenu = OptionMenu(heartcolorFrame, self.heartcolorVar, 'red', 'blue', 'green', 'yellow', 'random') - heartcolorOptionMenu.pack(side=RIGHT) - heartcolorFrame.pack(anchor=E) + key = "heartcolor" + self.gameOptionsWidgets[key] = widgets.make_widget( + self, + "selectbox", + leftRomOptionsFrame, + "Heart Color", + None, + {"label": {"side": LEFT}, "selectbox": {"side": RIGHT}}, + { + "Red": "red", + "Blue": "blue", + "Green": "green", + "Yellow": "yellow", + "Random": "random" + } + ) + self.gameOptionsWidgets[key].pack(anchor=E) ## Heart Beep Speed - heartbeepFrame = Frame(leftRomOptionsFrame) - heartbeepLabel = Label(heartbeepFrame, text='Heart Beep sound rate') - heartbeepLabel.pack(side=LEFT) - self.heartbeepVar = StringVar() - self.heartbeepVar.set('normal') - heartbeepOptionMenu = OptionMenu(heartbeepFrame, self.heartbeepVar, 'double', 'normal', 'half', 'quarter', 'off') - heartbeepOptionMenu.pack(side=LEFT) - heartbeepFrame.pack(anchor=E) + key = "heartbeep" + self.gameOptionsWidgets[key] = widgets.make_widget( + self, + "selectbox", + leftRomOptionsFrame, + "Heart Beep sound rate", + None, + {"label": {"side": LEFT}, "selectbox": {"side": RIGHT}, "default": "Normal"}, + { + "Double": "double", + "Normal": "normal", + "Half": "half", + "Quarter": "quarter", + "Off": "off" + } + ) + self.gameOptionsWidgets[key].pack(anchor=W) ## Sprite selection spriteDialogFrame = Frame(leftRomOptionsFrame) @@ -76,33 +115,57 @@ def gameoptions_page(parent): spriteDialogFrame.pack(anchor=E) ## Menu Speed - fastMenuFrame = Frame(rightRomOptionsFrame) - fastMenuLabel = Label(fastMenuFrame, text='Menu speed') - fastMenuLabel.pack(side=LEFT) - self.fastMenuVar = StringVar() - self.fastMenuVar.set('normal') - fastMenuOptionMenu = OptionMenu(fastMenuFrame, self.fastMenuVar, 'normal', 'instant', 'double', 'triple', 'quadruple', 'half') - fastMenuOptionMenu.pack(side=LEFT) - fastMenuFrame.pack(anchor=E) + key = "menuspeed" + self.gameOptionsWidgets[key] = widgets.make_widget( + self, + "selectbox", + rightRomOptionsFrame, + "Menu Speed", + None, + {"label": {"side": LEFT}, "selectbox": {"side": RIGHT}, "default": "Normal"}, + { + "Instant": "instant", + "Quadruple": "quadruple", + "Triple": "triple", + "Double": "double", + "Normal": "normal", + "Half": "half" + } + ) + self.gameOptionsWidgets[key].pack(anchor=E) ## Overworld Palettes (not Enemizer) - owPalettesFrame = Frame(rightRomOptionsFrame) - owPalettesLabel = Label(owPalettesFrame, text='Overworld palettes') - owPalettesLabel.pack(side=LEFT) - self.owPalettesVar = StringVar() - self.owPalettesVar.set('default') - owPalettesOptionMenu = OptionMenu(owPalettesFrame, self.owPalettesVar, 'default', 'random', 'blackout') - owPalettesOptionMenu.pack(side=LEFT) - owPalettesFrame.pack(anchor=E) + key = "owpalettes" + self.gameOptionsWidgets[key] = widgets.make_widget( + self, + "selectbox", + rightRomOptionsFrame, + "Overworld Palettes", + None, + {"label": {"side": LEFT}, "selectbox": {"side": RIGHT}}, + { + "Default": "default", + "Random": "random", + "Blackout": "blackout" + } + ) + self.gameOptionsWidgets[key].pack(anchor=E) ## Underworld Palettes (not Enemizer) - uwPalettesFrame = Frame(rightRomOptionsFrame) - uwPalettesLabel = Label(uwPalettesFrame, text='Dungeon palettes') - uwPalettesLabel.pack(side=LEFT) - self.uwPalettesVar = StringVar() - self.uwPalettesVar.set('default') - uwPalettesOptionMenu = OptionMenu(uwPalettesFrame, self.uwPalettesVar, 'default', 'random', 'blackout') - uwPalettesOptionMenu.pack(side=LEFT) - uwPalettesFrame.pack(anchor=E) + key = "uwpalettes" + self.gameOptionsWidgets[key] = widgets.make_widget( + self, + "selectbox", + rightRomOptionsFrame, + "Underworld Palettes", + None, + {"label": {"side": LEFT}, "selectbox": {"side": RIGHT}}, + { + "Default": "default", + "Random": "random", + "Blackout": "blackout" + } + ) + self.gameOptionsWidgets[key].pack(anchor=E) return self