Merge branch 'testing-out-item-replacement' into testing-out-item-replacement-melon

This commit is contained in:
MelonSpeedruns 2022-05-28 15:16:23 -04:00
commit 49d4102538
3 changed files with 15 additions and 5 deletions

View file

@ -553,6 +553,10 @@ GetItemID Randomizer::GetItemFromSceneAndParams(s16 sceneNum, s16 actorParams, G
return GetItemFromGet(this->itemLocations[GetCheckFromSceneAndParams(sceneNum, actorParams)], ogItemId); return GetItemFromGet(this->itemLocations[GetCheckFromSceneAndParams(sceneNum, actorParams)], ogItemId);
} }
GetItemID Randomizer::GetItemFromSceneParamsAndHomePos(s16 sceneNum, s16 actorParams, s32 homePosX, s32 homePosY, s32 homePosZ, GetItemID ogItemId) {
return GetItemFromGet(this->itemLocations[GetCheckFromSceneAndParams(sceneNum, actorParams, homePosX, homePosY, homePosZ)], ogItemId);
}
GetItemID Randomizer::GetItemFromGet(RandomizerGet randoGet, GetItemID ogItemId) { GetItemID Randomizer::GetItemFromGet(RandomizerGet randoGet, GetItemID ogItemId) {
switch(randoGet) { switch(randoGet) {
case UNKNOWN_GET: case UNKNOWN_GET:
@ -769,7 +773,7 @@ RandomizerCheck Randomizer::GetCheckFromActor(s16 actorId, GetItemID ogItemId) {
return UNKNOWN_CHECK; return UNKNOWN_CHECK;
} }
RandomizerCheck Randomizer::GetCheckFromSceneAndParams(s16 sceneNum, s16 actorParams) { RandomizerCheck Randomizer::GetCheckFromSceneAndParams(s16 sceneNum, s16 actorParams, s32 homePosX, s32 homePosY, s32 homePosZ) {
if (!gSaveContext.n64ddFlag) { if (!gSaveContext.n64ddFlag) {
return UNKNOWN_CHECK; return UNKNOWN_CHECK;
} }

View file

@ -12,7 +12,7 @@ class Randomizer {
std::unordered_map<RandomizerCheck, RandomizerGet> itemLocations; std::unordered_map<RandomizerCheck, RandomizerGet> itemLocations;
GetItemID GetItemFromGet(RandomizerGet randoGet, GetItemID ogItemId); GetItemID GetItemFromGet(RandomizerGet randoGet, GetItemID ogItemId);
RandomizerCheck GetCheckFromActor(s16 actorId, GetItemID ogItemId); RandomizerCheck GetCheckFromActor(s16 actorId, GetItemID ogItemId);
RandomizerCheck GetCheckFromSceneAndParams(s16 sceneNum, s16 actorParams); RandomizerCheck GetCheckFromSceneAndParams(s16 sceneNum, s16 actorParams, s32 homePosX = 0, s32 homePosY = 0, s32 homePosZ = 0);
public: public:
Randomizer(); Randomizer();
@ -22,6 +22,7 @@ class Randomizer {
void ParseItemLocations(std::string spoilerfilename); void ParseItemLocations(std::string spoilerfilename);
GetItemID GetItemFromActor(s16 actorId, GetItemID ogItemId); GetItemID GetItemFromActor(s16 actorId, GetItemID ogItemId);
GetItemID GetItemFromSceneAndParams(s16 sceneNum, s16 actorParams, GetItemID ogItemId); GetItemID GetItemFromSceneAndParams(s16 sceneNum, s16 actorParams, GetItemID ogItemId);
GetItemID GetItemFromSceneParamsAndHomePos(s16 sceneNum, s16 actorParams, s32 homePosX, s32 homePosY, s32 homePosZ, GetItemID ogItemId);
}; };
#endif #endif

View file

@ -997,11 +997,11 @@ extern "C" int Controller_ShouldRumble(size_t i) {
} }
extern "C" void LoadItemLocations() { extern "C" void LoadItemLocations() {
return OTRGlobals::Instance->gRandomizer->LoadItemLocations(); OTRGlobals::Instance->gRandomizer->LoadItemLocations();
} }
extern "C" void ParseItemLocations(const char* spoilerfilename) { extern "C" void ParseItemLocations(const char* spoilerfilename) {
return OTRGlobals::Instance->gRandomizer->ParseItemLocations(spoilerfilename); OTRGlobals::Instance->gRandomizer->ParseItemLocations(spoilerfilename);
} }
extern "C" GetItemID GetItemFromActor(s16 actorId, GetItemID ogItemId) { extern "C" GetItemID GetItemFromActor(s16 actorId, GetItemID ogItemId) {
@ -1011,3 +1011,8 @@ extern "C" GetItemID GetItemFromActor(s16 actorId, GetItemID ogItemId) {
extern "C" GetItemID GetItemFromSceneAndParams(s16 sceneNum, s16 actorParams, GetItemID ogItemId) { extern "C" GetItemID GetItemFromSceneAndParams(s16 sceneNum, s16 actorParams, GetItemID ogItemId) {
return OTRGlobals::Instance->gRandomizer->GetItemFromSceneAndParams(sceneNum, actorParams, ogItemId); return OTRGlobals::Instance->gRandomizer->GetItemFromSceneAndParams(sceneNum, actorParams, ogItemId);
} }
// use an explicit (s32) cast on the position values from the Vec3f when calling
extern "C" GetItemID GetItemFromSceneParamsAndHomePos(s16 sceneNum, s16 actorParams, s32 homePosX, s32 homePosY, s32 homePosZ, GetItemID ogItemId) {
return OTRGlobals::Instance->gRandomizer->GetItemFromSceneParamsAndHomePos(sceneNum, actorParams, homePosX, homePosY, homePosZ, ogItemId);
}