140 lines
5.6 KiB
Python
140 lines
5.6 KiB
Python
from tkinter import ttk, IntVar, StringVar, Checkbutton, Frame, Label, OptionMenu, E, W, LEFT, RIGHT
|
|
|
|
def item_page(parent):
|
|
# Item Randomizer
|
|
self = ttk.Frame(parent)
|
|
|
|
# Item Randomizer options
|
|
## Retro (eventually needs to become a World State)
|
|
self.retroVar = IntVar()
|
|
retroCheckbutton = Checkbutton(self, text="Retro mode (universal keys)", variable=self.retroVar)
|
|
retroCheckbutton.pack(anchor=W)
|
|
|
|
leftItemFrame = Frame(self)
|
|
rightItemFrame = Frame(self)
|
|
leftItemFrame.pack(side=LEFT)
|
|
rightItemFrame.pack(side=RIGHT)
|
|
|
|
## World State
|
|
modeFrame = Frame(leftItemFrame)
|
|
self.modeVar = StringVar()
|
|
self.modeVar.set('open')
|
|
modeOptionMenu = OptionMenu(modeFrame, self.modeVar, 'standard', 'open', 'inverted')
|
|
modeOptionMenu.pack(side=RIGHT)
|
|
modeLabel = Label(modeFrame, text='World State')
|
|
modeLabel.pack(side=LEFT)
|
|
modeFrame.pack(anchor=E)
|
|
|
|
## Logic Level
|
|
logicFrame = Frame(leftItemFrame)
|
|
self.logicVar = StringVar()
|
|
self.logicVar.set('noglitches')
|
|
logicOptionMenu = OptionMenu(logicFrame, self.logicVar, 'noglitches', 'minorglitches', 'nologic')
|
|
logicOptionMenu.pack(side=RIGHT)
|
|
logicLabel = Label(logicFrame, text='Game Logic')
|
|
logicLabel.pack(side=LEFT)
|
|
logicFrame.pack(anchor=E)
|
|
|
|
## Goal
|
|
goalFrame = Frame(leftItemFrame)
|
|
self.goalVar = StringVar()
|
|
self.goalVar.set('ganon')
|
|
goalOptionMenu = OptionMenu(goalFrame, self.goalVar, 'ganon', 'pedestal', 'dungeons', 'triforcehunt', 'crystals')
|
|
goalOptionMenu.pack(side=RIGHT)
|
|
goalLabel = Label(goalFrame, text='Goal')
|
|
goalLabel.pack(side=LEFT)
|
|
goalFrame.pack(anchor=E)
|
|
|
|
## Number of crystals to open GT
|
|
crystalsGTFrame = Frame(leftItemFrame)
|
|
self.crystalsGTVar = StringVar()
|
|
self.crystalsGTVar.set('7')
|
|
crystalsGTOptionMenu = OptionMenu(crystalsGTFrame, self.crystalsGTVar, '0', '1', '2', '3', '4', '5', '6', '7', 'random')
|
|
crystalsGTOptionMenu.pack(side=RIGHT)
|
|
crystalsGTLabel = Label(crystalsGTFrame, text='Crystals to open Ganon\'s Tower')
|
|
crystalsGTLabel.pack(side=LEFT)
|
|
crystalsGTFrame.pack(anchor=E)
|
|
|
|
## Number of crystals to damage Ganon
|
|
crystalsGanonFrame = Frame(leftItemFrame)
|
|
self.crystalsGanonVar = StringVar()
|
|
self.crystalsGanonVar.set('7')
|
|
crystalsGanonOptionMenu = OptionMenu(crystalsGanonFrame, self.crystalsGanonVar, '0', '1', '2', '3', '4', '5', '6', '7', 'random')
|
|
crystalsGanonOptionMenu.pack(side=RIGHT)
|
|
crystalsGanonLabel = Label(crystalsGanonFrame, text='Crystals to fight Ganon')
|
|
crystalsGanonLabel.pack(side=LEFT)
|
|
crystalsGanonFrame.pack(anchor=E)
|
|
|
|
## Weapons
|
|
swordFrame = Frame(leftItemFrame)
|
|
self.swordVar = StringVar()
|
|
self.swordVar.set('random')
|
|
swordOptionMenu = OptionMenu(swordFrame, self.swordVar, 'random', 'assured', 'swordless', 'vanilla')
|
|
swordOptionMenu.pack(side=RIGHT)
|
|
swordLabel = Label(swordFrame, text='Sword availability')
|
|
swordLabel.pack(side=LEFT)
|
|
swordFrame.pack(anchor=E)
|
|
|
|
## Item Pool
|
|
difficultyFrame = Frame(rightItemFrame)
|
|
self.difficultyVar = StringVar()
|
|
self.difficultyVar.set('normal')
|
|
difficultyOptionMenu = OptionMenu(difficultyFrame, self.difficultyVar, 'normal', 'hard', 'expert')
|
|
difficultyOptionMenu.pack(side=RIGHT)
|
|
difficultyLabel = Label(difficultyFrame, text='Difficulty: item pool')
|
|
difficultyLabel.pack(side=LEFT)
|
|
difficultyFrame.pack(anchor=E)
|
|
|
|
## Item Functionality
|
|
itemfunctionFrame = Frame(rightItemFrame)
|
|
self.itemfunctionVar = StringVar()
|
|
self.itemfunctionVar.set('normal')
|
|
itemfunctionOptionMenu = OptionMenu(itemfunctionFrame, self.itemfunctionVar, 'normal', 'hard', 'expert')
|
|
itemfunctionOptionMenu.pack(side=RIGHT)
|
|
itemfunctionLabel = Label(itemfunctionFrame, text='Difficulty: item functionality')
|
|
itemfunctionLabel.pack(side=LEFT)
|
|
itemfunctionFrame.pack(anchor=E)
|
|
|
|
## Timer setting
|
|
timerFrame = Frame(rightItemFrame)
|
|
self.timerVar = StringVar()
|
|
self.timerVar.set('none')
|
|
timerOptionMenu = OptionMenu(timerFrame, self.timerVar, 'none', 'display', 'timed', 'timed-ohko', 'ohko', 'timed-countdown')
|
|
timerOptionMenu.pack(side=RIGHT)
|
|
timerLabel = Label(timerFrame, text='Timer setting')
|
|
timerLabel.pack(side=LEFT)
|
|
timerFrame.pack(anchor=E)
|
|
|
|
## Progressives: On/Off
|
|
progressiveFrame = Frame(rightItemFrame)
|
|
self.progressiveVar = StringVar()
|
|
self.progressiveVar.set('on')
|
|
progressiveOptionMenu = OptionMenu(progressiveFrame, self.progressiveVar, 'on', 'off', 'random')
|
|
progressiveOptionMenu.pack(side=RIGHT)
|
|
progressiveLabel = Label(progressiveFrame, text='Progressive equipment')
|
|
progressiveLabel.pack(side=LEFT)
|
|
progressiveFrame.pack(anchor=E)
|
|
|
|
## Accessibilty
|
|
accessibilityFrame = Frame(rightItemFrame)
|
|
self.accessibilityVar = StringVar()
|
|
self.accessibilityVar.set('items')
|
|
accessibilityOptionMenu = OptionMenu(accessibilityFrame, self.accessibilityVar, 'items', 'locations', 'none')
|
|
accessibilityOptionMenu.pack(side=RIGHT)
|
|
accessibilityLabel = Label(accessibilityFrame, text='Item accessibility')
|
|
accessibilityLabel.pack(side=LEFT)
|
|
accessibilityFrame.pack(anchor=E)
|
|
accessibilityFrame.pack(anchor=E)
|
|
|
|
## Item Sorting Algorithm
|
|
algorithmFrame = Frame(rightItemFrame)
|
|
self.algorithmVar = StringVar()
|
|
self.algorithmVar.set('balanced')
|
|
algorithmOptionMenu = OptionMenu(algorithmFrame, self.algorithmVar, 'freshness', 'flood', 'vt21', 'vt22', 'vt25', 'vt26', 'balanced')
|
|
algorithmOptionMenu.pack(side=RIGHT)
|
|
algorithmLabel = Label(algorithmFrame, text='Item distribution algorithm')
|
|
algorithmLabel.pack(side=LEFT)
|
|
algorithmFrame.pack(anchor=E)
|
|
|
|
return self
|