Saves sprite settings
Save on exit feature Some formatting changes
This commit is contained in:
14
CLI.py
14
CLI.py
@@ -9,7 +9,6 @@ import shlex
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from Main import main
|
from Main import main
|
||||||
from Rom import get_sprite_from_name
|
|
||||||
from Utils import is_bundled, close_console
|
from Utils import is_bundled, close_console
|
||||||
from Fill import FillError
|
from Fill import FillError
|
||||||
|
|
||||||
@@ -264,7 +263,7 @@ def parse_arguments(argv, no_defaults=False):
|
|||||||
help='Select the color of Link\'s heart meter. (default: %(default)s)')
|
help='Select the color of Link\'s heart meter. (default: %(default)s)')
|
||||||
parser.add_argument('--ow_palettes', default=defval(settings["ow_palettes"]), choices=['default', 'random', 'blackout'])
|
parser.add_argument('--ow_palettes', default=defval(settings["ow_palettes"]), choices=['default', 'random', 'blackout'])
|
||||||
parser.add_argument('--uw_palettes', default=defval(settings["uw_palettes"]), choices=['default', 'random', 'blackout'])
|
parser.add_argument('--uw_palettes', default=defval(settings["uw_palettes"]), choices=['default', 'random', 'blackout'])
|
||||||
parser.add_argument('--sprite', help='''\
|
parser.add_argument('--sprite', default=defval(settings["sprite"]), help='''\
|
||||||
Path to a sprite sheet to use for Link. Needs to be in
|
Path to a sprite sheet to use for Link. Needs to be in
|
||||||
binary format and have a length of 0x7000 (28672) bytes,
|
binary format and have a length of 0x7000 (28672) bytes,
|
||||||
or 0x7078 (28792) bytes including palette data.
|
or 0x7078 (28792) bytes including palette data.
|
||||||
@@ -291,6 +290,7 @@ def parse_arguments(argv, no_defaults=False):
|
|||||||
parser.add_argument('--teams', default=defval(1), type=lambda value: max(int(value), 1))
|
parser.add_argument('--teams', default=defval(1), type=lambda value: max(int(value), 1))
|
||||||
parser.add_argument('--outputpath', default=defval(settings["outputpath"]))
|
parser.add_argument('--outputpath', default=defval(settings["outputpath"]))
|
||||||
parser.add_argument('--race', default=defval(settings["race"] != 0), action='store_true')
|
parser.add_argument('--race', default=defval(settings["race"] != 0), action='store_true')
|
||||||
|
parser.add_argument('--saveonexit', default=defval(settings["saveonexit"]), choices=['never', 'ask', 'always'])
|
||||||
parser.add_argument('--outputname')
|
parser.add_argument('--outputname')
|
||||||
|
|
||||||
if multiargs.multi:
|
if multiargs.multi:
|
||||||
@@ -322,6 +322,7 @@ def parse_arguments(argv, no_defaults=False):
|
|||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def get_settings():
|
def get_settings():
|
||||||
# set default settings
|
# set default settings
|
||||||
settings = {
|
settings = {
|
||||||
@@ -459,9 +460,11 @@ def get_settings():
|
|||||||
"rupoorcost": 10
|
"rupoorcost": 10
|
||||||
},
|
},
|
||||||
"randomSprite": False,
|
"randomSprite": False,
|
||||||
"outputpath": os.path.join(".")
|
"outputpath": os.path.join("."),
|
||||||
|
"saveonexit": "ask",
|
||||||
|
"startinventoryarray": {}
|
||||||
}
|
}
|
||||||
settings["startinventoryarray"] = {}
|
|
||||||
if sys.platform.lower().find("windows"):
|
if sys.platform.lower().find("windows"):
|
||||||
settings["enemizercli"] += ".exe"
|
settings["enemizercli"] += ".exe"
|
||||||
|
|
||||||
@@ -470,12 +473,11 @@ def get_settings():
|
|||||||
if os.path.exists(settings_path):
|
if os.path.exists(settings_path):
|
||||||
with(open(settings_path)) as json_file:
|
with(open(settings_path)) as json_file:
|
||||||
data = json.load(json_file)
|
data = json.load(json_file)
|
||||||
if 'sprite' in data.keys() and data['sprite']:
|
|
||||||
data['sprite'] = get_sprite_from_name(data['sprite'])
|
|
||||||
for k, v in data.items():
|
for k, v in data.items():
|
||||||
settings[k] = v
|
settings[k] = v
|
||||||
return settings
|
return settings
|
||||||
|
|
||||||
|
|
||||||
def get_args_priority(settings_args, gui_args, cli_args):
|
def get_args_priority(settings_args, gui_args, cli_args):
|
||||||
args = {}
|
args = {}
|
||||||
args["settings"] = get_settings() if settings_args is None else settings_args
|
args["settings"] = get_settings() if settings_args is None else settings_args
|
||||||
|
|||||||
17
Gui.py
17
Gui.py
@@ -21,7 +21,6 @@ from gui.randomize.generation import generation_page
|
|||||||
from gui.bottom import bottom_frame, create_guiargs
|
from gui.bottom import bottom_frame, create_guiargs
|
||||||
from GuiUtils import set_icon
|
from GuiUtils import set_icon
|
||||||
from Main import __version__ as ESVersion
|
from Main import __version__ as ESVersion
|
||||||
from Rom import get_sprite_from_name
|
|
||||||
|
|
||||||
|
|
||||||
def guiMain(args=None):
|
def guiMain(args=None):
|
||||||
@@ -36,20 +35,28 @@ def guiMain(args=None):
|
|||||||
f.write(json.dumps(args, indent=2))
|
f.write(json.dumps(args, indent=2))
|
||||||
os.chmod(os.path.join(settings_path, "settings.json"),0o755)
|
os.chmod(os.path.join(settings_path, "settings.json"),0o755)
|
||||||
|
|
||||||
def save_settings_from_gui():
|
def save_settings_from_gui(confirm):
|
||||||
gui_args = vars(create_guiargs(self))
|
gui_args = vars(create_guiargs(self))
|
||||||
if self.randomSprite.get():
|
if self.randomSprite.get():
|
||||||
gui_args['sprite'] = 'random'
|
gui_args['sprite'] = 'random'
|
||||||
elif gui_args['sprite']:
|
elif gui_args['sprite']:
|
||||||
gui_args['sprite'] = gui_args['sprite'].name
|
gui_args['sprite'] = gui_args['sprite'].name
|
||||||
save_settings(gui_args)
|
save_settings(gui_args)
|
||||||
|
if confirm:
|
||||||
messagebox.showinfo("Door Shuffle " + ESVersion, "Settings saved from GUI.")
|
messagebox.showinfo("Door Shuffle " + ESVersion, "Settings saved from GUI.")
|
||||||
|
|
||||||
# routine for exiting the app
|
# routine for exiting the app
|
||||||
def guiExit():
|
def guiExit():
|
||||||
dosave = messagebox.askyesno("Door Shuffle " + ESVersion, "Save settings before exit?")
|
skip_exit = False
|
||||||
|
if self.settings['saveonexit'] == 'ask':
|
||||||
|
dosave = messagebox.askyesnocancel("Door Shuffle " + ESVersion, "Save settings before exit?")
|
||||||
if dosave:
|
if dosave:
|
||||||
save_settings_from_gui()
|
save_settings_from_gui(True)
|
||||||
|
if dosave is None:
|
||||||
|
skip_exit = True
|
||||||
|
elif self.settings['saveonexit'] == 'always':
|
||||||
|
save_settings_from_gui(False)
|
||||||
|
if not skip_exit:
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# make main window
|
# make main window
|
||||||
@@ -137,7 +144,7 @@ def guiMain(args=None):
|
|||||||
# bottom of window: Open Output Directory, Open Documentation (if exists)
|
# bottom of window: Open Output Directory, Open Documentation (if exists)
|
||||||
self.frames["bottom"] = bottom_frame(self, self, None)
|
self.frames["bottom"] = bottom_frame(self, self, None)
|
||||||
## Save Settings Button
|
## Save Settings Button
|
||||||
savesettingsButton = Button(self.frames["bottom"], text='Save Settings to File', command=save_settings_from_gui)
|
savesettingsButton = Button(self.frames["bottom"], text='Save Settings to File', command=lambda: save_settings_from_gui(True))
|
||||||
savesettingsButton.pack(side=RIGHT)
|
savesettingsButton.pack(side=RIGHT)
|
||||||
|
|
||||||
# set bottom frame to main window
|
# set bottom frame to main window
|
||||||
|
|||||||
@@ -102,7 +102,8 @@ SETTINGSTOPROCESS = {
|
|||||||
"spoiler": "create_spoiler",
|
"spoiler": "create_spoiler",
|
||||||
"suppressrom": "suppress_rom",
|
"suppressrom": "suppress_rom",
|
||||||
"usestartinventory": "usestartinventory",
|
"usestartinventory": "usestartinventory",
|
||||||
"usecustompool": "custom"
|
"usecustompool": "custom",
|
||||||
|
"saveonexit": "saveonexit"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from classes.SpriteSelector import SpriteSelector as spriteSelector
|
from classes.SpriteSelector import SpriteSelector as spriteSelector
|
||||||
from gui.randomize.gameoptions import set_sprite
|
from gui.randomize.gameoptions import set_sprite
|
||||||
from Rom import Sprite
|
from Rom import Sprite, get_sprite_from_name
|
||||||
import classes.constants as CONST
|
import classes.constants as CONST
|
||||||
|
|
||||||
def loadcliargs(gui, args, settings=None):
|
def loadcliargs(gui, args, settings=None):
|
||||||
@@ -39,18 +39,16 @@ def loadcliargs(gui, args, settings=None):
|
|||||||
def sprite_setter(spriteObject):
|
def sprite_setter(spriteObject):
|
||||||
gui.pages["randomizer"].pages["gameoptions"].widgets["sprite"]["spriteObject"] = spriteObject
|
gui.pages["randomizer"].pages["gameoptions"].widgets["sprite"]["spriteObject"] = spriteObject
|
||||||
if args["sprite"] is not None:
|
if args["sprite"] is not None:
|
||||||
sprite_obj = args.sprite if isinstance(args["sprite"], Sprite) else Sprite(args["sprite"])
|
sprite_obj = args.sprite if isinstance(args["sprite"], Sprite) else get_sprite_from_name(args["sprite"])
|
||||||
r_sprite_flag = args.randomSprite if hasattr(args, 'randomSprite') else False
|
set_sprite(sprite_obj, False, spriteSetter=sprite_setter,
|
||||||
set_sprite(sprite_obj, r_sprite_flag, spriteSetter=sprite_setter,
|
|
||||||
spriteNameVar=gui.pages["randomizer"].pages["gameoptions"].widgets["sprite"]["spriteNameVar"],
|
spriteNameVar=gui.pages["randomizer"].pages["gameoptions"].widgets["sprite"]["spriteNameVar"],
|
||||||
randomSpriteVar=gui.randomSprite)
|
randomSpriteVar=gui.randomSprite)
|
||||||
|
|
||||||
def sprite_setter_adj(spriteObject):
|
def sprite_setter_adj(spriteObject):
|
||||||
gui.pages["adjust"].content.sprite = spriteObject
|
gui.pages["adjust"].content.sprite = spriteObject
|
||||||
if args["sprite"] is not None:
|
if args["sprite"] is not None:
|
||||||
sprite_obj = args.sprite if isinstance(args.sprite, Sprite) else Sprite(args.sprite)
|
sprite_obj = args.sprite if isinstance(args["sprite"], Sprite) else get_sprite_from_name(args["sprite"])
|
||||||
r_sprite_flag = args["randomSprite"] if hasattr(args, 'randomSprite') else False
|
set_sprite(sprite_obj, False, spriteSetter=sprite_setter_adj,
|
||||||
set_sprite(sprite_obj, r_sprite_flag, spriteSetter=sprite_setter_adj,
|
|
||||||
spriteNameVar=gui.pages["adjust"].content.spriteNameVar2,
|
spriteNameVar=gui.pages["adjust"].content.spriteNameVar2,
|
||||||
randomSpriteVar=gui.randomSprite)
|
randomSpriteVar=gui.randomSprite)
|
||||||
|
|
||||||
|
|||||||
@@ -22,5 +22,24 @@
|
|||||||
"label": {
|
"label": {
|
||||||
"text": "Use custom item pool"
|
"text": "Use custom item pool"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"saveonexit": {
|
||||||
|
"type": "selectbox",
|
||||||
|
"label": {
|
||||||
|
"text": "Save Settings on Exit"
|
||||||
|
},
|
||||||
|
"managerAttrs": {
|
||||||
|
"label": {
|
||||||
|
"side": "left"
|
||||||
|
},
|
||||||
|
"selectbox": {
|
||||||
|
"side": "right"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"Ask Me": "ask",
|
||||||
|
"Always": "always",
|
||||||
|
"Never": "never"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user