Implement Starting Inventory
This commit is contained in:
2
CLI.py
2
CLI.py
@@ -374,6 +374,7 @@ def get_settings():
|
||||
"remote_items": False,
|
||||
"race": False,
|
||||
"custom": False,
|
||||
"usestartinventory": False,
|
||||
"customitemarray": {
|
||||
"bow": 0,
|
||||
"progressivebow": 2,
|
||||
@@ -452,6 +453,7 @@ def get_settings():
|
||||
"randomSprite": False,
|
||||
"outputpath": os.path.join(".")
|
||||
}
|
||||
settings["startinventoryarray"] = {}
|
||||
if sys.platform.lower().find("windows"):
|
||||
settings["enemizercli"] += ".exe"
|
||||
|
||||
|
||||
7
Gui.py
7
Gui.py
@@ -8,6 +8,7 @@ from argparse import Namespace
|
||||
from CLI import get_settings
|
||||
from DungeonRandomizer import parse_arguments
|
||||
from gui.adjust.overview import adjust_page
|
||||
from gui.startinventory.overview import startinventory_page
|
||||
from gui.custom.overview import custom_page
|
||||
from gui.loadcliargs import loadcliargs, loadadjustargs
|
||||
from gui.randomize.item import item_page
|
||||
@@ -67,9 +68,11 @@ def guiMain(args=None):
|
||||
self.notebook = ttk.Notebook(self)
|
||||
self.pages["randomizer"] = ttk.Frame(self.notebook)
|
||||
self.pages["adjust"] = ttk.Frame(self.notebook)
|
||||
self.pages["startinventory"] = ttk.Frame(self.notebook)
|
||||
self.pages["custom"] = ttk.Frame(self.notebook)
|
||||
self.notebook.add(self.pages["randomizer"], text='Randomize')
|
||||
self.notebook.add(self.pages["adjust"], text='Adjust')
|
||||
self.notebook.add(self.pages["startinventory"], text='Starting Inventory')
|
||||
self.notebook.add(self.pages["custom"], text='Custom')
|
||||
self.notebook.pack()
|
||||
|
||||
@@ -132,6 +135,10 @@ def guiMain(args=None):
|
||||
self.pages["adjust"].content,self.settings = adjust_page(self, self.pages["adjust"], self.settings)
|
||||
self.pages["adjust"].content.pack(side=TOP, fill=BOTH, expand=True)
|
||||
|
||||
# Starting Inventory Controls
|
||||
self.pages["startinventory"].content = startinventory_page(self, self.pages["startinventory"])
|
||||
self.pages["startinventory"].content.pack(side=TOP, fill=BOTH, expand=True)
|
||||
|
||||
# Custom Controls
|
||||
self.pages["custom"].content = custom_page(self,self.pages["custom"])
|
||||
self.pages["custom"].content.pack(side=TOP, pady=(17,0))
|
||||
|
||||
@@ -19,3 +19,25 @@ CUSTOMITEMS = [
|
||||
"generickeys", "triforcepieces", "triforcepiecesgoal", "triforce", "rupoor",
|
||||
"rupoorcost"
|
||||
]
|
||||
|
||||
CUSTOMITEMLABELS = [
|
||||
"Bow", "Progressive Bow", "Blue Boomerang", "Red Boomerang", "Hookshot",
|
||||
"Mushroom", "Magic Powder", "Fire Rod", "Ice Rod", "Bombos",
|
||||
"Ether", "Quake", "Lamp", "Hammer", "Shovel",
|
||||
|
||||
"Ocarina", "Bug Catching Net", "Book of Mudora", "Bottle", "Cane of Somaria",
|
||||
"Cane of Byrna", "Magic Cape", "Magic Mirror", "Pegasus Boots", "Power Glove",
|
||||
"Titans Mitts", "Progressive Glove", "Flippers", "Moon Pearl", "Piece of Heart",
|
||||
|
||||
"Boss Heart Container", "Sanctuary Heart Container", "Fighter Sword", "Master Sword", "Tempered Sword",
|
||||
"Golden Sword", "Progressive Sword", "Blue Shield", "Red Shield", "Mirror Shield",
|
||||
"Progressive Shield", "Blue Mail", "Red Mail", "Progressive Armor", "Magic Upgrade (1/2)",
|
||||
|
||||
"Magic Upgrade (1/4)", "Bomb Upgrade (+5)", "Bomb Upgrade (+10)", "Arrow Upgrade (+5)", "Arrow Upgrade (+10)",
|
||||
"Single Arrow", "Arrows (10)", "Single Bomb", "Bombs (3)", "Bombs (10)",
|
||||
"Rupee (1)", "Rupees (5)", "Rupees (20)", "Rupees (50)", "Rupees (100)",
|
||||
|
||||
"Rupees (300)", "Blue Clock", "Green Clock", "Red Clock", "Silver Arrows",
|
||||
"Small Key (Universal)", "Triforce Piece", "Triforce Piece Goal", "Triforce", "Rupoor",
|
||||
"Rupoor Cost"
|
||||
]
|
||||
|
||||
@@ -180,10 +180,20 @@ def create_guiargs(parent):
|
||||
setattr(guiargs,"adjust." + internal, parent.pages["adjust"].content.widgets[adjustarg].storageVar.get())
|
||||
|
||||
customitems = CONST.CUSTOMITEMS
|
||||
guiargs.startinventory = []
|
||||
guiargs.customitemarray = {}
|
||||
guiargs.startinventoryarray = {}
|
||||
for customitem in customitems:
|
||||
if customitem not in ["triforcepiecesgoal", "rupoorcost"]:
|
||||
amount = int(parent.pages["startinventory"].content.startingWidgets[customitem].storageVar.get())
|
||||
guiargs.startinventoryarray[customitem] = amount
|
||||
for i in range(0, amount):
|
||||
label = CONST.CUSTOMITEMLABELS[customitems.index(customitem)]
|
||||
guiargs.startinventory.append(label)
|
||||
guiargs.customitemarray[customitem] = int(parent.pages["custom"].content.customWidgets[customitem].storageVar.get())
|
||||
|
||||
guiargs.startinventory = ','.join(guiargs.startinventory)
|
||||
|
||||
guiargs.sprite = parent.pages["randomizer"].pages["gameoptions"].widgets["sprite"]["spriteObject"]
|
||||
guiargs.randomSprite = parent.randomSprite.get()
|
||||
guiargs.outputpath = parent.outputPath.get()
|
||||
|
||||
1
gui/startinventory/__init__.py
Normal file
1
gui/startinventory/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
# do nothing, just exist to make "gui.startinventory" package
|
||||
60
gui/startinventory/overview.py
Normal file
60
gui/startinventory/overview.py
Normal file
@@ -0,0 +1,60 @@
|
||||
from tkinter import ttk, StringVar, Entry, Frame, Label, N, E, W, LEFT, RIGHT, X, VERTICAL, Y
|
||||
import gui.widgets as widgets
|
||||
import json
|
||||
import os
|
||||
|
||||
import classes.constants as CONST
|
||||
|
||||
def startinventory_page(top,parent):
|
||||
# Starting Inventory
|
||||
self = ttk.Frame(parent)
|
||||
|
||||
def create_list_frame(parent, framename):
|
||||
parent.frames[framename] = Frame(parent)
|
||||
parent.frames[framename].pack(side=LEFT, padx=(0,0), anchor=N)
|
||||
parent.frames[framename].thisRow = 0
|
||||
parent.frames[framename].thisCol = 0
|
||||
|
||||
def create_vertical_rule(num=1):
|
||||
for i in range(0,num):
|
||||
ttk.Separator(self, orient=VERTICAL).pack(side=LEFT, anchor=N, fill=Y)
|
||||
|
||||
def validation(P):
|
||||
if str.isdigit(P) or P == "":
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
vcmd=(self.register(validation), '%P')
|
||||
|
||||
# Starting Inventory options
|
||||
self.startingWidgets = {}
|
||||
|
||||
# Starting Inventory option sections
|
||||
self.frames = {}
|
||||
create_list_frame(self,"itemList1")
|
||||
create_vertical_rule(2)
|
||||
create_list_frame(self,"itemList2")
|
||||
create_vertical_rule(2)
|
||||
create_list_frame(self,"itemList3")
|
||||
create_vertical_rule(2)
|
||||
create_list_frame(self,"itemList4")
|
||||
create_vertical_rule(2)
|
||||
create_list_frame(self,"itemList5")
|
||||
|
||||
with open(os.path.join("resources","app","gui","custom","overview","widgets.json")) as widgetDefns:
|
||||
myDict = json.load(widgetDefns)
|
||||
del myDict["itemList5"]["triforcepiecesgoal"]
|
||||
del myDict["itemList5"]["rupoorcost"]
|
||||
for framename,theseWidgets in myDict.items():
|
||||
dictWidgets = widgets.make_widgets_from_dict(self, theseWidgets, self.frames[framename])
|
||||
for key in dictWidgets:
|
||||
self.startingWidgets[key] = dictWidgets[key]
|
||||
|
||||
for key in CONST.CUSTOMITEMS:
|
||||
if key not in ["triforcepiecesgoal", "rupoorcost"]:
|
||||
val = 0
|
||||
if key in top.settings["startinventoryarray"]:
|
||||
val = top.settings["startinventoryarray"][key]
|
||||
self.startingWidgets[key].storageVar.set(val)
|
||||
|
||||
return self
|
||||
@@ -11,6 +11,12 @@
|
||||
"text": "Do not create patched ROM"
|
||||
}
|
||||
},
|
||||
"usestartinventory": {
|
||||
"type": "checkbox",
|
||||
"label": {
|
||||
"text": "Use starting inventory"
|
||||
}
|
||||
},
|
||||
"usecustompool": {
|
||||
"type": "checkbox",
|
||||
"label": {
|
||||
|
||||
Reference in New Issue
Block a user