Search Exclusion and Search Widgets (#5656)
* Implement widget search exclusion. Exclude all external windows from the search. * Add second column to search results for non-widget results. * Implement extra search index. Add various controls, audio editor, and tracker options to the extra search index. Fix capitalization on a few options. Add click-to-view functionality to extra search column. * Add extraSearchWidgets for searching through non-menu widgets. Convert Controls extraSearches to widgets. Used to display in-window, as well as provide reference to extraSearchWidgets. * Swap Audio search to menu widget search system. * Fix missing static on a ShipInit instance. * Implement SearchWidgets in popout windows. Remove remaining vestiges of custom search. * Add SearchWidget for randomizing audio on seed gen. * Remove comments on color picker entries in WidgetType. * Put all search results in middle column for width management. Change combobox alignment and label position in search results to unify them all to left and above for better organization. Add "Search Results" text to header of results page for clarification. * clang
This commit is contained in:
@@ -1,20 +1,22 @@
|
||||
#include "randomizer_item_tracker.h"
|
||||
#include "soh/util.h"
|
||||
#include "soh/OTRGlobals.h"
|
||||
#include "soh/cvar_prefixes.h"
|
||||
#include "soh/SaveManager.h"
|
||||
#include "soh/ResourceManagerHelpers.h"
|
||||
#include "soh/SohGui/UIWidgets.hpp"
|
||||
#include "soh/SohGui/SohGui.hpp"
|
||||
#include "randomizerTypes.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <libultraship/libultraship.h>
|
||||
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
||||
|
||||
#include "randomizer_check_tracker.h"
|
||||
#include <algorithm>
|
||||
#include "randomizer_item_tracker.h"
|
||||
#include "randomizerTypes.h"
|
||||
#include "soh/cvar_prefixes.h"
|
||||
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
||||
#include "soh/OTRGlobals.h"
|
||||
#include "soh/ResourceManagerHelpers.h"
|
||||
#include "soh/SaveManager.h"
|
||||
#include "soh/SohGui/SohGui.hpp"
|
||||
#include "soh/SohGui/SohMenu.h"
|
||||
#include "soh/SohGui/UIWidgets.hpp"
|
||||
#include "soh/util.h"
|
||||
|
||||
extern "C" {
|
||||
#include <z64.h>
|
||||
@@ -42,6 +44,27 @@ bool shouldUpdateVectors = true;
|
||||
|
||||
std::vector<ItemTrackerItem> mainWindowItems = {};
|
||||
|
||||
static WidgetInfo backgroundColor;
|
||||
static WidgetInfo windowTypeWidget;
|
||||
static WidgetInfo enableDraggingWidget;
|
||||
static WidgetInfo onlyPausedWidget;
|
||||
static WidgetInfo ammoTracking;
|
||||
static WidgetInfo keyTracking;
|
||||
static WidgetInfo triforcePieceCount;
|
||||
static WidgetInfo dungeonItemTracking;
|
||||
static WidgetInfo gregTracking;
|
||||
static WidgetInfo triforcePieceTracking;
|
||||
static WidgetInfo bossSoulsTracking;
|
||||
static WidgetInfo ocarinaButtonTracking;
|
||||
static WidgetInfo overworldKeysTracking;
|
||||
static WidgetInfo fishingPoleTracking;
|
||||
static WidgetInfo personalNotesWiget;
|
||||
static WidgetInfo hookshotIdentWidget;
|
||||
|
||||
namespace SohGui {
|
||||
extern std::shared_ptr<SohMenu> mSohMenu;
|
||||
}
|
||||
|
||||
std::vector<ItemTrackerItem> inventoryItems = {
|
||||
ITEM_TRACKER_ITEM(ITEM_STICK, 0, DrawItem), ITEM_TRACKER_ITEM(ITEM_NUT, 0, DrawItem),
|
||||
ITEM_TRACKER_ITEM(ITEM_BOMB, 0, DrawItem), ITEM_TRACKER_ITEM(ITEM_BOW, 0, DrawItem),
|
||||
@@ -1764,24 +1787,15 @@ void ItemTrackerSettingsWindow::DrawElement() {
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x);
|
||||
CVarColorPicker("Background Color##gItemTrackerBgColor", CVAR_TRACKER_ITEM("BgColor"), { 0, 0, 0, 0 }, true,
|
||||
ColorPickerRandomButton | ColorPickerResetButton, THEME_COLOR);
|
||||
|
||||
SohGui::mSohMenu->MenuDrawItem(backgroundColor, 250, THEME_COLOR);
|
||||
ImGui::PopItemWidth();
|
||||
if (CVarCombobox("Window Type", CVAR_TRACKER_ITEM("WindowType"), windowTypes,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(TRACKER_WINDOW_FLOATING)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR))) {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
SohGui::mSohMenu->MenuDrawItem(windowTypeWidget, 250, THEME_COLOR);
|
||||
|
||||
if (CVarGetInteger(CVAR_TRACKER_ITEM("WindowType"), TRACKER_WINDOW_FLOATING) == TRACKER_WINDOW_FLOATING) {
|
||||
if (CVarCheckbox("Enable Dragging", CVAR_TRACKER_ITEM("Draggable"), CheckboxOptions().Color(THEME_COLOR))) {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
if (CVarCheckbox("Only enable while paused", CVAR_TRACKER_ITEM("ShowOnlyPaused"),
|
||||
if (CVarCheckbox("Only Enable While Paused", CVAR_TRACKER_ITEM("ShowOnlyPaused"),
|
||||
CheckboxOptions().Color(THEME_COLOR))) {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
@@ -1822,14 +1836,7 @@ void ItemTrackerSettingsWindow::DrawElement() {
|
||||
IntSliderOptions().Min(1).Max(30).DefaultValue(13).Color(THEME_COLOR));
|
||||
|
||||
ImGui::NewLine();
|
||||
CVarCombobox("Ammo/Capacity Tracking", CVAR_TRACKER_ITEM("ItemCountType"), itemTrackerCapacityTrackOptions,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(ITEM_TRACKER_NUMBER_CURRENT_CAPACITY_ONLY)
|
||||
.ComponentAlignment(ComponentAlignments::Left)
|
||||
.LabelPosition(LabelPositions::Above)
|
||||
.Color(THEME_COLOR)
|
||||
.Tooltip("Customize what the numbers under each item are tracking."
|
||||
"\n\nNote: items without capacity upgrades will track ammo even in capacity mode"));
|
||||
SohGui::mSohMenu->MenuDrawItem(ammoTracking, 250, THEME_COLOR);
|
||||
if (CVarGetInteger(CVAR_TRACKER_ITEM("ItemCountType"), ITEM_TRACKER_NUMBER_CURRENT_CAPACITY_ONLY) ==
|
||||
ITEM_TRACKER_NUMBER_CURRENT_CAPACITY_ONLY ||
|
||||
CVarGetInteger(CVAR_TRACKER_ITEM("ItemCountType"), ITEM_TRACKER_NUMBER_CURRENT_CAPACITY_ONLY) ==
|
||||
@@ -1840,22 +1847,8 @@ void ItemTrackerSettingsWindow::DrawElement() {
|
||||
}
|
||||
}
|
||||
|
||||
CVarCombobox("Key Count Tracking", CVAR_TRACKER_ITEM("KeyCounts"), itemTrackerKeyTrackOptions,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(KEYS_COLLECTED_MAX)
|
||||
.ComponentAlignment(ComponentAlignments::Left)
|
||||
.LabelPosition(LabelPositions::Above)
|
||||
.Color(THEME_COLOR)
|
||||
.Tooltip("Customize what numbers are shown for key tracking."));
|
||||
|
||||
CVarCombobox("Triforce Piece Count Tracking", CVAR_TRACKER_ITEM("TriforcePieceCounts"),
|
||||
itemTrackerTriforcePieceTrackOptions,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(TRIFORCE_PIECE_COLLECTED_REQUIRED_MAX)
|
||||
.ComponentAlignment(ComponentAlignments::Left)
|
||||
.LabelPosition(LabelPositions::Above)
|
||||
.Color(THEME_COLOR)
|
||||
.Tooltip("Customize what numbers are shown for triforce piece tracking."));
|
||||
SohGui::mSohMenu->MenuDrawItem(keyTracking, 250, THEME_COLOR);
|
||||
SohGui::mSohMenu->MenuDrawItem(triforcePieceCount, 250, THEME_COLOR);
|
||||
|
||||
ImGui::TableNextColumn();
|
||||
|
||||
@@ -1906,14 +1899,7 @@ void ItemTrackerSettingsWindow::DrawElement() {
|
||||
.Color(THEME_COLOR))) {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
if (CVarCombobox("Dungeon Items", CVAR_TRACKER_ITEM("DisplayType.DungeonItems"), displayTypes,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR))) {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
SohGui::mSohMenu->MenuDrawItem(dungeonItemTracking, 250, THEME_COLOR);
|
||||
if (CVarGetInteger(CVAR_TRACKER_ITEM("DisplayType.DungeonItems"), SECTION_DISPLAY_HIDDEN) !=
|
||||
SECTION_DISPLAY_HIDDEN) {
|
||||
if (CVarGetInteger(CVAR_TRACKER_ITEM("DisplayType.DungeonItems"), SECTION_DISPLAY_HIDDEN) ==
|
||||
@@ -1928,61 +1914,14 @@ void ItemTrackerSettingsWindow::DrawElement() {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
}
|
||||
if (CVarCombobox("Greg", CVAR_TRACKER_ITEM("DisplayType.Greg"), extendedDisplayTypes,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_EXTENDED_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR))) {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
SohGui::mSohMenu->MenuDrawItem(gregTracking, 250, THEME_COLOR);
|
||||
SohGui::mSohMenu->MenuDrawItem(triforcePieceTracking, 250, THEME_COLOR);
|
||||
SohGui::mSohMenu->MenuDrawItem(bossSoulsTracking, 250, THEME_COLOR);
|
||||
SohGui::mSohMenu->MenuDrawItem(ocarinaButtonTracking, 250, THEME_COLOR);
|
||||
SohGui::mSohMenu->MenuDrawItem(overworldKeysTracking, 250, THEME_COLOR);
|
||||
SohGui::mSohMenu->MenuDrawItem(fishingPoleTracking, 250, THEME_COLOR);
|
||||
|
||||
if (CVarCombobox("Triforce Pieces", CVAR_TRACKER_ITEM("DisplayType.TriforcePieces"), displayTypes,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR))) {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
|
||||
if (CVarCombobox("Boss Souls", CVAR_TRACKER_ITEM("DisplayType.BossSouls"), displayTypes,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR))) {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
|
||||
if (CVarCombobox("Ocarina Buttons", CVAR_TRACKER_ITEM("DisplayType.OcarinaButtons"), displayTypes,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR))) {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
|
||||
if (CVarCombobox("Overworld Keys", CVAR_TRACKER_ITEM("DisplayType.OverworldKeys"), displayTypes,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR))) {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
|
||||
if (CVarCombobox("Fishing Pole", CVAR_TRACKER_ITEM("DisplayType.FishingPole"), extendedDisplayTypes,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_EXTENDED_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR))) {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
|
||||
if (CVarCombobox("Total Checks", "gTrackers.ItemTracker.TotalChecks.DisplayType", minimalDisplayTypes,
|
||||
if (CVarCombobox("Total Checks", CVAR_TRACKER_ITEM("TotalChecks.DisplayType"), minimalDisplayTypes,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_MINIMAL_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
@@ -1991,23 +1930,8 @@ void ItemTrackerSettingsWindow::DrawElement() {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
|
||||
if (CVarGetInteger(CVAR_TRACKER_ITEM("WindowType"), TRACKER_WINDOW_FLOATING) == TRACKER_WINDOW_WINDOW ||
|
||||
(CVarGetInteger(CVAR_TRACKER_ITEM("WindowType"), TRACKER_WINDOW_FLOATING) == TRACKER_WINDOW_FLOATING &&
|
||||
CVarGetInteger(CVAR_TRACKER_ITEM("DisplayType.Main"), TRACKER_DISPLAY_ALWAYS) !=
|
||||
TRACKER_DISPLAY_COMBO_BUTTON)) {
|
||||
if (CVarCombobox("Personal notes", CVAR_TRACKER_ITEM("DisplayType.Notes"), displayTypes,
|
||||
ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR))) {
|
||||
shouldUpdateVectors = true;
|
||||
}
|
||||
}
|
||||
CVarCheckbox("Show Hookshot Identifiers", CVAR_TRACKER_ITEM("HookshotIdentifier"),
|
||||
CheckboxOptions()
|
||||
.Tooltip("Shows an 'H' or an 'L' to more easiely distinguish between Hookshot and Longshot.")
|
||||
.Color(THEME_COLOR));
|
||||
SohGui::mSohMenu->MenuDrawItem(personalNotesWiget, 250, THEME_COLOR);
|
||||
SohGui::mSohMenu->MenuDrawItem(hookshotIdentWidget, 250, THEME_COLOR);
|
||||
|
||||
ImGui::PopStyleVar(1);
|
||||
ImGui::EndTable();
|
||||
@@ -2026,3 +1950,178 @@ void ItemTrackerWindow::InitElement() {
|
||||
|
||||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnGameFrameUpdate>(ItemTrackerOnFrame);
|
||||
}
|
||||
|
||||
void RegisterItemTrackerWidgets() {
|
||||
backgroundColor = { .name = "Background Color##gItemTrackerBgColor", .type = WidgetType::WIDGET_CVAR_COLOR_PICKER };
|
||||
backgroundColor.CVar(CVAR_TRACKER_ITEM("BgColor"))
|
||||
.Options(
|
||||
ColorPickerOptions().Color(THEME_COLOR).DefaultValue({ 0, 0, 0, 0 }).UseAlpha().ShowReset().ShowRandom());
|
||||
SohGui::mSohMenu->AddSearchWidget({ backgroundColor, "Randomizer", "Item Tracker", "General Settings" });
|
||||
|
||||
windowTypeWidget = { .name = "Window Type", .type = WidgetType::WIDGET_CVAR_COMBOBOX };
|
||||
windowTypeWidget.CVar(CVAR_TRACKER_ITEM("WindowType"))
|
||||
.Options(ComboboxOptions()
|
||||
.DefaultIndex(TRACKER_WINDOW_FLOATING)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR)
|
||||
.ComboMap(windowTypes))
|
||||
.Callback([](WidgetInfo& info) { shouldUpdateVectors = true; });
|
||||
SohGui::mSohMenu->AddSearchWidget({ windowTypeWidget, "Randomizer", "Item Tracker", "General Settings" });
|
||||
enableDraggingWidget;
|
||||
onlyPausedWidget;
|
||||
|
||||
ammoTracking = { .name = "Ammo/Capacity Tracking", .type = WidgetType::WIDGET_CVAR_COMBOBOX };
|
||||
ammoTracking.CVar(CVAR_TRACKER_ITEM("ItemCountType"))
|
||||
.Options(ComboboxOptions()
|
||||
.DefaultIndex(ITEM_TRACKER_NUMBER_CURRENT_CAPACITY_ONLY)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR)
|
||||
.ComboMap(itemTrackerCapacityTrackOptions)
|
||||
.Tooltip("Customize what the numbers under each item are tracking."
|
||||
"\n\nNote: items without capacity upgrades will track ammo even in capacity mode"));
|
||||
SohGui::mSohMenu->AddSearchWidget({ ammoTracking, "Randomizer", "Item Tracker", "General Settings" });
|
||||
|
||||
keyTracking = { .name = "Key Count Tracking", .type = WidgetType::WIDGET_CVAR_COMBOBOX };
|
||||
keyTracking.CVar(CVAR_TRACKER_ITEM("KeyCounts"))
|
||||
.Options(ComboboxOptions()
|
||||
.DefaultIndex(KEYS_COLLECTED_MAX)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR)
|
||||
.ComboMap(itemTrackerKeyTrackOptions)
|
||||
.Tooltip("Customize what numbers are shown for key tracking."));
|
||||
SohGui::mSohMenu->AddSearchWidget({ keyTracking, "Randomizer", "Item Tracker", "General Settings" });
|
||||
|
||||
triforcePieceTracking = { .name = "Triforce Pieces", .type = WidgetType::WIDGET_CVAR_COMBOBOX };
|
||||
triforcePieceTracking.CVar(CVAR_TRACKER_ITEM("DisplayType.TriforcePieces"))
|
||||
.Options(ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR)
|
||||
.ComboMap(displayTypes))
|
||||
.Callback([](WidgetInfo& info) { shouldUpdateVectors = true; });
|
||||
SohGui::mSohMenu->AddSearchWidget({ triforcePieceTracking, "Randomizer", "Item Tracker", "General Settings" });
|
||||
|
||||
dungeonItemTracking = { .name = "Dungeon Items", .type = WidgetType::WIDGET_CVAR_COMBOBOX };
|
||||
dungeonItemTracking.CVar(CVAR_TRACKER_ITEM("DisplayType.DungeonItems"))
|
||||
.Options(ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR)
|
||||
.ComboMap(displayTypes))
|
||||
.Callback([](WidgetInfo& info) { shouldUpdateVectors = true; });
|
||||
;
|
||||
SohGui::mSohMenu->AddSearchWidget(
|
||||
{ dungeonItemTracking, "Randomizer", "Item Tracker", "General Settings", "keys maps compasses icon" });
|
||||
|
||||
gregTracking = { .name = "Greg", .type = WidgetType::WIDGET_CVAR_COMBOBOX };
|
||||
gregTracking.CVar(CVAR_TRACKER_ITEM("DisplayType.Greg"))
|
||||
.Options(ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_EXTENDED_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR)
|
||||
.ComboMap(extendedDisplayTypes))
|
||||
.Callback([](WidgetInfo& info) { shouldUpdateVectors = true; });
|
||||
;
|
||||
SohGui::mSohMenu->AddSearchWidget({ gregTracking, "Randomizer", "Item Tracker", "General Settings", "icon" });
|
||||
|
||||
bossSoulsTracking = { .name = "Boss Souls", .type = WidgetType::WIDGET_CVAR_COMBOBOX };
|
||||
bossSoulsTracking.CVar(CVAR_TRACKER_ITEM("DisplayType.Greg"))
|
||||
.Options(ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR)
|
||||
.ComboMap(displayTypes))
|
||||
.Callback([](WidgetInfo& info) { shouldUpdateVectors = true; });
|
||||
;
|
||||
SohGui::mSohMenu->AddSearchWidget({ bossSoulsTracking, "Randomizer", "Item Tracker", "General Settings", "icon" });
|
||||
|
||||
triforcePieceCount = { .name = "Triforce Piece Count Tracking", .type = WidgetType::WIDGET_CVAR_COMBOBOX };
|
||||
triforcePieceCount.CVar(CVAR_TRACKER_ITEM("TriforcePieceCounts"))
|
||||
.Options(ComboboxOptions()
|
||||
.DefaultIndex(TRIFORCE_PIECE_COLLECTED_REQUIRED_MAX)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR)
|
||||
.ComboMap(itemTrackerTriforcePieceTrackOptions)
|
||||
.Tooltip("Customize what numbers are shown for triforce piece tracking."));
|
||||
SohGui::mSohMenu->AddSearchWidget({ triforcePieceCount, "Randomizer", "Item Tracker", "General Settings" });
|
||||
|
||||
ocarinaButtonTracking = { .name = "Ocarina Buttons", .type = WidgetType::WIDGET_CVAR_COMBOBOX };
|
||||
ocarinaButtonTracking.CVar(CVAR_TRACKER_ITEM("DisplayType.OcarinaButtons"))
|
||||
.Options(ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR)
|
||||
.ComboMap(displayTypes))
|
||||
.Callback([](WidgetInfo& info) { shouldUpdateVectors = true; });
|
||||
;
|
||||
SohGui::mSohMenu->AddSearchWidget(
|
||||
{ ocarinaButtonTracking, "Randomizer", "Item Tracker", "General Settings", "icon" });
|
||||
|
||||
overworldKeysTracking = { .name = "Overworld Keys", .type = WidgetType::WIDGET_CVAR_COMBOBOX };
|
||||
overworldKeysTracking.CVar(CVAR_TRACKER_ITEM("DisplayType.OverworldKeys"))
|
||||
.Options(ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR)
|
||||
.ComboMap(displayTypes))
|
||||
.Callback([](WidgetInfo& info) { shouldUpdateVectors = true; });
|
||||
;
|
||||
SohGui::mSohMenu->AddSearchWidget(
|
||||
{ overworldKeysTracking, "Randomizer", "Item Tracker", "General Settings", "icon" });
|
||||
|
||||
fishingPoleTracking = { .name = "Fishing Pole", .type = WidgetType::WIDGET_CVAR_COMBOBOX };
|
||||
fishingPoleTracking.CVar(CVAR_TRACKER_ITEM("DisplayType.FishingPole"))
|
||||
.Options(ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_EXTENDED_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR)
|
||||
.ComboMap(extendedDisplayTypes))
|
||||
.Callback([](WidgetInfo& info) { shouldUpdateVectors = true; });
|
||||
;
|
||||
SohGui::mSohMenu->AddSearchWidget(
|
||||
{ fishingPoleTracking, "Randomizer", "Item Tracker", "General Settings", "icon" });
|
||||
|
||||
personalNotesWiget = { .name = "Personal notes", .type = WidgetType::WIDGET_CVAR_COMBOBOX };
|
||||
static const char* notesDisabledTooltip =
|
||||
"Disabled because tracker is set to floating and display combo is enabled.";
|
||||
personalNotesWiget.CVar(CVAR_TRACKER_ITEM("DisplayType.Notes"))
|
||||
.Options(ComboboxOptions()
|
||||
.DefaultIndex(SECTION_DISPLAY_HIDDEN)
|
||||
.ComponentAlignment(ComponentAlignments::Right)
|
||||
.LabelPosition(LabelPositions::Far)
|
||||
.Color(THEME_COLOR)
|
||||
.ComboMap(displayTypes))
|
||||
.PreFunc([&](WidgetInfo& info) {
|
||||
if (CVarGetInteger(CVAR_TRACKER_ITEM("WindowType"), TRACKER_WINDOW_FLOATING) == TRACKER_WINDOW_WINDOW ||
|
||||
(CVarGetInteger(CVAR_TRACKER_ITEM("WindowType"), TRACKER_WINDOW_FLOATING) == TRACKER_WINDOW_FLOATING &&
|
||||
CVarGetInteger(CVAR_TRACKER_ITEM("DisplayType.Main"), TRACKER_DISPLAY_ALWAYS) !=
|
||||
TRACKER_DISPLAY_COMBO_BUTTON)) {
|
||||
info.options.get()->disabled = true;
|
||||
info.options.get()->disabledTooltip = notesDisabledTooltip;
|
||||
}
|
||||
})
|
||||
.Callback([](WidgetInfo& info) { shouldUpdateVectors = true; });
|
||||
;
|
||||
SohGui::mSohMenu->AddSearchWidget({ personalNotesWiget, "Randomizer", "Item Tracker", "General Settings" });
|
||||
|
||||
hookshotIdentWidget = { .name = "Show Hookshot Identifiers", .type = WidgetType::WIDGET_CVAR_CHECKBOX };
|
||||
hookshotIdentWidget.CVar(CVAR_SETTING("FreeLook.Enabled"))
|
||||
.Options(CheckboxOptions()
|
||||
.Color(THEME_COLOR)
|
||||
.Tooltip("Shows an 'H' or an 'L' to more easiely distinguish between Hookshot and Longshot."));
|
||||
SohGui::mSohMenu->AddSearchWidget(
|
||||
{ hookshotIdentWidget, "Settings", "Controls", "Camera Controls", "longshot icon" });
|
||||
}
|
||||
|
||||
static RegisterMenuInitFunc initItemTrackerWidgets(RegisterItemTrackerWidgets);
|
||||
|
||||
Reference in New Issue
Block a user