2018-05-24 02:14:17 +00:00
|
|
|
auto Program::path(string type, string location, string extension) -> string {
|
|
|
|
auto pathname = Location::path(location);
|
|
|
|
auto filename = Location::file(location);
|
|
|
|
auto prefix = Location::prefix(filename);
|
Update to v106r37 release.
byuu says:
Changelog:
- bsnes: cheat code “enabled” option changed to “enable”
- bsnes: connected “Cancel” action on add/edit cheat code window
- hiro: improved BrowserDialog::selectFolder() behavior
- can choose “Select” inside of a target folder when no items are
selected
- bsnes: implemented state manager
- bsnes: save a recovery state before loading a state, quitting, or
changing drivers
- bsnes: input settings, hotkey settings, cheat editor, state manager
entries are now batchable
- this allows bulk clearing/deleting of entries
- bsnes: cheat code list now auto-sorts alphabetically instead of
using up/down move arrows
I know most people will probably prefer to order cheat codes the way
they want, but the issue is that the state manager can't really work
this way. Each state is a file on disk. So yes, we could store a
states-manifest.bml to track the order of the states, or try to insert
numbers into the filenames and do bulk filesystem rename operations on
sorting, but then we would run into oddities when users delete state
files manually. And really, manual sorting is just clumsy. If you really
want a specific ordering, you can prefix cheats/states with numeric
indices instead.
2018-06-07 11:48:41 +00:00
|
|
|
auto suffix = extension;
|
2018-05-24 02:14:17 +00:00
|
|
|
|
|
|
|
if(type == "Games") {
|
|
|
|
if(auto path = settings["Path/Games"].text()) {
|
|
|
|
pathname = path;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(type == "Patches") {
|
|
|
|
if(auto path = settings["Path/Patches"].text()) {
|
|
|
|
pathname = path;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(type == "Saves") {
|
|
|
|
if(auto path = settings["Path/Saves"].text()) {
|
|
|
|
pathname = path;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-06-11 04:50:18 +00:00
|
|
|
if(type == "Cheats") {
|
|
|
|
if(auto path = settings["Path/Cheats"].text()) {
|
2018-05-24 02:14:17 +00:00
|
|
|
pathname = path;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-06-11 04:50:18 +00:00
|
|
|
if(type == "States") {
|
|
|
|
if(auto path = settings["Path/States"].text()) {
|
2018-05-24 02:14:17 +00:00
|
|
|
pathname = path;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return {pathname, prefix, suffix};
|
|
|
|
}
|
2018-06-11 04:50:18 +00:00
|
|
|
|
|
|
|
auto Program::gamePath() -> string {
|
|
|
|
if(!emulator->loaded()) return "";
|
|
|
|
if(gameBoy.location) return gameBoy.location;
|
|
|
|
return superNintendo.location;
|
|
|
|
}
|
|
|
|
|
|
|
|
auto Program::cheatPath() -> string {
|
|
|
|
if(!emulator->loaded()) return "";
|
|
|
|
auto location = gamePath();
|
|
|
|
if(location.endsWith("/")) {
|
|
|
|
return {location, "cheats.bml"};
|
|
|
|
} else {
|
|
|
|
return path("Cheats", location, ".cht");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
auto Program::statePath() -> string {
|
|
|
|
if(!emulator->loaded()) return "";
|
|
|
|
auto location = gamePath();
|
|
|
|
if(location.endsWith("/")) {
|
|
|
|
return {location, "bsnes/states/"};
|
|
|
|
} else {
|
|
|
|
return path("States", location, ".bsz");
|
|
|
|
}
|
|
|
|
}
|