* Add menu files, hook menu up to window system. Temporarily rename new menu's UIWidgets to UIWidgets2 to allow both menu systems to coexist temporarily. * Finish implementing new menu. Rename 2ship UIWidgets to UIWidgets2 to complete facilitation of both menus working for now. * More preliminary setup * More prepwork, begin on settings options * Finish settings, add enhancements windows * Fix search function not looking past first columns. * Add dev tool windows * Finish dev tools * Add about window * Fully replace about window * Remove moved menu items from menubar, add more windows to new menu * Implement WindowButtonOptions. Add ability to not embed popout windows when not popped out. Add ability to hide the button for WindowButtons. Fix Entrance Tracker from showing when not enabled. * Fix entrance tracker settings embedded display. Fix entrance tracker settings window original size declaration. * Initial implementation of themed radio button widget. * Move "About" section to second column of general. Fix sidebar sections starting in second column. * Restore Entrance Tracker `Draw()` to allow for custom styling. * Fix combobox positioning formatting. Fix color picker end spacing. Convert everything in check tracker settings to UIWidgets2 (except color pickers and section headers). Make all tracker windows not embed. * Minor cleanup * Fix main volume defaults & mirror jitter fix removal on dev * Improve color picker with RGB/RGBA options. Not finished. * Finish creating CVarColorPicker and implement for Check Tracker background color. Fix tracker and network prefixes. * Finish check tracker settings and convert check tracker. * Port all Cheats menu except for Beta Quest * Port over Beta Quest to new menu * Remove old cheats menu * Port cutscene skips to modern menu * Port Timesaver Enhancements to new menu * Port the Items and Item Count Messages submenu * Port Difficulty Options to new Menu * Removes options that have been ported thus far. * Port "Reduced Clutter" options to new menu * Add forgotten callbacks to Hyper Enemies/Bosses * Copy StateButton to UIWidgets2, and implement custom padding for them in the tracker. * Ports some pause menu related settinga * Change tracker window active title color. Make state buttons smaller in tracker to get more info on screen. * Convert window title active theming to all windows. * Port the rest of Enhancements->Gameplay to new menu * Port the "Graphics" Enhancements to new menu * Ports Fixes over to the Modern Menu * Ported Restorations to Modern Menu * Ported Extra Modes to new menu * Port Autosave and Boot Sequence to modern menu * Cleans up some leftover data for ported buttons * Ports Enhancement Presets to new menu * Port Additional timers to new menu. Removes Enhancements from old menu * Cleans up some unused stuff * Ports Randomizer Enhancements to modern menu * Convert Item Tracker Settings. Something's wrong with the comboboxes in a second column of a table. * Fix combobox alignment and label position calculations. * Convert Entrance Tracker window. * Save Editor Info tab finished. Added `PushStyleInput` and `PushStyleTabs` for Info tab. Fixed some indentation in entrance tracker source. Added font push to tracker windows. * Increase size of all icons in save editor. * Convert flag groups to child windows for automatic sizing and border drawing. * Flags tab completed. Finished inventory tab. * Convert save editor help hover to UIWidgets2. * Various fixes and corrections * Start cosmetics editor, fix theme colors not updating * Cosmetics editor conversion progress * Remove Mac internal resolution restrictions. * Copy over advanced resolution partial and enable most options as a custom widget. * Add size to float sliders, more cosmetics editor progress * Fix incorrect cvar for notifications * Radio button & header color options, more cosmetics editor progress * Finish cosmetics editor conversion * Create and apply THEME_COLOR macro. Resides in SohGui for easy access to mSohMenu. * Move ResolutionEditor to SohGui directory. * Add labels to build info. Fix slider width calculations. * Fix some advanced resolution widget hiding. * Fully implement Advanced Resolution options. Fix graphics settings formatting. Improve slider label position calculations. Implement Clamp options on sliders. * Finish save editor. Convert save editor code to `using namespace UIWidgets2`. Fix search crashing on time splits window. Remove `SetLastItemHoverText` from `UIWidgets2`. * Unify cvar sectioning in time splits. * Add InputString and InputInt widgets, and corresponding CVar Widgets * Adds Widget Type for Inputs, not currently used. * Convert Sail to modern menu * Add Combobox that takes a vector of std::strings * Convert checkbox and combobx to new widgets * Add Tristate checkbox * Convert sliders and tristate checkboxes * Convert top half of Rando window * remove/replace remainder of UIWidgets usage in option.cpp * Converts tricks, locations, and removes old UIWidgets refs * Fix windows build errors * Remove Tri-State checkboxes * Use PushStyleInput instead of PushStyleSlider lol oops didn't realize it was a thing in Ship. * Rebase and address review comments * Convert Crowd Control to modern menu. * Fix build error * Audio editor progress * Re-add CVar SaveOnNextFrame calls to Resolution Editor. Remove old Resolution Editor files. * Convert TimeSplits to new menu. Fix a few enum warnings. * Decrease padding on Arrow Buttons * Audio editor + gameplay stats done * Give Randomizer Menu more screen real-estate * Port plandomizer menu * Fix slider width calculation and allow combobox LabelPosition::None * Fix None labelPos and slider width for inline labels * Fix all slider value label insertions. Convert Collision Viewer. * Minor Collision Viewer enum change. Convert Actor Viewer. * Theme/convert Message Viewer. * Add font to Message Viewer. Theme Value Viewer. * DL Viewer and SohModals themed. * Convert Input Viewer. * Missed some color settings in Input Viewer. Removed UIWidgets references from Controller Config, and restored SoH version. * Remove UIWidgets.hpp include from multiple files. * Completely remove old UIWidgets. Rename UIWidgets2 to UIWidgets. Move Accessibility and Language options to new menu. * Fix Gfx Debugger not showing up. Remove menubar registration. * Fix clearCvars references. * Fix passing std::string to const char* argument. * enum name spacing --------- Co-authored-by: aMannus <mannusmenting@gmail.com> Co-authored-by: Christopher Leggett <chris@leggett.dev>
134 lines
6.9 KiB
C++
134 lines
6.9 KiB
C++
#include "SohMenu.h"
|
|
#include <macros.h>
|
|
|
|
namespace SohGui {
|
|
|
|
extern std::shared_ptr<SohMenu> mSohMenu;
|
|
using namespace UIWidgets;
|
|
|
|
void SohMenu::AddMenuRandomizer() {
|
|
// Add Randomizer Menu
|
|
AddMenuEntry("Randomizer", CVAR_SETTING("Menu.RandomizerSidebarSection"));
|
|
|
|
// Seed Settings
|
|
WidgetPath path = { "Randomizer", "Seed Settings", SECTION_COLUMN_1 };
|
|
AddSidebarEntry("Randomizer", path.sidebarName, 1);
|
|
AddWidget(path, "Popout Randomizer Settings Window", WIDGET_WINDOW_BUTTON)
|
|
.CVar(CVAR_WINDOW("RandomizerSettings"))
|
|
.WindowName("Randomizer Settings")
|
|
.Options(WindowButtonOptions().Tooltip("Enables the separate Randomizer Settings Window."));
|
|
path.sidebarName = "Enhancements";
|
|
AddSidebarEntry("Randomizer", path.sidebarName, 1);
|
|
AddWidget(path, "Rando-Relevant Navi Hints", WIDGET_CVAR_CHECKBOX)
|
|
.CVar(CVAR_RANDOMIZER_ENHANCEMENT("RandoRelevantNavi"))
|
|
.Options(CheckboxOptions().Tooltip(
|
|
"Replace Navi's overworld quest hints with rando-related gameplay hints."
|
|
).DefaultValue(true));
|
|
AddWidget(path, "Random Rupee Names", WIDGET_CVAR_CHECKBOX)
|
|
.CVar(CVAR_RANDOMIZER_ENHANCEMENT("RandomizeRupeeNames"))
|
|
.Options(CheckboxOptions().Tooltip(
|
|
"When obtaining Rupees, randomize what the Rupee is called in the textbox."
|
|
).DefaultValue(true));
|
|
AddWidget(path, "Use Custom Key Models", WIDGET_CVAR_CHECKBOX)
|
|
.CVar(CVAR_RANDOMIZER_ENHANCEMENT("CustomKeyModels"))
|
|
.Options(CheckboxOptions().Tooltip(
|
|
"Use Custom graphics for Dungeon Keys, Big and Small, so that they can be easily told apart."
|
|
).DefaultValue(true));
|
|
AddWidget(path, "Compass Colors Match Dungeon", WIDGET_CVAR_CHECKBOX)
|
|
.CVar(CVAR_RANDOMIZER_ENHANCEMENT("MatchCompassColors"))
|
|
.PreFunc([](WidgetInfo& info) {
|
|
info.options->disabled = !(
|
|
OTRGlobals::Instance->gRandoContext->GetOption(RSK_SHUFFLE_MAPANDCOMPASS).IsNot(RO_DUNGEON_ITEM_LOC_STARTWITH) &&
|
|
OTRGlobals::Instance->gRandoContext->GetOption(RSK_SHUFFLE_MAPANDCOMPASS).IsNot(RO_DUNGEON_ITEM_LOC_VANILLA) &&
|
|
OTRGlobals::Instance->gRandoContext->GetOption(RSK_SHUFFLE_MAPANDCOMPASS).IsNot(RO_DUNGEON_ITEM_LOC_OWN_DUNGEON)
|
|
);
|
|
info.options->disabledTooltip = "This setting is disabled because a savefile is loaded without "
|
|
"the compass shuffle settings set to Any Dungeon, Overworld, or Anywhere.";
|
|
})
|
|
.Options(CheckboxOptions().Tooltip(
|
|
"Matches the color of compasses to the dungeon they belong to. "
|
|
"This helps identify compasses from afar and adds a little bit of flair.\n\nThis only "
|
|
"applies to seeds with compasses shuffled to \"Any Dungeon\", \"Overworld\", or \"Anywhere\"."
|
|
).DefaultValue(true));
|
|
AddWidget(path, "Quest Item Fanfares", WIDGET_CVAR_CHECKBOX)
|
|
.CVar(CVAR_RANDOMIZER_ENHANCEMENT("QuestItemFanfares"))
|
|
.Options(CheckboxOptions().Tooltip(
|
|
"Play unique fanfares when obtaining quest items (medallions/stones/songs). Note that these "
|
|
"fanfares can be longer than usual."
|
|
));
|
|
AddWidget(path, "Mysterious Shuffled Items", WIDGET_CVAR_CHECKBOX)
|
|
.CVar(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"))
|
|
.Options(CheckboxOptions().Tooltip(
|
|
"Displays a \"Mystery Item\" model in place of any freestanding/GS/shop items that were shuffled, "
|
|
"and replaces item names for them and scrubs and merchants, regardless of hint settings, "
|
|
"so you never know what you're getting."
|
|
));
|
|
AddWidget(path, "Simpler Boss Soul Models", WIDGET_CVAR_CHECKBOX)
|
|
.CVar(CVAR_RANDOMIZER_ENHANCEMENT("SimplerBossSoulModels"))
|
|
.Options(CheckboxOptions().Tooltip(
|
|
"When shuffling boss souls, they'll appear as a simpler model instead of showing the boss' models."
|
|
"This might make boss souls more distinguishable from a distance, and can help with performance."
|
|
));
|
|
AddWidget(path, "Skip Get Item Animations", WIDGET_CVAR_COMBOBOX)
|
|
.CVar(CVAR_RANDOMIZER_ENHANCEMENT("TimeSavers.SkipGetItemAnimation"))
|
|
.Options(ComboboxOptions().ComboMap(skipGetItemAnimationOptions).DefaultIndex(SGIA_JUNK));
|
|
|
|
// Plandomizer
|
|
path.sidebarName = "Plandomizer";
|
|
AddSidebarEntry("Randomizer", path.sidebarName, 1);
|
|
AddWidget(path, "Popout Plandomizer Window", WIDGET_WINDOW_BUTTON)
|
|
.CVar(CVAR_WINDOW("PlandomizerEditor"))
|
|
.WindowName("Plandomizer Editor")
|
|
.Options(WindowButtonOptions().Tooltip("Enables the separate Randomizer Settings Window."));
|
|
|
|
// Item Tracker
|
|
path.sidebarName = "Item Tracker";
|
|
AddSidebarEntry("Randomizer", path.sidebarName, 1);
|
|
|
|
AddWidget(path, "Item Tracker", WIDGET_SEPARATOR_TEXT);
|
|
AddWidget(path, "Toggle Item Tracker", WIDGET_WINDOW_BUTTON)
|
|
.CVar(CVAR_WINDOW("ItemTracker"))
|
|
.WindowName("Item Tracker")
|
|
.Options(WindowButtonOptions().Tooltip("Toggles the Item Tracker.").EmbedWindow(false));
|
|
|
|
AddWidget(path, "Item Tracker Settings", WIDGET_SEPARATOR_TEXT);
|
|
AddWidget(path, "Popout Item Tracker Settings", WIDGET_WINDOW_BUTTON)
|
|
.CVar(CVAR_WINDOW("ItemTrackerSettings"))
|
|
.WindowName("Item Tracker Settings")
|
|
.Options(WindowButtonOptions().Tooltip("Enables the separate Item Tracker Settings Window."));
|
|
|
|
// Entrance Tracker
|
|
path.sidebarName = "Entrance Tracker";
|
|
AddSidebarEntry("Randomizer", path.sidebarName, 1);
|
|
|
|
AddWidget(path, "Entrance Tracker", WIDGET_SEPARATOR_TEXT);
|
|
AddWidget(path, "Toggle Entrance Tracker", WIDGET_WINDOW_BUTTON)
|
|
.CVar(CVAR_WINDOW("EntranceTracker"))
|
|
.WindowName("Entrance Tracker")
|
|
.Options(WindowButtonOptions().Tooltip("Toggles the Entrance Tracker.").EmbedWindow(false));
|
|
|
|
AddWidget(path, "Entrance Tracker Settings", WIDGET_SEPARATOR_TEXT);
|
|
AddWidget(path, "Popout Entrance Tracker Settings", WIDGET_WINDOW_BUTTON)
|
|
.CVar(CVAR_WINDOW("EntranceTrackerSettings"))
|
|
.WindowName("Entrance Tracker Settings")
|
|
.Options(WindowButtonOptions().Tooltip("Enables the separate Entrance Tracker Settings Window."));
|
|
|
|
// Check Tracker
|
|
path.sidebarName = "Check Tracker";
|
|
AddSidebarEntry("Randomizer", path.sidebarName, 1);
|
|
|
|
AddWidget(path, "Check Tracker", WIDGET_SEPARATOR_TEXT);
|
|
AddWidget(path, "Toggle Check Tracker", WIDGET_WINDOW_BUTTON)
|
|
.CVar(CVAR_WINDOW("CheckTracker"))
|
|
.WindowName("Check Tracker")
|
|
.Options(WindowButtonOptions().Tooltip("Toggles the Check Tracker.").EmbedWindow(false));
|
|
|
|
AddWidget(path, "Check Tracker Settings", WIDGET_SEPARATOR_TEXT);
|
|
AddWidget(path, "Popout Check Tracker Settings", WIDGET_WINDOW_BUTTON)
|
|
.CVar(CVAR_WINDOW("CheckTrackerSettings"))
|
|
.WindowName("Check Tracker Settings")
|
|
.Options(WindowButtonOptions().Tooltip("Enables the separate Check Tracker Settings Window."));
|
|
}
|
|
|
|
} // namespace SohGui
|