diff --git a/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp index adaf03cea..281102c86 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp @@ -176,6 +176,7 @@ bool hideSeen = false; bool hideSkipped = false; bool hideSaved = false; bool hideCollected = false; +bool hideJunk = false; bool showHidden = true; bool mystery = false; bool showLogicTooltip = false; @@ -283,6 +284,10 @@ uint16_t GetTotalChecksGotten() { } bool IsCheckHidden(RandomizerCheck rc) { + if (showHidden) { + return false; + } + Rando::ItemLocation* itemLocation = OTRGlobals::Instance->gRandoContext->GetItemLocation(rc); RandomizerCheckStatus status = itemLocation->GetCheckStatus(); bool available = itemLocation->IsAvailable(); @@ -291,9 +296,10 @@ bool IsCheckHidden(RandomizerCheck rc) { bool seen = status == RCSHOW_SEEN || status == RCSHOW_IDENTIFIED; bool scummed = status == RCSHOW_SCUMMED; bool unchecked = status == RCSHOW_UNCHECKED; + bool isJunk = itemLocation->GetPlacedItem().GetGIEntry()->getItemCategory == ITEM_CATEGORY_JUNK; + bool knownJunk = (seen || scummed) && isJunk; - return !showHidden && - ((skipped && hideSkipped) || (seen && hideSeen) || (scummed && hideScummed) || (unchecked && hideUnchecked)); + return (skipped && hideSkipped) || (seen && hideSeen) || (scummed && hideScummed) || (unchecked && hideUnchecked) || (knownJunk && hideJunk); } void RecalculateAreaTotals(RandomizerCheckArea rcArea) { @@ -962,6 +968,7 @@ void CheckTrackerWindow::DrawElement() { hideSkipped = CVarGetInteger(CVAR_TRACKER_CHECK("Skipped.Hide"), 0); hideSaved = CVarGetInteger(CVAR_TRACKER_CHECK("Saved.Hide"), 0); hideCollected = CVarGetInteger(CVAR_TRACKER_CHECK("Collected.Hide"), 0); + hideJunk = CVarGetInteger(CVAR_TRACKER_CHECK("Junk.Hide"), 0); showHidden = CVarGetInteger(CVAR_TRACKER_CHECK("ShowHidden"), 0); mystery = CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0); showLogicTooltip = CVarGetInteger(CVAR_TRACKER_CHECK("ShowLogic"), 0); @@ -1238,7 +1245,17 @@ bool UpdateFilters() { } bool ShouldShowCheck(RandomizerCheck check) { - auto itemLoc = Rando::Context::GetInstance()->GetItemLocation(check); + Rando::ItemLocation* itemLoc = Rando::Context::GetInstance()->GetItemLocation(check); + RandomizerCheckStatus status = itemLoc->GetCheckStatus(); + + if ( + hideJunk && + (status == RCSHOW_SEEN || status == RCSHOW_IDENTIFIED || status == RCSHOW_SCUMMED) && + itemLoc->GetPlacedItem().GetGIEntry()->getItemCategory == ITEM_CATEGORY_JUNK + ) { + return false; + } + std::string search = (Rando::StaticData::GetLocation(check)->GetShortName() + " " + Rando::StaticData::GetLocation(check)->GetName() + " " + RandomizerCheckObjects::GetRCAreaName(Rando::StaticData::GetLocation(check)->GetArea())); @@ -1601,7 +1618,18 @@ bool IsCheckShuffled(RandomizerCheck rc) { } bool IsVisibleInCheckTracker(RandomizerCheck rc) { - auto loc = Rando::StaticData::GetLocation(rc); + Rando::Location* loc = Rando::StaticData::GetLocation(rc); + Rando::ItemLocation* itemLoc = Rando::Context::GetInstance()->GetItemLocation(rc); + RandomizerCheckStatus status = itemLoc->GetCheckStatus(); + + if ( + hideJunk && + (status == RCSHOW_SEEN || status == RCSHOW_IDENTIFIED || status == RCSHOW_SCUMMED) && + itemLoc->GetPlacedItem().GetGIEntry()->getItemCategory == ITEM_CATEGORY_JUNK + ) { + return false; + } + if (IS_RANDO) { return IsCheckShuffled(rc) || (alwaysShowGS && loc->GetRCType() == RCTYPE_SKULL_TOKEN && @@ -1719,6 +1747,15 @@ void DrawLocation(RandomizerCheck rc) { return; } + if ( + !showHidden && + hideJunk && + (status == RCSHOW_SEEN || status == RCSHOW_IDENTIFIED || status == RCSHOW_SCUMMED) && + itemLoc->GetPlacedItem().GetGIEntry()->getItemCategory == ITEM_CATEGORY_JUNK + ) { + return; + } + if (status == RCSHOW_COLLECTED) { if (!showHidden && hideCollected) { return; @@ -2149,6 +2186,10 @@ void CheckTrackerSettingsWindow::DrawElement() { UIWidgets::CheckboxOptions() .Tooltip("If enabled, will show a check's logic when hovering over it.") .Color(THEME_COLOR)); + UIWidgets::CVarCheckbox("Hide Junk", CVAR_TRACKER_CHECK("Junk.Hide"), + UIWidgets::CheckboxOptions() + .Tooltip("If enabled, checks that are known to be junk will be hidden.") + .Color(THEME_COLOR)); ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); if (UIWidgets::CVarCheckbox("Enable Available Checks", CVAR_TRACKER_CHECK("EnableAvailableChecks"), UIWidgets::CheckboxOptions()