mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-22 09:22:18 -05:00
Restore Vanilla Tracking (#4394)
* Re-enabled vanilla tracking in the check tracker. Utilized Rando::Context for check status. * Restore check tracker window custom background functionality.
This commit is contained in:
parent
d0905f365a
commit
65fbf2cc41
@ -911,7 +911,7 @@ void Rando::StaticData::InitLocationTable() { //
|
|||||||
7 5 1 3
|
7 5 1 3
|
||||||
-------------------------------*/
|
-------------------------------*/
|
||||||
// Kokiri Forest
|
// Kokiri Forest
|
||||||
locationTable[RC_KF_SHOP_ITEM_1] = Location::Base(RC_KF_SHOP_ITEM_1, RCQUEST_BOTH, RCTYPE_SHOP, ACTOR_EN_GIRLA, SCENE_KOKIRI_SHOP, 0x00, "Shop Item 1", RHT_KF_SHOP_ITEM_1, RG_BUY_DEKU_SHIELD, SpoilerCollectionCheck(), false, 40);
|
locationTable[RC_KF_SHOP_ITEM_1] = Location::Base(RC_KF_SHOP_ITEM_1, RCQUEST_BOTH, RCTYPE_SHOP, ACTOR_EN_GIRLA, SCENE_KOKIRI_SHOP, 0x00, "Shop Item 1", RHT_KF_SHOP_ITEM_1, RG_BUY_DEKU_SHIELD, SpoilerCollectionCheck(), true, 40);
|
||||||
locationTable[RC_KF_SHOP_ITEM_2] = Location::Base(RC_KF_SHOP_ITEM_2, RCQUEST_BOTH, RCTYPE_SHOP, ACTOR_EN_GIRLA, SCENE_KOKIRI_SHOP, 0x01, "Shop Item 2", RHT_KF_SHOP_ITEM_2, RG_BUY_DEKU_NUTS_5, SpoilerCollectionCheck(), false, 15);
|
locationTable[RC_KF_SHOP_ITEM_2] = Location::Base(RC_KF_SHOP_ITEM_2, RCQUEST_BOTH, RCTYPE_SHOP, ACTOR_EN_GIRLA, SCENE_KOKIRI_SHOP, 0x01, "Shop Item 2", RHT_KF_SHOP_ITEM_2, RG_BUY_DEKU_NUTS_5, SpoilerCollectionCheck(), false, 15);
|
||||||
locationTable[RC_KF_SHOP_ITEM_3] = Location::Base(RC_KF_SHOP_ITEM_3, RCQUEST_BOTH, RCTYPE_SHOP, ACTOR_EN_GIRLA, SCENE_KOKIRI_SHOP, 0x02, "Shop Item 3", RHT_KF_SHOP_ITEM_3, RG_BUY_DEKU_NUTS_10, SpoilerCollectionCheck(), false, 30);
|
locationTable[RC_KF_SHOP_ITEM_3] = Location::Base(RC_KF_SHOP_ITEM_3, RCQUEST_BOTH, RCTYPE_SHOP, ACTOR_EN_GIRLA, SCENE_KOKIRI_SHOP, 0x02, "Shop Item 3", RHT_KF_SHOP_ITEM_3, RG_BUY_DEKU_NUTS_10, SpoilerCollectionCheck(), false, 30);
|
||||||
locationTable[RC_KF_SHOP_ITEM_4] = Location::Base(RC_KF_SHOP_ITEM_4, RCQUEST_BOTH, RCTYPE_SHOP, ACTOR_EN_GIRLA, SCENE_KOKIRI_SHOP, 0x03, "Shop Item 4", RHT_KF_SHOP_ITEM_4, RG_BUY_DEKU_STICK_1, SpoilerCollectionCheck(), false, 10);
|
locationTable[RC_KF_SHOP_ITEM_4] = Location::Base(RC_KF_SHOP_ITEM_4, RCQUEST_BOTH, RCTYPE_SHOP, ACTOR_EN_GIRLA, SCENE_KOKIRI_SHOP, 0x03, "Shop Item 4", RHT_KF_SHOP_ITEM_4, RG_BUY_DEKU_STICK_1, SpoilerCollectionCheck(), false, 10);
|
||||||
|
@ -647,6 +647,10 @@ void CheckTrackerItemReceive(GetItemEntry giEntry) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CheckTrackerSceneFlagSet(int16_t sceneNum, int16_t flagType, int32_t flag) {
|
void CheckTrackerSceneFlagSet(int16_t sceneNum, int16_t flagType, int32_t flag) {
|
||||||
|
if (IS_RANDO) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (flagType != FLAG_SCENE_TREASURE && flagType != FLAG_SCENE_COLLECTIBLE) {
|
if (flagType != FLAG_SCENE_TREASURE && flagType != FLAG_SCENE_COLLECTIBLE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -668,6 +672,10 @@ void CheckTrackerSceneFlagSet(int16_t sceneNum, int16_t flagType, int32_t flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CheckTrackerFlagSet(int16_t flagType, int32_t flag) {
|
void CheckTrackerFlagSet(int16_t flagType, int32_t flag) {
|
||||||
|
if (IS_RANDO) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
SpoilerCollectionCheckType checkMatchType = SpoilerCollectionCheckType::SPOILER_CHK_NONE;
|
SpoilerCollectionCheckType checkMatchType = SpoilerCollectionCheckType::SPOILER_CHK_NONE;
|
||||||
switch (flagType) {
|
switch (flagType) {
|
||||||
case FLAG_GS_TOKEN:
|
case FLAG_GS_TOKEN:
|
||||||
@ -1289,8 +1297,12 @@ bool IsCheckShuffled(RandomizerCheck rc) {
|
|||||||
|
|
||||||
bool IsVisibleInCheckTracker(RandomizerCheck rc) {
|
bool IsVisibleInCheckTracker(RandomizerCheck rc) {
|
||||||
auto loc = Rando::StaticData::GetLocation(rc);
|
auto loc = Rando::StaticData::GetLocation(rc);
|
||||||
return IsCheckShuffled(rc) || (loc->GetRCType() == RCTYPE_SKULL_TOKEN && alwaysShowGS) ||
|
if (IS_RANDO) {
|
||||||
(loc->GetRCType() == RCTYPE_SHOP && (showShops && (!hideShopRightChecks)));
|
return IsCheckShuffled(rc) || (loc->GetRCType() == RCTYPE_SKULL_TOKEN && alwaysShowGS) ||
|
||||||
|
(loc->GetRCType() == RCTYPE_SHOP && (showShops && (!hideShopRightChecks)));
|
||||||
|
} else {
|
||||||
|
return loc->IsVanillaCompletion() && (!loc->IsDungeon() || (loc->IsDungeon() && loc->GetQuest() == gSaveContext.questId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateInventoryChecks() {
|
void UpdateInventoryChecks() {
|
||||||
@ -1639,6 +1651,15 @@ void ImGuiDrawTwoColorPickerSection(const char* text, const char* cvarMainName,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CheckTrackerWindow::Draw() {
|
||||||
|
if (!IsVisible()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DrawElement();
|
||||||
|
// Sync up the IsVisible flag if it was changed by ImGui
|
||||||
|
SyncVisibilityConsoleVariable();
|
||||||
|
}
|
||||||
|
|
||||||
static const char* windowType[] = { "Floating", "Window" };
|
static const char* windowType[] = { "Floating", "Window" };
|
||||||
static const char* displayType[] = { "Always", "Combo Button Hold" };
|
static const char* displayType[] = { "Always", "Combo Button Hold" };
|
||||||
static const char* buttonStrings[] = { "A Button", "B Button", "C-Up", "C-Down", "C-Left", "C-Right", "L Button",
|
static const char* buttonStrings[] = { "A Button", "B Button", "C-Up", "C-Down", "C-Left", "C-Right", "L Button",
|
||||||
@ -1716,12 +1737,12 @@ void CheckTrackerWindow::InitElement() {
|
|||||||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnExitGame>([](uint32_t fileNum) {
|
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnExitGame>([](uint32_t fileNum) {
|
||||||
Teardown();
|
Teardown();
|
||||||
});
|
});
|
||||||
// GameInteractor::Instance->RegisterGameHook<GameInteractor::OnItemReceive>(CheckTrackerItemReceive);
|
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnItemReceive>(CheckTrackerItemReceive);
|
||||||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnGameFrameUpdate>(CheckTrackerFrame);
|
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnGameFrameUpdate>(CheckTrackerFrame);
|
||||||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnTransitionEnd>(CheckTrackerTransition);
|
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnTransitionEnd>(CheckTrackerTransition);
|
||||||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnShopSlotChange>(CheckTrackerShopSlotChange);
|
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnShopSlotChange>(CheckTrackerShopSlotChange);
|
||||||
// GameInteractor::Instance->RegisterGameHook<GameInteractor::OnSceneFlagSet>(CheckTrackerSceneFlagSet);
|
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnSceneFlagSet>(CheckTrackerSceneFlagSet);
|
||||||
// GameInteractor::Instance->RegisterGameHook<GameInteractor::OnFlagSet>(CheckTrackerFlagSet);
|
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnFlagSet>(CheckTrackerFlagSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckTrackerWindow::UpdateElement() {
|
void CheckTrackerWindow::UpdateElement() {
|
||||||
|
@ -21,6 +21,7 @@ class CheckTrackerSettingsWindow : public Ship::GuiWindow {
|
|||||||
class CheckTrackerWindow : public Ship::GuiWindow {
|
class CheckTrackerWindow : public Ship::GuiWindow {
|
||||||
public:
|
public:
|
||||||
using GuiWindow::GuiWindow;
|
using GuiWindow::GuiWindow;
|
||||||
|
void Draw() override;
|
||||||
~CheckTrackerWindow() {};
|
~CheckTrackerWindow() {};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -2841,11 +2841,12 @@ extern "C" void Save_SaveGlobal(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void Save_LoadFile(void) {
|
extern "C" void Save_LoadFile(void) {
|
||||||
|
// Handle vanilla context reset
|
||||||
|
OTRGlobals::Instance->gRandoContext.reset();
|
||||||
|
OTRGlobals::Instance->gRandoContext = Rando::Context::CreateInstance();
|
||||||
|
OTRGlobals::Instance->gRandoContext->GetLogic()->SetSaveContext(&gSaveContext);
|
||||||
|
|
||||||
if (SaveManager::Instance->fileMetaInfo[gSaveContext.fileNum].randoSave) {
|
if (SaveManager::Instance->fileMetaInfo[gSaveContext.fileNum].randoSave) {
|
||||||
// Reset rando context for rando saves.
|
|
||||||
OTRGlobals::Instance->gRandoContext.reset();
|
|
||||||
OTRGlobals::Instance->gRandoContext = Rando::Context::CreateInstance();
|
|
||||||
OTRGlobals::Instance->gRandoContext->GetLogic()->SetSaveContext(&gSaveContext);
|
|
||||||
OTRGlobals::Instance->gRandoContext->AddExcludedOptions();
|
OTRGlobals::Instance->gRandoContext->AddExcludedOptions();
|
||||||
OTRGlobals::Instance->gRandoContext->GetSettings()->CreateOptions();
|
OTRGlobals::Instance->gRandoContext->GetSettings()->CreateOptions();
|
||||||
}
|
}
|
||||||
|
@ -963,7 +963,7 @@ void DrawSeedHashSprites(FileChooseContext* this) {
|
|||||||
if (this->configMode == CM_MAIN_MENU &&
|
if (this->configMode == CM_MAIN_MENU &&
|
||||||
(this->selectMode != SM_CONFIRM_FILE || Save_GetSaveMetaInfo(this->selectedFileIndex)->randoSave == 1)) {
|
(this->selectMode != SM_CONFIRM_FILE || Save_GetSaveMetaInfo(this->selectedFileIndex)->randoSave == 1)) {
|
||||||
|
|
||||||
if (this->fileInfoAlpha[this->selectedFileIndex] > 0) {
|
if (this->fileInfoAlpha[this->selectedFileIndex] > 0 && Save_GetSaveMetaInfo(this->selectedFileIndex)->randoSave) {
|
||||||
// Use file info alpha to match fading
|
// Use file info alpha to match fading
|
||||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 0xFF, 0xFF, 0xFF, this->fileInfoAlpha[this->selectedFileIndex]);
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 0xFF, 0xFF, 0xFF, this->fileInfoAlpha[this->selectedFileIndex]);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user