diff options
| author | Malkierian <malkierian@gmail.com> | 2025-05-23 14:57:49 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-23 14:57:49 -0700 |
| commit | 99c3fa600672c656dc39d2eb5efaff1b7ff8041c (patch) | |
| tree | ea3851f56e3ffe042ccd90fcfd7000e2f5b9ae12 /soh/assets | |
| parent | 3a069e621eed36a3c9fd801e87567f4fb13b1c31 (diff) | |
Preset Manager (#5459)
* Add presets sidebar, proof of concept row-based listing.
* Complete and unify section check/x drawing.
* Add error state to InputString, and corresponding members and builders to InputOptions.
Implement saving and loading of preset files.
* Implement `Config::SetBlock()`.
Implement Apply.
Implement Delete.
Some json structure changes.
* Apply `CVarClear()` calls in CVar-prefixed widget functions.
* Comment out satellite preset pickers for now.
* clang
* Fix ButtonOptions initializer list.
* I hate clang...
* Loop new preset checkbox creation.
Restore auto-resizing to new preset popup.
Remove errant BeginDisabled in randomizer (merge artifact?).
* Add BlockInfo struct to make array with all info for each block.
Setup loops for all other same-ish situations (applying presets, setting up columns, etc) based on blockInfo.
* Save tracker windows info for later restoration.
Lay the groundwork for said restoration.
* Complete tracker window restoration on preset application.
* Fix RadioButtonsOptions builder parameter type.
Add race lockout to new and apply buttons.
* Revert application of CVarClear on UIWidgets widgets (need to preserve manually-set default states).
* Remove enhancements satellite picker.
Swap randomizer satellite picker to use the manager presets, only displays presets with randomizer section included.
Move built-in presets to the asset archive, and remove delete button on them.
Remove PresetEntries.cpp.
* Fix locations and tricks tabs not updating live when applying preset with new system.
* Apply RandoGenerating lockout to rando preset Apply button.
* Fix new presets not being properly filtered in satellite selectors.
* Fix currently selected presets getting deleted still being selected in satellite selectors.
* Change BigPoeTargetCount in preset files to 1.
Diffstat (limited to 'soh/assets')
| -rw-r--r-- | soh/assets/custom/presets/Main Default.json | 11 | ||||
| -rw-r--r-- | soh/assets/custom/presets/Main Enhanced.json | 56 | ||||
| -rw-r--r-- | soh/assets/custom/presets/Main Randomizer.json | 135 | ||||
| -rw-r--r-- | soh/assets/custom/presets/Main Vanilla+.json | 56 | ||||
| -rw-r--r-- | soh/assets/custom/presets/Rando Advanced.json | 69 | ||||
| -rw-r--r-- | soh/assets/custom/presets/Rando Beginner.json | 51 | ||||
| -rw-r--r-- | soh/assets/custom/presets/Rando Default.json | 9 | ||||
| -rw-r--r-- | soh/assets/custom/presets/Rando Hell Mode.json | 80 | ||||
| -rw-r--r-- | soh/assets/custom/presets/Rando Standard.json | 63 |
9 files changed, 530 insertions, 0 deletions
diff --git a/soh/assets/custom/presets/Main Default.json b/soh/assets/custom/presets/Main Default.json new file mode 100644 index 000000000..7d87c3d95 --- /dev/null +++ b/soh/assets/custom/presets/Main Default.json @@ -0,0 +1,11 @@ +{ + "blocks": { + "enhancements": { + "gCheats": null, + "gEnhancements": null, + "gRandoEnhancements": null + } + }, + "presetName": "Main Default", + "isBuiltIn": true +}
\ No newline at end of file diff --git a/soh/assets/custom/presets/Main Enhanced.json b/soh/assets/custom/presets/Main Enhanced.json new file mode 100644 index 000000000..026a78de7 --- /dev/null +++ b/soh/assets/custom/presets/Main Enhanced.json @@ -0,0 +1,56 @@ +{ + "blocks": { + "enhancements": { + "gCheats": null, + "gEnhancements": { + "AssignableTunicsAndBoots": 1, + "Autosave": 1, + "BetterOwl": 1, + "CreditsFix": 1, + "CustomizeFrogsOcarinaGame": 1, + "DekuNutUpgradeFix": 1, + "DisableLOD": 1, + "DpadEquips": 1, + "DpadNoDropOcarinaInput": 1, + "DynamicWalletIcon": 1, + "EnemySpawnsOverWaterboxes": 1, + "FasterRupeeAccumulator": 1, + "FixBrokenGiantsKnife": 1, + "FixDaruniaDanceSpeed": 1, + "FixDungeonMinimapIcon": 1, + "FixEyesOpenWhileSleeping": 1, + "FixFloorSwitches": 1, + "FixHammerHand": 1, + "FixMenuLR": 1, + "FixSawSoftlock": 1, + "FixTexturesOOB": 1, + "FixVineFall": 1, + "FixZoraHintDialogue": 1, + "FrogsModifyFailTime": 2, + "GerudoWarriorClothingFix": 1, + "GravediggingTourFix": 1, + "InjectItemCounts": { + "GoldSkulltula": 1, + "HeartContainer": 1, + "HeartPiece": 1 + }, + "NaviTextFix": 1, + "PulsateBossIcon": 1, + "RedGanonBlood": 1, + "RememberMapToggleState": 1, + "SceneSpecificDirtPathFix": 1, + "SilverRupeeJingleExtend": 1, + "SkipSaveConfirmation": 1, + "SkipText": 1, + "TextSpeed": 5, + "TimeFlowFileSelect": 1, + "TwoHandedIdle": 1, + "VisualAgony": 1, + "WidescreenActorCulling": 1 + }, + "gRandoEnhancements": null + } + }, + "presetName": "Main Enhanced", + "isBuiltIn": true +}
\ No newline at end of file diff --git a/soh/assets/custom/presets/Main Randomizer.json b/soh/assets/custom/presets/Main Randomizer.json new file mode 100644 index 000000000..59c24e982 --- /dev/null +++ b/soh/assets/custom/presets/Main Randomizer.json @@ -0,0 +1,135 @@ +{ + "blocks": { + "enhancements": { + "gCheats": { + "EasyFrameAdvance": 1 + }, + "gEnhancements": { + "AdultMasks": 1, + "AssignableTunicsAndBoots": 1, + "Autosave": 1, + "BetterAmmoRendering": 1, + "BetterBombchuShopping": 1, + "BetterFarore": 1, + "BetterOwl": 1, + "BombchusOOB": 1, + "ClimbSpeed": 3, + "CrawlSpeed": 2, + "CreditsFix": 1, + "CustomizeFishing": 1, + "CustomizeFrogsOcarinaGame": 1, + "CustomizeOcarinaGame": 1, + "DampeAllNight": 1, + "DampeWin": 1, + "DayGravePull": 1, + "DekuNutUpgradeFix": 1, + "DisableCritWiggle": 1, + "DisableFirstPersonChus": 1, + "DisableLOD": 1, + "DpadEquips": 1, + "DpadNoDropOcarinaInput": 1, + "DynamicWalletIcon": 1, + "EarlyEyeballFrog": 1, + "EnemySpawnsOverWaterboxes": 1, + "EquipmentCanBeRemoved": 1, + "ExtendedCullingExcludeGlitchActors": 1, + "FastBoomerang": 1, + "FastChests": 1, + "FastDrops": 1, + "FastFarores": 1, + "FastOcarinaPlayback": 1, + "FasterBlockPush": 5, + "FasterHeavyBlockLift": 1, + "FasterRupeeAccumulator": 1, + "FileSelectMoreInfo": 1, + "FishNeverEscape": 1, + "FixBrokenGiantsKnife": 1, + "FixDaruniaDanceSpeed": 1, + "FixDungeonMinimapIcon": 1, + "FixFloorSwitches": 1, + "FixHammerHand": 1, + "FixMenuLR": 1, + "FixSawSoftlock": 1, + "FixTexturesOOB": 1, + "FixVineFall": 1, + "FixZoraHintDialogue": 1, + "ForgeTime": 0, + "FrogsModifyFailTime": 2, + "GerudoWarriorClothingFix": 1, + "GoronPot": 1, + "GravediggingTourFix": 1, + "GuaranteeFishingBite": 1, + "HoverFishing": 1, + "IncludeHeldInputsBufferWindow": 1, + "InjectItemCounts": { + "GoldSkulltula": 1, + "HeartContainer": 1, + "HeartPiece": 1 + }, + "InstantPutaway": 1, + "InstantScarecrow": 1, + "MMBunnyHood": 1, + "MarketSneak": 1, + "MaskSelect": 1, + "MinimumFishWeightAdult": 6, + "MinimumFishWeightChild": 3, + "MweepSpeed": 5.0, + "N64WeirdFrames": 1, + "NaviTextFix": 1, + "NewDrops": 1, + "NoInputForCredits": 1, + "NutsExplodeBombs": 1, + "OcarinaGame": { + "StartingNotes": 5 + }, + "PauseMenuAnimatedLink": 1, + "PauseWarp": 1, + "PersistentMasks": 1, + "PulsateBossIcon": 1, + "QuickBongoKill": 1, + "QuickPutaway": 1, + "QuitFishingAtDoor": 1, + "RedGanonBlood": 1, + "RememberMapToggleState": 1, + "SceneSpecificDirtPathFix": 1, + "SeparateArrows": 1, + "ShowDoorLocksOnBothSides": 1, + "SilverRupeeJingleExtend": 1, + "SkipArrowAnimation": 1, + "SkipSaveConfirmation": 1, + "SkipSwimDeepEndAnim": 1, + "SkipText": 1, + "SlowTextSpeed": 5, + "SwordToggle": 1, + "TextSpeed": 5, + "TimeFlowFileSelect": 1, + "TimeSavers": { + "DisableTitleCard": 1, + "SkipChildStealth": 1, + "SkipCutscene": { + "BossIntro": 1, + "Entrances": 1, + "Intro": 1, + "LearnSong": 1, + "OnePoint": 1, + "QuickBossDeaths": 1, + "Story": 1 + }, + "SkipForcedDialog": 3, + "SkipMiscInteractions": 1, + "SkipOwlInteractions": 1, + "SkipTowerEscape": 1, + "SleepingWaterfall": 1 + }, + "ToTMedallionsColors": 1, + "ToggleStrength": 1, + "TwoHandedIdle": 1, + "VisualAgony": 1, + "WidescreenActorCulling": 1 + }, + "gRandoEnhancements": null + } + }, + "presetName": "Main Randomizer", + "isBuiltIn": true +}
\ No newline at end of file diff --git a/soh/assets/custom/presets/Main Vanilla+.json b/soh/assets/custom/presets/Main Vanilla+.json new file mode 100644 index 000000000..0f6c1741a --- /dev/null +++ b/soh/assets/custom/presets/Main Vanilla+.json @@ -0,0 +1,56 @@ +{ + "blocks": { + "enhancements": { + "gCheats": null, + "gEnhancements": { + "AssignableTunicsAndBoots": 1, + "Autosave": 1, + "BetterOwl": 1, + "CreditsFix": 1, + "CustomizeFrogsOcarinaGame": 1, + "DekuNutUpgradeFix": 1, + "DisableLOD": 1, + "DpadEquips": 1, + "DpadNoDropOcarinaInput": 1, + "DynamicWalletIcon": 1, + "EnemySpawnsOverWaterboxes": 1, + "FasterRupeeAccumulator": 1, + "FixBrokenGiantsKnife": 1, + "FixDaruniaDanceSpeed": 1, + "FixDungeonMinimapIcon": 1, + "FixEyesOpenWhileSleeping": 1, + "FixFloorSwitches": 1, + "FixHammerHand": 1, + "FixMenuLR": 1, + "FixSawSoftlock": 1, + "FixTexturesOOB": 1, + "FixVineFall": 1, + "FixZoraHintDialogue": 1, + "FrogsModifyFailTime": 2, + "GerudoWarriorClothingFix": 1, + "GravediggingTourFix": 1, + "InjectItemCounts": { + "GoldSkulltula": 1, + "HeartContainer": 1, + "HeartPiece": 1 + }, + "NaviTextFix": 1, + "PulsateBossIcon": 1, + "RedGanonBlood": 1, + "RememberMapToggleState": 1, + "SceneSpecificDirtPathFix": 1, + "SilverRupeeJingleExtend": 1, + "SkipSaveConfirmation": 1, + "SkipText": 1, + "TextSpeed": 5, + "TimeFlowFileSelect": 1, + "TwoHandedIdle": 1, + "VisualAgony": 1, + "WidescreenActorCulling": 1 + }, + "gRandoEnhancements": null + } + }, + "presetName": "Main Vanilla+", + "isBuiltIn": true +}
\ No newline at end of file diff --git a/soh/assets/custom/presets/Rando Advanced.json b/soh/assets/custom/presets/Rando Advanced.json new file mode 100644 index 000000000..4042c0688 --- /dev/null +++ b/soh/assets/custom/presets/Rando Advanced.json @@ -0,0 +1,69 @@ +{ + "blocks": { + "rando": { + "gRandoSettings": { + "40GSHint": 1, + "50GSHint": 1, + "BigPoeTargetCount": 1, + "BlueFireArrows": 1, + "BombchuBag": 1, + "BossKeysanity": 5, + "ClosedForest": 2, + "CompleteMaskQuest": 1, + "CuccosToReturn": 1, + "DampeHint": 1, + "DoorOfTime": 2, + "EnableBombchuDrops": 1, + "FortressCarpenters": 1, + "FrogsHint": 1, + "FullWallets": 1, + "GanonTrial": 0, + "GerudoKeys": 3, + "GregHint": 1, + "HBAHint": 1, + "IncludeTycoonWallet": 1, + "KakarikoGate": 1, + "Keysanity": 5, + "LacsRewardCount": 8, + "MalonHint": 1, + "MerchantText": 1, + "RainbowBridge": 7, + "SariaHint": 1, + "ScrubsFixedPrice": 2, + "ScrubsPrices": 3, + "SheikLAHint": 0, + "Shopsanity": 1, + "ShopsanityCount": 7, + "ShopsanityPrices": 2, + "ShuffleAdultTrade": 1, + "ShuffleBossEntrances": 2, + "ShuffleCows": 1, + "ShuffleDekuNutBag": 1, + "ShuffleDekuStickBag": 1, + "ShuffleDungeonsEntrances": 2, + "ShuffleFrogSongRupees": 1, + "ShuffleGanonBossKey": 9, + "ShuffleGerudoToken": 1, + "ShuffleKeyRings": 2, + "ShuffleKeyRingsRandomCount": 4, + "ShuffleKokiriSword": 1, + "ShuffleMasterSword": 1, + "ShuffleMerchants": 3, + "ShuffleOcarinas": 1, + "ShuffleOverworldSpawns": 1, + "ShuffleScrubs": 2, + "ShuffleSongs": 2, + "ShuffleSwim": 1, + "ShuffleTokens": 3, + "SkipChildZelda": 1, + "SkipEponaRace": 1, + "SkipScarecrowsSong": 1, + "StartingAge": 2, + "StartingMapsCompasses": 0, + "SunlightArrows": 1 + } + } + }, + "presetName": "Rando Advanced", + "isBuiltIn": true +}
\ No newline at end of file diff --git a/soh/assets/custom/presets/Rando Beginner.json b/soh/assets/custom/presets/Rando Beginner.json new file mode 100644 index 000000000..595734fe0 --- /dev/null +++ b/soh/assets/custom/presets/Rando Beginner.json @@ -0,0 +1,51 @@ +{ + "blocks": { + "rando": { + "gRandoSettings": { + "10GSHint": 1, + "20GSHint": 1, + "30GSHint": 1, + "40GSHint": 1, + "50GSHint": 1, + "BigPoeTargetCount": 1, + "BiggoronHint": 1, + "BlueFireArrows": 1, + "BossKeysanity": 2, + "ClosedForest": 2, + "CompleteMaskQuest": 1, + "CuccosToReturn": 1, + "DampeHint": 1, + "DoorOfTime": 2, + "EnableBombchuDrops": 1, + "ExcludedLocations": "147,148,233,323,", + "FortressCarpenters": 1, + "FrogsHint": 1, + "FullWallets": 1, + "GanonTrial": 0, + "GregHint": 1, + "HBAHint": 1, + "IncludeTycoonWallet": 1, + "KakarikoGate": 1, + "Keysanity": 2, + "LacsRewardCount": 6, + "MalonHint": 1, + "MerchantText": 1, + "RainbowBridge": 7, + "SariaHint": 1, + "SheikLAHint": 0, + "ShuffleGanonBossKey": 9, + "ShuffleOcarinas": 1, + "SkipChildZelda": 1, + "SkipEponaRace": 1, + "SkipScarecrowsSong": 1, + "StartingKokiriSword": 1, + "StartingMapsCompasses": 0, + "StartingOcarina": 1, + "SunlightArrows": 1, + "ZorasFountain": 1 + } + } + }, + "presetName": "Rando Beginner", + "isBuiltIn": true +}
\ No newline at end of file diff --git a/soh/assets/custom/presets/Rando Default.json b/soh/assets/custom/presets/Rando Default.json new file mode 100644 index 000000000..f5c5818e9 --- /dev/null +++ b/soh/assets/custom/presets/Rando Default.json @@ -0,0 +1,9 @@ +{ + "blocks": { + "rando": { + "gRandoSettings": null + } + }, + "presetName": "Rando Default", + "isBuiltIn": true +}
\ No newline at end of file diff --git a/soh/assets/custom/presets/Rando Hell Mode.json b/soh/assets/custom/presets/Rando Hell Mode.json new file mode 100644 index 000000000..d42727127 --- /dev/null +++ b/soh/assets/custom/presets/Rando Hell Mode.json @@ -0,0 +1,80 @@ +{ + "blocks": { + "rando": { + "gRandoSettings": { + "BigPoeTargetCount": 1, + "BlueFireArrows": 1, + "BombchuBag": 1, + "BossKeysanity": 5, + "ClosedForest": 2, + "CuccosToReturn": 1, + "DecoupleEntrances": 1, + "DoorOfTime": 2, + "EnableBombchuDrops": 1, + "Fishsanity": 4, + "FishsanityAgeSplit": 1, + "FishsanityPondCount": 17, + "GerudoKeys": 3, + "IncludeTycoonWallet": 1, + "KakarikoGate": 1, + "Keysanity": 5, + "LacsRewardCount": 10, + "LacsRewardOptions": 1, + "LockOverworldDoors": 1, + "MixBosses": 1, + "MixDungeons": 1, + "MixGrottos": 1, + "MixInteriors": 1, + "MixOverworld": 1, + "MixedEntrances": 1, + "RainbowBridge": 7, + "ScrubsPrices": 2, + "Shopsanity": 1, + "ShopsanityCount": 7, + "ShopsanityPrices": 2, + "Shuffle100GSReward": 1, + "ShuffleAdultTrade": 1, + "ShuffleBeehives": 1, + "ShuffleBossEntrances": 2, + "ShuffleBossSouls": 2, + "ShuffleChildWallet": 1, + "ShuffleCows": 1, + "ShuffleCrates": 3, + "ShuffleDekuNutBag": 1, + "ShuffleDekuStickBag": 1, + "ShuffleDungeonsEntrances": 2, + "ShuffleFairies": 1, + "ShuffleFishingPole": 1, + "ShuffleFreestanding": 3, + "ShuffleFrogSongRupees": 1, + "ShuffleGanonBossKey": 9, + "ShuffleGerudoToken": 1, + "ShuffleGrass": 3, + "ShuffleGrottosEntrances": 1, + "ShuffleInteriorsEntrances": 2, + "ShuffleKokiriSword": 1, + "ShuffleMasterSword": 1, + "ShuffleMerchants": 3, + "ShuffleOcarinaButtons": 1, + "ShuffleOcarinas": 1, + "ShuffleOverworldEntrances": 1, + "ShuffleOverworldSpawns": 1, + "ShuffleOwlDrops": 1, + "ShufflePots": 3, + "ShuffleScrubs": 2, + "ShuffleSongs": 2, + "ShuffleSwim": 1, + "ShuffleTokens": 3, + "ShuffleWarpSongs": 1, + "ShuffleWeirdEgg": 1, + "SkipEponaRace": 1, + "StartingAge": 2, + "StartingHearts": 0, + "StartingMapsCompasses": 5, + "SunlightArrows": 1 + } + } + }, + "presetName": "Rando Hell Mode", + "isBuiltIn": true +}
\ No newline at end of file diff --git a/soh/assets/custom/presets/Rando Standard.json b/soh/assets/custom/presets/Rando Standard.json new file mode 100644 index 000000000..ad91912de --- /dev/null +++ b/soh/assets/custom/presets/Rando Standard.json @@ -0,0 +1,63 @@ +{ + "blocks": { + "rando": { + "gRandoSettings": { + "10GSHint": 1, + "20GSHint": 1, + "30GSHint": 1, + "40GSHint": 1, + "50GSHint": 1, + "BigPoeTargetCount": 1, + "BiggoronHint": 1, + "BlueFireArrows": 1, + "BombchuBag": 1, + "BossKeysanity": 2, + "ClosedForest": 2, + "CompleteMaskQuest": 1, + "CuccosToReturn": 1, + "DampeHint": 1, + "DoorOfTime": 2, + "EnableBombchuDrops": 1, + "FortressCarpenters": 1, + "FrogsHint": 1, + "FullWallets": 1, + "GanonTrial": 0, + "GregHint": 1, + "HBAHint": 1, + "IncludeTycoonWallet": 1, + "KakarikoGate": 1, + "Keysanity": 5, + "LacsRewardCount": 7, + "MalonHint": 1, + "MerchantText": 1, + "RainbowBridge": 7, + "SariaHint": 1, + "ScrubsFixedPrice": 2, + "ScrubsPrices": 3, + "SheikLAHint": 0, + "Shopsanity": 1, + "ShopsanityCount": 4, + "ShopsanityPrices": 2, + "ShuffleGanonBossKey": 9, + "ShuffleGerudoToken": 1, + "ShuffleKeyRings": 2, + "ShuffleKeyRingsRandomCount": 8, + "ShuffleKokiriSword": 1, + "ShuffleMerchants": 1, + "ShuffleOcarinas": 1, + "ShuffleScrubs": 2, + "ShuffleSongs": 2, + "ShuffleTokens": 3, + "SkipChildZelda": 1, + "SkipEponaRace": 1, + "SkipScarecrowsSong": 1, + "StartingMapsCompasses": 0, + "StartingOcarina": 1, + "SunlightArrows": 1, + "ZorasFountain": 1 + } + } + }, + "presetName": "Rando Standard", + "isBuiltIn": true +}
\ No newline at end of file |
