Merge remote-tracking branch 'upstream/rando-next' into rando-enhanced-magic-arrows

This commit is contained in:
Sarge-117 2022-09-03 22:31:21 -07:00
commit 347154c4d1
4 changed files with 20 additions and 2 deletions

View File

@ -31,4 +31,6 @@ namespace Ship {
DEFINE_HOOK(LoadTexture, void(const char* path, uint8_t** texture)); DEFINE_HOOK(LoadTexture, void(const char* path, uint8_t** texture));
DEFINE_HOOK(GfxInit, void()); DEFINE_HOOK(GfxInit, void());
DEFINE_HOOK(ExitGame, void()); DEFINE_HOOK(ExitGame, void());
DEFINE_HOOK(LoadFile, void(uint32_t fileNum));
DEFINE_HOOK(DeleteFile, void(uint32_t fileNum));
} }

View File

@ -1364,7 +1364,7 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe
return INV_CONTENT(ITEM_LENS) == ITEM_NONE ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; return INV_CONTENT(ITEM_LENS) == ITEM_NONE ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
case RG_MAGIC_BEAN: case RG_MAGIC_BEAN:
case RG_MAGIC_BEAN_PACK: case RG_MAGIC_BEAN_PACK:
return BEANS_BOUGHT < 10 ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; return AMMO(ITEM_BEAN) < 10 ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
case RG_MEGATON_HAMMER: case RG_MEGATON_HAMMER:
return INV_CONTENT(ITEM_HAMMER) == ITEM_NONE ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; return INV_CONTENT(ITEM_HAMMER) == ITEM_NONE ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
case RG_FIRE_ARROWS: case RG_FIRE_ARROWS:

View File

@ -484,6 +484,8 @@ void DrawSong(ItemTrackerItem item) {
UIWidgets::SetLastItemHoverText(SohUtils::GetQuestItemName(item.id)); UIWidgets::SetLastItemHoverText(SohUtils::GetQuestItemName(item.id));
} }
static ImVector<char> itemTrackerNotes;
void DrawNotes(bool resizeable = false) { void DrawNotes(bool resizeable = false) {
ImGui::BeginGroup(); ImGui::BeginGroup();
int iconSize = CVar_GetS32("gItemTrackerIconSize", 36); int iconSize = CVar_GetS32("gItemTrackerIconSize", 36);
@ -509,12 +511,15 @@ void DrawNotes(bool resizeable = false) {
(void*)itemTrackerNotes); (void*)itemTrackerNotes);
} }
}; };
static ImVector<char> itemTrackerNotes;
if (itemTrackerNotes.empty()) { if (itemTrackerNotes.empty()) {
itemTrackerNotes.push_back(0); itemTrackerNotes.push_back(0);
} }
ImVec2 size = resizeable ? ImVec2(-FLT_MIN, ImGui::GetContentRegionAvail().y) : ImVec2(((iconSize + iconSpacing) * 6) - 8, 200); ImVec2 size = resizeable ? ImVec2(-FLT_MIN, ImGui::GetContentRegionAvail().y) : ImVec2(((iconSize + iconSpacing) * 6) - 8, 200);
ItemTrackerNotes::TrackerNotesInputTextMultiline("##ItemTrackerNotes", &itemTrackerNotes, size, ImGuiInputTextFlags_AllowTabInput); ItemTrackerNotes::TrackerNotesInputTextMultiline("##ItemTrackerNotes", &itemTrackerNotes, size, ImGuiInputTextFlags_AllowTabInput);
if (ImGui::IsItemDeactivatedAfterEdit() && IsValidSaveFile()) {
CVar_SetString(("gItemTrackerNotes" + std::to_string(gSaveContext.fileNum)).c_str(), std::string(std::begin(itemTrackerNotes), std::end(itemTrackerNotes)).c_str());
SohImGui::RequestCvarSaveOnNextTick();
}
ImGui::EndGroup(); ImGui::EndGroup();
} }
@ -924,4 +929,12 @@ void InitItemTracker() {
Ship::RegisterHook<Ship::ControllerRead>([](OSContPad* cont_pad) { Ship::RegisterHook<Ship::ControllerRead>([](OSContPad* cont_pad) {
buttonsPressed = cont_pad; buttonsPressed = cont_pad;
}); });
Ship::RegisterHook<Ship::LoadFile>([](uint32_t fileNum) {
const char* initialTrackerNotes = CVar_GetString(("gItemTrackerNotes" + std::to_string(fileNum)).c_str(), "");
strcpy(itemTrackerNotes.Data, initialTrackerNotes);
});
Ship::RegisterHook<Ship::DeleteFile>([](uint32_t fileNum) {
CVar_SetString(("gItemTrackerNotes" + std::to_string(fileNum)).c_str(), "");
SohImGui::RequestCvarSaveOnNextTick();
});
} }

View File

@ -4,6 +4,7 @@
#include "z64.h" #include "z64.h"
#include "functions.h" #include "functions.h"
#include "macros.h" #include "macros.h"
#include <libultraship/Hooks.h>
#include <libultraship/Cvar.h> #include <libultraship/Cvar.h>
#define NOGDI // avoid various windows defines that conflict with things in z64.h #define NOGDI // avoid various windows defines that conflict with things in z64.h
@ -1570,6 +1571,7 @@ extern "C" void Save_SaveGlobal(void) {
extern "C" void Save_LoadFile(void) { extern "C" void Save_LoadFile(void) {
SaveManager::Instance->LoadFile(gSaveContext.fileNum); SaveManager::Instance->LoadFile(gSaveContext.fileNum);
Ship::ExecuteHooks<Ship::LoadFile>(gSaveContext.fileNum);
} }
extern "C" void Save_AddLoadFunction(char* name, int version, SaveManager::LoadFunc func) { extern "C" void Save_AddLoadFunction(char* name, int version, SaveManager::LoadFunc func) {
@ -1590,6 +1592,7 @@ extern "C" void Save_CopyFile(int from, int to) {
extern "C" void Save_DeleteFile(int fileNum) { extern "C" void Save_DeleteFile(int fileNum) {
SaveManager::Instance->DeleteZeldaFile(fileNum); SaveManager::Instance->DeleteZeldaFile(fileNum);
Ship::ExecuteHooks<Ship::DeleteFile>(fileNum);
} }
extern "C" bool Save_Exist(int fileNum) { extern "C" bool Save_Exist(int fileNum) {