mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-07-16 10:02:59 -07:00
Merge branch 'develop' of github.com:Malkierian/Shipwright into dev-to-rando-5-6
This commit is contained in:
commit
d10b68516c
35 changed files with 1255 additions and 152 deletions
|
@ -144,8 +144,8 @@ RandomizerCheckArea currentArea = RCAREA_INVALID;
|
|||
OSContPad* trackerButtonsPressed;
|
||||
std::unordered_map<RandomizerCheck, std::string> checkNameOverrides;
|
||||
|
||||
bool passesTextFilter(ImGuiTextFilter& checkSearch, const RandomizerCheck check);
|
||||
bool shouldHideArea(ImGuiTextFilter& checkSearch, std::map<RandomizerCheckArea, std::vector<RandomizerCheck>> checksByArea, const RandomizerCheckArea rcArea);
|
||||
bool ShouldShowCheck(RandomizerCheck rc);
|
||||
bool ShouldHideArea(RandomizerCheckArea rcArea);
|
||||
void BeginFloatWindows(std::string UniqueName, bool& open, ImGuiWindowFlags flags = 0);
|
||||
bool CompareChecks(RandomizerCheck, RandomizerCheck);
|
||||
bool CheckByArea(RandomizerCheckArea);
|
||||
|
@ -214,6 +214,7 @@ Color_RGBA8 Color_Saved_Extra = { 0, 185, 0, 255 }; // Green
|
|||
|
||||
std::vector<uint32_t> buttons = { BTN_A, BTN_B, BTN_CUP, BTN_CDOWN, BTN_CLEFT, BTN_CRIGHT, BTN_L,
|
||||
BTN_Z, BTN_R, BTN_START, BTN_DUP, BTN_DDOWN, BTN_DLEFT, BTN_DRIGHT };
|
||||
static ImGuiTextFilter checkSearch;
|
||||
|
||||
void DefaultCheckData(RandomizerCheck rc) {
|
||||
gSaveContext.checkTrackerData[rc].status = RCSHOW_UNCHECKED;
|
||||
|
@ -943,9 +944,9 @@ void CheckTrackerWindow::DrawElement() {
|
|||
optCollapseAll = true;
|
||||
}
|
||||
ImGui::SameLine();
|
||||
static ImGuiTextFilter checkSearch;
|
||||
if (ImGui::Button("Clear")) {
|
||||
checkSearch.Clear();
|
||||
doAreaScroll = true;
|
||||
}
|
||||
UIWidgets::Tooltip("Clear the search field");
|
||||
checkSearch.Draw();
|
||||
|
@ -983,6 +984,8 @@ void CheckTrackerWindow::DrawElement() {
|
|||
Color_RGBA8 extraColor;
|
||||
std::string stemp;
|
||||
|
||||
bool shouldHideFilteredAreas = CVarGetInteger(CVAR_TRACKER_CHECK("HideFilteredAreas"), 1);
|
||||
|
||||
for (auto& [rcArea, checks] : checksByArea) {
|
||||
RandomizerCheckArea thisArea = currentArea;
|
||||
|
||||
|
@ -996,7 +999,7 @@ void CheckTrackerWindow::DrawElement() {
|
|||
previousShowHidden = showHidden;
|
||||
doAreaScroll = true;
|
||||
}
|
||||
if (shouldHideArea(checkSearch, checksByArea, rcArea) ||
|
||||
if ((shouldHideFilteredAreas && ShouldHideArea(rcArea)) ||
|
||||
(!showHidden && ((hideComplete && thisAreaFullyChecked) || (hideIncomplete && !thisAreaFullyChecked)))
|
||||
) {
|
||||
doDraw = false;
|
||||
|
@ -1056,7 +1059,7 @@ void CheckTrackerWindow::DrawElement() {
|
|||
doAreaScroll = false;
|
||||
}
|
||||
for (auto rc : checks) {
|
||||
if (doDraw && isThisAreaSpoiled && IsVisibleInCheckTracker(rc) && passesTextFilter(checkSearch, rc)) {
|
||||
if (doDraw && isThisAreaSpoiled && ShouldShowCheck(rc)) {
|
||||
DrawLocation(rc);
|
||||
}
|
||||
}
|
||||
|
@ -1076,14 +1079,12 @@ void CheckTrackerWindow::DrawElement() {
|
|||
}
|
||||
}
|
||||
|
||||
bool shouldHideArea(ImGuiTextFilter& checkSearch, std::map<RandomizerCheckArea, std::vector<RandomizerCheck>> checksByArea, RandomizerCheckArea rcArea) {
|
||||
bool shouldHideFilteredAreas = CVarGetInteger(CVAR_TRACKER_CHECK("HideFilteredAreas"), 1);
|
||||
if (!shouldHideFilteredAreas) {
|
||||
bool ShouldHideArea(RandomizerCheckArea rcArea) {
|
||||
if (checkSearch.Filters.Size == 0 || checkSearch.PassFilter(RandomizerCheckObjects::GetRCAreaName(rcArea).c_str())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (auto check : checksByArea[rcArea]) {
|
||||
if (IsVisibleInCheckTracker(check) && passesTextFilter(checkSearch, check)) {
|
||||
if (ShouldShowCheck(check)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1091,8 +1092,10 @@ bool shouldHideArea(ImGuiTextFilter& checkSearch, std::map<RandomizerCheckArea,
|
|||
return true;
|
||||
}
|
||||
|
||||
bool passesTextFilter(ImGuiTextFilter& checkSearch, RandomizerCheck check) {
|
||||
bool ShouldShowCheck(RandomizerCheckObject check) {
|
||||
return (
|
||||
IsVisibleInCheckTracker(check) &&
|
||||
(checkSearch.Filters.Size == 0 ||
|
||||
checkSearch.PassFilter(RandomizerCheckObjects::GetRCAreaName(Rando::StaticData::GetLocation(check)->GetArea()).c_str()) ||
|
||||
checkSearch.PassFilter(Rando::StaticData::GetLocation(check)->GetShortName().c_str())
|
||||
);
|
||||
|
@ -1241,7 +1244,7 @@ void LoadSettings() {
|
|||
fishsanityAgeSplit = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_FISHSANITY_AGE_SPLIT);
|
||||
}
|
||||
|
||||
bool IsVisibleInCheckTracker(RandomizerCheck rc) {
|
||||
bool IsCheckShuffled(RandomizerCheckObject rcObj) {
|
||||
Rando::Location* loc = Rando::StaticData::GetLocation(rc);
|
||||
if (IS_RANDO && OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_LOGIC_RULES) != RO_LOGIC_VANILLA) {
|
||||
return
|
||||
|
@ -1255,7 +1258,7 @@ bool IsVisibleInCheckTracker(RandomizerCheck rc) {
|
|||
loc->GetQuest() == RCQUEST_MQ && OTRGlobals::Instance->gRandoContext->GetDungeons()->GetDungeonFromScene(loc->GetScene())->IsMQ() ||
|
||||
loc->GetQuest() == RCQUEST_VANILLA && OTRGlobals::Instance->gRandoContext->GetDungeons()->GetDungeonFromScene(loc->GetScene())->IsVanilla()
|
||||
) &&
|
||||
(loc->GetRCType() != RCTYPE_SHOP || (showShops && (!hideShopRightChecks || hideShopRightChecks && loc->GetActorParams() > 0x03))) &&
|
||||
(loc->GetRCType() != RCTYPE_SHOP || (showShops && loc->GetActorParams() > 0x03)) &&
|
||||
(loc->GetRandomizerCheck() != RC_MARKET_BOMBCHU_BOWLING_BOMBCHUS) &&
|
||||
(rc != RC_TRIFORCE_COMPLETED || !hideTriforceCompleted) &&
|
||||
(rc != RC_GIFT_FROM_SAGES || !IS_RANDO) &&
|
||||
|
@ -1304,6 +1307,10 @@ bool IsVisibleInCheckTracker(RandomizerCheck rc) {
|
|||
return false;
|
||||
}
|
||||
|
||||
bool IsVisibleInCheckTracker(RandomizerCheckObject rcObj) {
|
||||
return IsCheckShuffled(rcObj) || (rcObj.rcType == RCTYPE_SKULL_TOKEN && alwaysShowGS) || (rcObj.rcType == RCTYPE_SHOP && (showShops && (!hideShopRightChecks)));
|
||||
}
|
||||
|
||||
void UpdateInventoryChecks() {
|
||||
//For all the areas with maps, if you have one, spoil the area
|
||||
for (auto [scene, area] : DungeonRCAreasBySceneID) {
|
||||
|
@ -1494,6 +1501,8 @@ void DrawLocation(RandomizerCheck rc) {
|
|||
//Draw the extra info
|
||||
txt = "";
|
||||
|
||||
bool mystery = CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0) && OTRGlobals::Instance->gRandomizer->merchantPrices.contains(rcObj.rc);
|
||||
|
||||
if (checkData.hintItem != 0) {
|
||||
// TODO hints
|
||||
} else if (status != RCSHOW_UNCHECKED) {
|
||||
|
@ -1516,16 +1525,16 @@ void DrawLocation(RandomizerCheck rc) {
|
|||
case RCSHOW_IDENTIFIED:
|
||||
case RCSHOW_SEEN:
|
||||
if (IS_RANDO) {
|
||||
if (itemLoc->GetPlacedRandomizerGet() == RG_ICE_TRAP) {
|
||||
if (itemLoc->GetPlacedRandomizerGet() == RG_ICE_TRAP && !mystery) {
|
||||
if (status == RCSHOW_IDENTIFIED) {
|
||||
txt = OTRGlobals::Instance->gRandoContext->overrides[rc].GetTrickName().GetForLanguage(gSaveContext.language);
|
||||
} else {
|
||||
txt = Rando::StaticData::RetrieveItem(OTRGlobals::Instance->gRandoContext->overrides[rc].LooksLike()).GetName().GetForLanguage(gSaveContext.language);
|
||||
}
|
||||
} else {
|
||||
} else if (!mystery) {
|
||||
txt = itemLoc->GetPlacedItem().GetName().GetForLanguage(gSaveContext.language);
|
||||
}
|
||||
if (status == RCSHOW_IDENTIFIED) {
|
||||
if (!IsVisibleInCheckTracker(rcObj) && status == RCSHOW_IDENTIFIED && !mystery) {
|
||||
txt += fmt::format(" - {}", gSaveContext.checkTrackerData[rc].price);
|
||||
}
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue