i wonder what's going on here

This commit is contained in:
briaguya 2022-05-28 12:57:36 -04:00
commit 265ecb9cea
4 changed files with 33 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, f32 homePosX, f32 homePosY, f32 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, f32 homePosX, f32 homePosY, f32 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, f32 homePosX = 0, f32 homePosY = 0, f32 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, f32 homePosX, f32 homePosY, f32 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) {
@ -1010,4 +1010,9 @@ 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);
}
extern "C" GetItemID GetItemFromSceneParamsAndHomePos(s16 sceneNum, s16 actorParams, f32 homePosX, f32 homePosY, f32 homePosZ, GetItemID ogItemId) {
// the position values are broken here
return OTRGlobals::Instance->gRandomizer->GetItemFromSceneParamsAndHomePos(sceneNum, actorParams, homePosX, homePosY, homePosZ, ogItemId);
} }

View file

@ -388,6 +388,21 @@ s32 EnBox_GetRandomizedItemId(s16 actorParams, s16 sceneNum) {
return 0 - itemId; return 0 - itemId;
} }
s32 EnBox_GetRandomizedItemIdTestDefinitelyDeleteThis(s16 actorParams, s16 sceneNum, Vec3f homePos) {
// KF_MIDOS_TOP_LEFT_CHEST
if(actorParams == 22944) {
f32 blargX = homePos.x;
f32 blargY = homePos.y;
f32 blargZ = homePos.z;
// all the position values are fine here
s32 itemId = GetItemFromSceneParamsAndHomePos(sceneNum, actorParams, blargX, blargY, blargZ, actorParams >> 5 & 0x7F);
return 0 - itemId;
} else {
s32 itemId = GetItemFromSceneAndParams(sceneNum, actorParams, actorParams >> 5 & 0x7F);
return 0 - itemId;
}
}
/** /**
* Chest is ready to be open * Chest is ready to be open
*/ */
@ -429,8 +444,11 @@ void EnBox_WaitOpen(EnBox* this, GlobalContext* globalCtx) {
func_8002DBD0(&this->dyna.actor, &sp4C, &player->actor.world.pos); func_8002DBD0(&this->dyna.actor, &sp4C, &player->actor.world.pos);
if (sp4C.z > -50.0f && sp4C.z < 0.0f && fabsf(sp4C.y) < 10.0f && fabsf(sp4C.x) < 20.0f && if (sp4C.z > -50.0f && sp4C.z < 0.0f && fabsf(sp4C.y) < 10.0f && fabsf(sp4C.x) < 20.0f &&
Player_IsFacingActor(&this->dyna.actor, 0x3000, globalCtx)) { Player_IsFacingActor(&this->dyna.actor, 0x3000, globalCtx)) {
// func_8002F554(&this->dyna.actor, globalCtx,
// EnBox_GetRandomizedItemId(this->dyna.actor.params, globalCtx->sceneNum));
func_8002F554(&this->dyna.actor, globalCtx, func_8002F554(&this->dyna.actor, globalCtx,
EnBox_GetRandomizedItemId(this->dyna.actor.params, globalCtx->sceneNum)); EnBox_GetRandomizedItemIdTestDefinitelyDeleteThis(this->dyna.actor.params, globalCtx->sceneNum, this->dyna.actor.home.pos));
} }
if (Flags_GetTreasure(globalCtx, this->dyna.actor.params & 0x1F)) { if (Flags_GetTreasure(globalCtx, this->dyna.actor.params & 0x1F)) {
EnBox_SetupAction(this, EnBox_Open); EnBox_SetupAction(this, EnBox_Open);