193 lines
5.3 KiB
Python
193 lines
5.3 KiB
Python
from tkinter import ttk, IntVar, StringVar, Button, Checkbutton, Entry, Frame, Label, OptionMenu, E, W, LEFT, RIGHT
|
|
from functools import partial
|
|
import classes.SpriteSelector as spriteSelector
|
|
import gui.widgets as widgets
|
|
|
|
|
|
def gameoptions_page(top, parent):
|
|
# Game Options
|
|
self = ttk.Frame(parent)
|
|
|
|
# Game Options options
|
|
self.widgets = {}
|
|
|
|
myDict = {
|
|
## Hints: Useful/Not useful
|
|
"hints": {
|
|
"type": "checkbox",
|
|
"label": {
|
|
"text": "Include Helpful Hints"
|
|
}
|
|
},
|
|
## Disable BGM
|
|
"nobgm": {
|
|
"type": "checkbox",
|
|
"label": {
|
|
"text": "Disable Music & MSU-1"
|
|
}
|
|
},
|
|
## L/R Quickswap
|
|
"quickswap": {
|
|
"type": "checkbox",
|
|
"label": {
|
|
"text": "L/R Quickswapping"
|
|
}
|
|
}
|
|
}
|
|
dictWidgets = widgets.make_widgets_from_dict(self, myDict, self)
|
|
for key in dictWidgets:
|
|
self.widgets[key] = dictWidgets[key]
|
|
self.widgets[key].pack(anchor=W)
|
|
|
|
leftRomOptionsFrame = Frame(self)
|
|
rightRomOptionsFrame = Frame(self)
|
|
leftRomOptionsFrame.pack(side=LEFT)
|
|
rightRomOptionsFrame.pack(side=RIGHT)
|
|
|
|
myDict = {
|
|
## Heart Color
|
|
"heartcolor": {
|
|
"type": "selectbox",
|
|
"label": {
|
|
"text": "Heart Color"
|
|
},
|
|
"packAttrs": {
|
|
"label": { "side": LEFT },
|
|
"selectbox": { "side": RIGHT }
|
|
},
|
|
"options": {
|
|
"Red": "red",
|
|
"Blue": "blue",
|
|
"Green": "green",
|
|
"Yellow": "yellow",
|
|
"Random": "random"
|
|
}
|
|
},
|
|
## Heart Beep speed
|
|
"heartbeep": {
|
|
"type": "selectbox",
|
|
"label": {
|
|
"text": "Heart Beep sound rate"
|
|
},
|
|
"packAttrs": {
|
|
"label": { "side": LEFT },
|
|
"selectbox": { "side": RIGHT},
|
|
"default": "Normal"
|
|
},
|
|
"options": {
|
|
"Double": "double",
|
|
"Normal": "normal",
|
|
"Half": "half",
|
|
"Quarter": "quarter",
|
|
"Off": "off"
|
|
}
|
|
}
|
|
}
|
|
dictWidgets = widgets.make_widgets_from_dict(self, myDict, leftRomOptionsFrame)
|
|
for key in dictWidgets:
|
|
self.widgets[key] = dictWidgets[key]
|
|
self.widgets[key].pack(anchor=E)
|
|
|
|
## Sprite selection
|
|
spriteDialogFrame = Frame(leftRomOptionsFrame)
|
|
baseSpriteLabel = Label(spriteDialogFrame, text='Sprite:')
|
|
|
|
self.widgets["sprite"] = {}
|
|
self.widgets["sprite"]["spriteObject"] = None
|
|
self.widgets["sprite"]["spriteNameVar"] = StringVar()
|
|
|
|
self.widgets["sprite"]["spriteNameVar"].set('(unchanged)')
|
|
spriteEntry = Label(spriteDialogFrame, textvariable=self.widgets["sprite"]["spriteNameVar"])
|
|
|
|
def sprite_setter(spriteObject):
|
|
self.widgets["sprite"]["spriteObject"] = spriteObject
|
|
|
|
def sprite_select():
|
|
spriteSelector.SpriteSelector(parent, partial(set_sprite, spriteSetter=sprite_setter,
|
|
spriteNameVar=self.widgets["sprite"]["spriteNameVar"],
|
|
randomSpriteVar=top.randomSprite))
|
|
|
|
spriteSelectButton = Button(spriteDialogFrame, text='...', command=sprite_select)
|
|
|
|
baseSpriteLabel.pack(side=LEFT)
|
|
spriteEntry.pack(side=LEFT)
|
|
spriteSelectButton.pack(side=LEFT)
|
|
spriteDialogFrame.pack(anchor=E)
|
|
|
|
myDict = {
|
|
## Menu Speed
|
|
"menuspeed": {
|
|
"type": "selectbox",
|
|
"label": {
|
|
"text": "Menu Speed"
|
|
},
|
|
"packAttrs": {
|
|
"label": { "side": LEFT },
|
|
"selectbox": { "side": RIGHT },
|
|
"default": "Normal"
|
|
},
|
|
"options": {
|
|
"Instant": "instant",
|
|
"Quadruple": "quadruple",
|
|
"Triple": "triple",
|
|
"Double": "double",
|
|
"Normal": "normal",
|
|
"Half": "half"
|
|
}
|
|
},
|
|
## Overworld Palettes (not Enemizer)
|
|
"owpalettes": {
|
|
"type": "selectbox",
|
|
"label": {
|
|
"text": "Overworld Palettes"
|
|
},
|
|
"packAttrs": {
|
|
"label": { "side": LEFT },
|
|
"selectbox": { "side": RIGHT }
|
|
},
|
|
"options": {
|
|
"Default": "default",
|
|
"Random": "random",
|
|
"Blackout": "blackout"
|
|
}
|
|
},
|
|
## Underworld Palettes (not Enemizer)
|
|
"uwpalettes": {
|
|
"type": "selectbox",
|
|
"label": {
|
|
"text": "Underworld Palettes"
|
|
},
|
|
"packAttrs": {
|
|
"label": { "side": LEFT },
|
|
"selectbox": { "side": RIGHT }
|
|
},
|
|
"options": {
|
|
"Default": "default",
|
|
"Random": "random",
|
|
"Blackout": "blackout"
|
|
}
|
|
}
|
|
}
|
|
dictWidgets = widgets.make_widgets_from_dict(self, myDict, rightRomOptionsFrame)
|
|
for key in dictWidgets:
|
|
self.widgets[key] = dictWidgets[key]
|
|
self.widgets[key].pack(anchor=E)
|
|
|
|
return self
|
|
|
|
|
|
def set_sprite(sprite_param, random_sprite, spriteSetter=None, spriteNameVar=None, randomSpriteVar=None):
|
|
if sprite_param is None or not sprite_param.valid:
|
|
if spriteSetter:
|
|
spriteSetter(None)
|
|
if spriteNameVar is not None:
|
|
spriteNameVar.set('(unchanged)')
|
|
else:
|
|
if spriteSetter:
|
|
spriteSetter(sprite_param)
|
|
if spriteNameVar is not None:
|
|
spriteNameVar.set(sprite_param.name)
|
|
if randomSpriteVar:
|
|
randomSpriteVar.set(random_sprite)
|
|
|