mirror of
https://github.com/zeldaret/st
synced 2026-08-05 09:34:10 -04:00
Decompiling some actors and objects of overlay 031 (#123)
* feat: decompiling skdo * feat: update * fix: match back .data of doors * feat: fully decompiled SWCH for eur missing bss for JP * feat: increase matching code * feat: decompile most part of SCCN * feat: update * feat: progress sccn jap data * feat: progress decompiling * fix: build issues * feat: increase matching * refactor: rename BLST to Blast * feat: increase grss * refactor: rename unkgrss to grass * refactor: rename id * refactor: change to fx32 * feat: complete RMTG actor * refactor: use ARRAY_LENGTH macro
This commit is contained in:
@@ -62,16 +62,16 @@ void ActorUnkEFIK::vfunc_20() {
|
||||
|
||||
for (j = bStack_3c[0]; j < bStack_3e[0]; j++) {
|
||||
for (k = bStack_3c[1]; k < bStack_3e[1]; k++) {
|
||||
u8 bStack_40[2];
|
||||
bStack_40[0] = j;
|
||||
bStack_40[1] = k;
|
||||
Vec2bCpp bStack_40;
|
||||
bStack_40.x = j;
|
||||
bStack_40.y = k;
|
||||
|
||||
if (pUVar5->func_ov000_02080180(bStack_40) == 0x38) {
|
||||
if (pUVar5->func_ov000_02080180(&bStack_40) == 0x38) {
|
||||
u16 random = gRandom.Next32(6);
|
||||
|
||||
if (random == 0) {
|
||||
VecFx32 vec;
|
||||
pUVar5->func_ov000_020808f4(&vec, bStack_40, 0);
|
||||
pUVar5->func_ov000_020808f4(&vec, &bStack_40, 0);
|
||||
data_027e0cec->func_ov000_020a0220(&this->mUnk_98, &vec);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, void *);
|
||||
extern "C" void func_01ffb9cc(VecFx32 *, VecFx32 *);
|
||||
extern "C" u16 func_01ffbbe0(fx32 x, fx32 z);
|
||||
extern "C" void func_01ffecdc(unk32 param1, Cylinder *param2);
|
||||
extern "C" unk32 func_01ffecdc(unk32 param1, Cylinder *param2);
|
||||
extern "C" bool func_01ffd768(unk32, void *, void *, unk8);
|
||||
extern "C" void func_01fff6d0(void *, VecFx32 *param1, s32 *param2, s32 *param3);
|
||||
|
||||
MapObject::MapObject() {
|
||||
this->mUnk_10 = NULL;
|
||||
this->mUnk_16 = -1;
|
||||
this->mState = MapObjState_None;
|
||||
this->mFlags[0] = 0;
|
||||
this->mUnk_20.Init();
|
||||
*(u32 *) &this->mUnk_38 = 0;
|
||||
@@ -170,7 +170,7 @@ void MapObject::func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2bCpp *param3
|
||||
}
|
||||
}
|
||||
|
||||
void MapObject::func_ov000_0209d3b4(unk32 param1, fx32 size) {
|
||||
unk32 MapObject::func_ov000_0209d3b4(unk32 param1, fx32 size) {
|
||||
Cylinder spC;
|
||||
|
||||
if (this->mUnk_10 != NULL) {
|
||||
@@ -182,7 +182,7 @@ void MapObject::func_ov000_0209d3b4(unk32 param1, fx32 size) {
|
||||
VecFx32_Add(&spC.pos, &this->mPos, &spC.pos);
|
||||
spC.size += size;
|
||||
|
||||
func_01ffecdc(param1, &spC);
|
||||
return func_01ffecdc(param1, &spC);
|
||||
}
|
||||
|
||||
struct stack_struct {
|
||||
|
||||
@@ -24,7 +24,7 @@ MapObject *MapObjectManager::AllocateMapObject(MapObjectId mapObjId, Vec2b param
|
||||
spawnData.pos.x = param2.x;
|
||||
spawnData.pos.y = param2.y;
|
||||
|
||||
data_027e0cd8->mUnk_0C->func_ov000_020808f4(&sp14, (void *) ¶m2, param5);
|
||||
data_027e0cd8->mUnk_0C->func_ov000_020808f4(&sp14, (Vec2bCpp *) ¶m2, param5);
|
||||
|
||||
UnkStruct_ov000_020b5d34_00 args;
|
||||
args.mUnk_00 = (unk32 *) &spawnData;
|
||||
|
||||
@@ -113,9 +113,9 @@ bool MapObjectSwitchStep::vfunc_00(void) {
|
||||
this->mUnk_18[1] = 1;
|
||||
|
||||
if (this->func_ov000_0209d29c(0)) {
|
||||
this->func_ov000_0209e11c(2, 1);
|
||||
this->func_ov000_0209e11c(MapObjSwitchStepState_2, 1);
|
||||
} else {
|
||||
this->func_ov000_0209e11c(0, 1);
|
||||
this->func_ov000_0209e11c(MapObjSwitchStepState_0, 1);
|
||||
}
|
||||
|
||||
if (data_027e09a4->mUnk_00.sceneIndex >= SceneIndex_battle01 && data_027e09a4->mUnk_00.sceneIndex < SceneIndex_Max) {
|
||||
@@ -126,14 +126,14 @@ bool MapObjectSwitchStep::vfunc_00(void) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void MapObjectSwitchStep::func_ov000_0209e11c(unk32 param1, unk32 param2) {
|
||||
this->mUnk_16 = param1;
|
||||
void MapObjectSwitchStep::func_ov000_0209e11c(MapObjState state, unk32 param2) {
|
||||
this->mState = state;
|
||||
this->mUnk_E6 = -1;
|
||||
this->mUnk_E4 = 0;
|
||||
this->mUnk_A4.func_01ffc3b4();
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
switch (this->mState) {
|
||||
case MapObjSwitchStepState_0:
|
||||
if (param2 == 0) {
|
||||
this->func_ov000_0209d2c4(0, false);
|
||||
data_027e09a8->func_ov000_02071b30(0x123, &this->mPos, 0);
|
||||
@@ -143,13 +143,13 @@ void MapObjectSwitchStep::func_ov000_0209e11c(unk32 param1, unk32 param2) {
|
||||
this->mUnk_40.mUnk_60 = 0;
|
||||
this->mUnk_A4.func_ov000_020577f8(0);
|
||||
break;
|
||||
case 1:
|
||||
case MapObjSwitchStepState_1:
|
||||
this->mUnk_E8 = 0;
|
||||
data_027e09a8->func_ov000_02071b30(0x121, &this->mPos, 0);
|
||||
this->mUnk_A4.func_ov000_020577f8(0);
|
||||
this->func_ov000_0209e11c(2, 0);
|
||||
break;
|
||||
case 2:
|
||||
case MapObjSwitchStepState_2:
|
||||
this->mUnk_40.mUnk_60 = -0x19A;
|
||||
this->func_ov000_0209d2c4(0, true);
|
||||
this->mUnk_40.mUnk_62 = 0;
|
||||
@@ -167,7 +167,7 @@ void MapObjectSwitchStep::func_ov000_0209e11c(unk32 param1, unk32 param2) {
|
||||
|
||||
this->mUnk_A4.func_ov000_020577f8(0x1000);
|
||||
break;
|
||||
case 3:
|
||||
case MapObjSwitchStepState_3:
|
||||
this->func_ov000_0209d2c4(0, false);
|
||||
break;
|
||||
default:
|
||||
@@ -176,10 +176,10 @@ void MapObjectSwitchStep::func_ov000_0209e11c(unk32 param1, unk32 param2) {
|
||||
}
|
||||
|
||||
void MapObjectSwitchStep::vfunc_20(void) {
|
||||
switch (this->mUnk_16) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
switch (this->mState) {
|
||||
case MapObjSwitchStepState_1:
|
||||
case MapObjSwitchStepState_2:
|
||||
case MapObjSwitchStepState_3:
|
||||
break;
|
||||
default:
|
||||
this->func_ov000_0209e11c(1, 0);
|
||||
|
||||
@@ -308,10 +308,10 @@ BOOL ZMB_ParseActorList(ZMBFileInfos *pFileInfos, ZMBSectionActorList *pSection,
|
||||
local_24.y = 0x7FFFEFFF;
|
||||
local_24.y = pDst->vfunc_28(&local_24, 0x01, 0x00);
|
||||
|
||||
u8 bStack_40[2];
|
||||
bStack_40[0] = posX;
|
||||
bStack_40[1] = posY;
|
||||
unk32 value = pDst->func_ov000_02080180(bStack_40);
|
||||
Vec2bCpp bStack_40;
|
||||
bStack_40.x = posX;
|
||||
bStack_40.y = posY;
|
||||
unk32 value = pDst->func_ov000_02080180(&bStack_40);
|
||||
|
||||
if (value == 0x14 || value == 0x47) {
|
||||
local_24.y = 0;
|
||||
|
||||
@@ -0,0 +1,164 @@
|
||||
#include "Actor/ActorBlast.hpp"
|
||||
|
||||
#include "Actor/ActorManager.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09bc.hpp"
|
||||
#include "Unknown/UnkStruct_027e09c0.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cd8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
|
||||
struct UnkStruct_ov031_020e5d18_00 {
|
||||
/* 00 */ Actor *mUnk_00;
|
||||
/* 04 */ STRUCT_PAD(0x04, 0x18);
|
||||
/* 18 */
|
||||
};
|
||||
|
||||
extern "C" VecFx32 data_027e07d4;
|
||||
|
||||
extern "C" void func_01ffe6c4(UnkStruct_ov031_020e5d18_00 *, ActorRef, VecFx32 *, VecFx32 *, s32, VecFx32 *,
|
||||
UnkStruct_ov031_Items_00_Base *);
|
||||
|
||||
DECL_PROFILE(ActorProfileBlast);
|
||||
|
||||
Actor *ActorProfileBlast::Create() {
|
||||
return new(HeapIndex_2) ActorBlast();
|
||||
}
|
||||
|
||||
ActorProfileBlast::ActorProfileBlast() :
|
||||
ActorProfile(ActorId_Blast) {
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_04.pos);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool ActorBlast_E8::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2) {}
|
||||
|
||||
ActorBlast::ActorBlast() :
|
||||
mUnk_94(FLOAT_TO_FX32(0.625f)),
|
||||
mUnk_98(0x0),
|
||||
mUnk_9A(0x18),
|
||||
mUnk_E8(this) {}
|
||||
|
||||
bool ActorBlast::vfunc_18(unk32 param1) {
|
||||
this->mPos.y += FLOAT_TO_FX32(0.5f);
|
||||
|
||||
this->mUnk_C8 = *this->mUnk_34;
|
||||
VecFx32_Add(&this->mUnk_C8.pos, &this->mPos, &this->mUnk_C8.pos);
|
||||
|
||||
this->mUnk_D8 = *this->mUnk_30;
|
||||
VecFx32_Add(&this->mUnk_D8.pos, &this->mPos, &this->mUnk_D8.pos);
|
||||
|
||||
data_027e09a8->func_ov000_02071b30(0xF3, &this->mPos, 0x0);
|
||||
data_027e09a8->func_ov000_02071eac(&this->mPos);
|
||||
|
||||
if (this->mUnk_5C.mParams[1] == 0x1) {
|
||||
this->mUnk_F4 = FLOAT_TO_FX32(0.2f);
|
||||
this->mUnk_F0 = FLOAT_TO_FX32(1.5f);
|
||||
} else {
|
||||
this->mUnk_F4 = FLOAT_TO_FX32(0.1f);
|
||||
this->mUnk_F0 = FLOAT_TO_FX32(1.0f);
|
||||
}
|
||||
|
||||
data_027e09bc->mUnk_0C->func_ov000_0207a1e0(0x6);
|
||||
|
||||
if (this->mUnk_5C.mParams[0] != 0x0) {
|
||||
data_027e0cec->func_ov000_0209feac(0x812, &this->mPos, 0x2, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x813, &this->mPos, 0x2, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x814, &this->mPos, 0x2, 0x0, 0x0);
|
||||
} else {
|
||||
data_027e0cec->func_ov000_0209feac(0x80B, &this->mPos, 0x2, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x80C, &this->mPos, 0x2, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x80D, &this->mPos, 0x2, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x80E, &this->mPos, 0x2, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x80F, &this->mPos, 0x2, 0x0, 0x0);
|
||||
}
|
||||
|
||||
UnkStruct_027e0cd8_0C_Base *data = data_027e0cd8->mUnk_0C;
|
||||
if (data->mUnk_110 == 0x7 && data->func_ov000_0208217c(&this->mPos, 0x1)) {
|
||||
ActorParams actorParams;
|
||||
ActorRef actorRef;
|
||||
actorParams.mUnk_28 = 0x0;
|
||||
|
||||
actorParams.func_ov000_020975f8();
|
||||
actorParams.mUnk_28 = this->mRef;
|
||||
|
||||
VecFx32_Copy(&this->mPos, &actorParams.mInitialPos);
|
||||
actorParams.mParams[0] = 0x1;
|
||||
Actor::func_ov000_020973f4(&actorRef, &data_ov000_020b539c_eur, ActorId_FLDK, &actorParams, 0x0);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void ActorBlast::vfunc_20() {
|
||||
fx32 f0 = this->mUnk_F0;
|
||||
fx32 newVal = this->mUnk_94 + this->mUnk_F4;
|
||||
this->mUnk_94 = newVal;
|
||||
if (newVal <= f0) {
|
||||
this->mUnk_C8.size = newVal;
|
||||
this->mUnk_D8.size = newVal;
|
||||
} else {
|
||||
this->mUnk_94 = f0;
|
||||
this->mUnk_C8.size = ~FLOAT_TO_FX32(0.0f);
|
||||
}
|
||||
if (this->IsInternalTimerOut()) {
|
||||
this->func_ov000_020984d0();
|
||||
return;
|
||||
}
|
||||
if (this->mUnk_C8.size <= FLOAT_TO_FX32(0.0f)) {
|
||||
return;
|
||||
}
|
||||
this->mUnk_9C.mUnk_0C = this->mUnk_C8;
|
||||
|
||||
data_027e09c0->func_ov000_0207e58c(this->mRef, 0x0, 0xC, &this->mUnk_9C);
|
||||
|
||||
UnkStruct_ov031_020e5d18_00 sp14;
|
||||
sp14.mUnk_00 = NULL;
|
||||
|
||||
func_01ffe6c4(&sp14, this->mRef, &data_027e07d4, &data_027e07d4, 0x1C, NULL, &this->mUnk_E8);
|
||||
|
||||
sp14.mUnk_00->func_ov000_0207df88(&this->mUnk_C8, 0x0);
|
||||
|
||||
if (this->func_ov000_0209867c(0x0) < 0x1000) {
|
||||
data_027e09c0->func_ov000_0207e458(0x4, 0x0, &this->mUnk_C8.pos, 0x1, NULL, 0x1);
|
||||
}
|
||||
|
||||
if (!data_027e0ce0->func_01fff1a4()) {
|
||||
return;
|
||||
}
|
||||
data_027e09c0->func_ov000_0207e458(0x2, 0x1A, &this->mUnk_C8.pos, 0x2, NULL, 0x0);
|
||||
}
|
||||
|
||||
void ActorBlast::vfunc_24() {
|
||||
fx32 f0 = this->mUnk_F0;
|
||||
fx32 newVal = this->mUnk_94 + this->mUnk_F4;
|
||||
if (newVal >= f0) {
|
||||
newVal = f0;
|
||||
}
|
||||
this->mUnk_94 = newVal;
|
||||
if (!this->IsInternalTimerOut()) {
|
||||
return;
|
||||
}
|
||||
this->func_ov000_020984d0();
|
||||
}
|
||||
|
||||
fx32 ActorBlast::func_ov031_020e3b94() {
|
||||
return FLOAT_TO_FX32(0.5f);
|
||||
}
|
||||
|
||||
void ActorBlast::func_ov031_020e3b9c(unk16 param1, unk16 param2) {
|
||||
ActorParams actorParams;
|
||||
ActorRef ref;
|
||||
|
||||
actorParams.mUnk_28 = 0x0;
|
||||
actorParams.func_ov000_020975f8();
|
||||
actorParams.func_ov000_020975f8();
|
||||
|
||||
actorParams.mUnk_28 = this->mRef;
|
||||
VecFx32_Copy(&this->mPos, &actorParams.mInitialPos);
|
||||
|
||||
actorParams.mParams[0] = param1;
|
||||
actorParams.mParams[1] = param2;
|
||||
|
||||
this->func_ov000_020973f4(&ref, &data_ov000_020b539c_eur, ActorId_Blast, &actorParams, 0x0);
|
||||
}
|
||||
@@ -23,7 +23,7 @@ typedef struct {
|
||||
|
||||
extern "C" void func_01ffce1c(unk16 *, unk16 *);
|
||||
extern "C" int func_01ffcea0(unk32, UnkStruct_ov031_020eeee8 *);
|
||||
extern "C" void func_01ffedac(u16 *, VecFx32 *);
|
||||
extern "C" void func_01ffedac(Vec2bCpp *, VecFx32 *);
|
||||
extern "C" void func_01fff17c(UnkStruct_ov031_020eeee8 *, UnkStruct_027e0ce0 *, unk32);
|
||||
extern "C" void func_02018114(unk16 *, unk16);
|
||||
extern "C" void func_02098388(void);
|
||||
@@ -81,7 +81,7 @@ ActorHeart::ActorHeart() :
|
||||
|
||||
this->mUnk_98.mUnk_04 = 0x13100;
|
||||
this->mUnk_40 = &this->mUnk_C8;
|
||||
u16 sp0;
|
||||
Vec2bCpp sp0;
|
||||
func_01ffedac(&sp0, &this->mPos);
|
||||
|
||||
if (data_027e0cd8->mUnk_0C->func_ov000_02080180(&sp0) == 0x5) {
|
||||
|
||||
@@ -169,7 +169,7 @@ void ActorItemBoomerang::vfunc_20() {
|
||||
}
|
||||
}
|
||||
MapObjectId objectId = object->GetMapObjectId();
|
||||
if (objectId != MapObjectId_SKDI && objectId != MapObjectId_SWHT && objectId != MapObjectId_TSUB) {
|
||||
if (objectId != MapObjectId_SKDI && objectId != MapObjectId_SWHT && objectId != MapObjectId_Pot) {
|
||||
this->func_ov031_020e49b0(0x8D70);
|
||||
}
|
||||
return;
|
||||
@@ -405,7 +405,7 @@ bool ActorItemBoomerang_11C::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, un
|
||||
case MapObjectId_SKDI:
|
||||
case MapObjectId_SWHT:
|
||||
data_027e0d2c->func_ov031_020d95c8(param2);
|
||||
case MapObjectId_TSUB:
|
||||
case MapObjectId_Pot:
|
||||
mapObject->vfunc_1C(this->mUnk_08->mRef, 0xC, &this->mUnk_08->mVel);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "Unknown/UnkStruct_027e0d34.hpp"
|
||||
#include "versions.h"
|
||||
|
||||
extern "C" void func_01ffedac(u16 *, VecFx32 *);
|
||||
extern "C" void func_01ffedac(Vec2bCpp *, VecFx32 *);
|
||||
extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0C_Base *, VecFx32 *);
|
||||
extern "C" void func_ov000_0205c1f0(unk32 *, u16);
|
||||
extern "C" void func_ov000_0205c204(unk32 *, VecFx32 *, unk32, unk32, unk32);
|
||||
@@ -165,7 +165,7 @@ ActorItemDrop::ActorItemDrop() :
|
||||
this->mUnk_B4.mUnk_04 = 0x13100;
|
||||
this->mUnk_40 = &this->mUnk_E4;
|
||||
|
||||
u16 sp0;
|
||||
Vec2bCpp sp0;
|
||||
func_01ffedac(&sp0, &this->mPos);
|
||||
|
||||
if (data_027e0cd8->mUnk_0C->func_ov000_02080180(&sp0) == 0x5) {
|
||||
|
||||
@@ -33,7 +33,7 @@ Actor *ActorProfileItemTornado::Create() {
|
||||
}
|
||||
|
||||
ActorProfileItemTornado::ActorProfileItemTornado() :
|
||||
ActorProfile(ActorId_ITTD) {
|
||||
ActorProfile(ActorId_ItemTornado) {
|
||||
this->mUnk_04.Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.25f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.20f));
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ ActorProfilePot::ActorProfilePot() :
|
||||
}
|
||||
|
||||
ActorPot::ActorPot() :
|
||||
mUnk_110(G3d_GetModelPtr(data_ov000_020b5d34.GetProfileFromId(MapObjectId_TSUB)->vfunc_04()->mUnk_50), 0x01) {}
|
||||
mUnk_110(G3d_GetModelPtr(data_ov000_020b5d34.GetProfileFromId(MapObjectId_Pot)->vfunc_04()->mUnk_50), 0x01) {}
|
||||
|
||||
bool ActorPot::vfunc_18(unk32 param1) {
|
||||
Actor_ov031_02113fd4::vfunc_18(param1);
|
||||
|
||||
@@ -56,7 +56,7 @@ Actor *ActorProfileRollingStone::Create() {
|
||||
}
|
||||
|
||||
ActorProfileRollingStone::ActorProfileRollingStone() :
|
||||
ActorProfile_Derived1(ActorId_RLST) {
|
||||
ActorProfile_Derived1(ActorId_RollingStone) {
|
||||
this->mUnk_04.Init(FLOAT_TO_FX32(0.8f));
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ bool ActorRollingStone_104::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk
|
||||
void ActorRollingStone_104::vfunc_10() {}
|
||||
|
||||
void ActorRollingStone_D4::vfunc_10(Actor *param1) {
|
||||
if (param1->GetActorId() != ActorId_RLST) {
|
||||
if (param1->GetActorId() != ActorId_RollingStone) {
|
||||
return;
|
||||
}
|
||||
this->mUnk_2C->SetState(ActorRollingStoneState_6);
|
||||
@@ -388,7 +388,7 @@ void ActorRollingStone::func_ov031_020f8f30() {
|
||||
sp14.mParams[0] = 0x1;
|
||||
|
||||
ActorRef ref;
|
||||
this->func_ov000_020973f4(&ref, &data_ov000_020b539c_eur, ActorId_RLST, &sp14, 0x0);
|
||||
this->func_ov000_020973f4(&ref, &data_ov000_020b539c_eur, ActorId_RollingStone, &sp14, 0x0);
|
||||
this->mUnk_150 = 0;
|
||||
this->mUnk_152 = this->mUnk_5C.mParams[1];
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ Actor *ActorProfileShotArrow::Create() {
|
||||
}
|
||||
|
||||
ActorProfileShotArrow::ActorProfileShotArrow() :
|
||||
ActorProfile(ActorId_AROW) {
|
||||
ActorProfile(ActorId_ShotArrow) {
|
||||
this->mUnk_04.Init(FLOAT_TO_FX32(0.2f));
|
||||
}
|
||||
|
||||
@@ -1039,7 +1039,7 @@ void ActorShotArrow_194::vfunc_10(Actor *actor) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (actor->GetActorId() == ActorId_AROW) {
|
||||
if (actor->GetActorId() == ActorId_ShotArrow) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "Actor/ActorUnkBLST.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
DECL_PROFILE(ActorProfileUnkBLST);
|
||||
|
||||
Actor *ActorProfileUnkBLST::Create() {
|
||||
return new(HeapIndex_2) ActorUnkBLST();
|
||||
}
|
||||
|
||||
ActorProfileUnkBLST::ActorProfileUnkBLST() :
|
||||
ActorProfile(ActorId_BLST) {}
|
||||
|
||||
ActorUnkBLST::ActorUnkBLST() {}
|
||||
|
||||
void ActorUnkBLST::func_ov031_020e351c(void) {}
|
||||
void ActorUnkBLST::func_ov031_020e373c(void) {}
|
||||
void ActorUnkBLST::func_ov031_020e3750(void) {}
|
||||
void ActorUnkBLST::func_ov031_020e39c4(void) {}
|
||||
void ActorUnkBLST::func_ov031_020e3b44(void) {}
|
||||
void ActorUnkBLST::func_ov031_020e3b94(void) {}
|
||||
void ActorUnkBLST::func_ov031_020e3b9c(void) {}
|
||||
void ActorUnkBLST::func_ov031_020e3c60(void) {}
|
||||
|
||||
ActorUnkBLST::~ActorUnkBLST() {}
|
||||
ActorProfileUnkBLST::~ActorProfileUnkBLST() {}
|
||||
@@ -1,7 +1,12 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "Actor/ActorUnkRMTG.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09bc.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cd8.hpp"
|
||||
|
||||
extern "C" const char data_ov031_02110ad0;
|
||||
|
||||
extern "C" void func_01ffedac(Vec2bCpp *, VecFx32 *);
|
||||
extern "C" unk32 func_ov000_02077590(unk32);
|
||||
|
||||
DECL_PROFILE(ActorProfileUnkRMTG);
|
||||
|
||||
@@ -12,11 +17,33 @@ Actor *ActorProfileUnkRMTG::Create() {
|
||||
ActorProfileUnkRMTG::ActorProfileUnkRMTG() :
|
||||
ActorProfile_Derived1(ActorId_RMTG) {}
|
||||
|
||||
ActorUnkRMTG::ActorUnkRMTG() {}
|
||||
ActorUnkRMTG::ActorUnkRMTG() :
|
||||
mUnk_94(NULL) {}
|
||||
|
||||
void ActorUnkRMTG::func_ov031_020ef8a0(void) {}
|
||||
void ActorUnkRMTG::func_ov031_020ef958(void) {}
|
||||
void ActorUnkRMTG::func_ov031_020ef990(void) {}
|
||||
bool ActorUnkRMTG::vfunc_18(unk32 param1) {
|
||||
this->mPos.x -= FLOAT_TO_FX32(0.5f);
|
||||
this->mPos.z -= FLOAT_TO_FX32(0.5f);
|
||||
|
||||
ActorUnkRMTG::~ActorUnkRMTG() {}
|
||||
ActorProfileUnkRMTG::~ActorProfileUnkRMTG() {}
|
||||
UnkStruct_027e0cd8_0C_Base *data = data_027e0cd8->mUnk_0C;
|
||||
|
||||
Vec2bCpp sp0;
|
||||
func_01ffedac(&sp0, &this->mPos);
|
||||
|
||||
this->mPos.y = data->func_01ffedf4(&sp0);
|
||||
data->mUnk_12D = true;
|
||||
|
||||
u16 var_6C = this->mUnk_5C.mParams[0];
|
||||
this->mUnk_94.vfunc_08(
|
||||
GetModelFromProfile3(&GET_PROFILE(ActorProfileUnkRMTG)->mUnk_3C, &data_ov031_02110ad0 + (var_6C << 4)));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void ActorUnkRMTG::vfunc_1C() {
|
||||
UnkStruct_027e09bc_0C *data = data_027e09bc->mUnk_0C;
|
||||
data->func_ov000_0207834c(&this->mPos, func_ov000_02077590(0x7), 0x0);
|
||||
}
|
||||
|
||||
void ActorUnkRMTG::vfunc_2C(unk32 param1) {
|
||||
this->mUnk_94.vfunc_18(&this->mPos);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "Actor/ActorUnkSCCN.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09c0.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cd8.hpp"
|
||||
|
||||
extern "C" void func_01ffd054(VecFx32 *, VecFx32 *);
|
||||
|
||||
DECL_PROFILE(ActorProfileUnkSCCN);
|
||||
|
||||
@@ -14,7 +16,64 @@ ActorProfileUnkSCCN::ActorProfileUnkSCCN() :
|
||||
|
||||
ActorUnkSCCN::ActorUnkSCCN() {}
|
||||
|
||||
void ActorUnkSCCN::func_ov031_020efaa0(void) {}
|
||||
// non-matching
|
||||
bool ActorUnkSCCN::vfunc_18(unk32 param1) {
|
||||
if (this->mUnk_5C.mParams[1] == 0x0) {
|
||||
return false;
|
||||
}
|
||||
UnkStruct_027e0cd8_0C_Base *data_0C = data_027e0cd8->mUnk_0C;
|
||||
UnkStruct_func_ov000_02080620 *unk = data_027e0cd8->mUnk_0C->func_ov000_02080620();
|
||||
if (unk == NULL) {
|
||||
return false;
|
||||
}
|
||||
if (!unk->vfunc_04()) {
|
||||
VecFx32 vec1;
|
||||
VecFx32 vec2;
|
||||
vec2 = unk->mUnk_14;
|
||||
vec1 = unk->mUnk_20;
|
||||
func_01ffd054(&vec2, &this->mPos);
|
||||
this->mPos.y = data_0C->vfunc_28(&this->mPos, 0x1, 0x0);
|
||||
|
||||
ActorUnkSCCN::~ActorUnkSCCN() {}
|
||||
ActorProfileUnkSCCN::~ActorProfileUnkSCCN() {}
|
||||
VecFx32 vec3;
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &vec3);
|
||||
vec3.x = -this->mPos.x;
|
||||
vec3.z = -this->mPos.z;
|
||||
|
||||
VecFx32_Add(&vec2, &vec3, &vec2);
|
||||
VecFx32_Add(&vec1, &vec3, &vec1);
|
||||
|
||||
this->mUnk_94.mUnk_0C = vec2;
|
||||
this->mUnk_94.mUnk_18 = vec1;
|
||||
}
|
||||
this->mUnk_94.mUnk_08 = (((0x04407007 | ((u8) this->mUnk_5C.mParams[0] << 0x10)) & ~0x7000) | 0x3000);
|
||||
this->mUnk_94.mUnk_04 |= 0x2;
|
||||
if (this->mUnk_5C.mParams[2] != 0) {
|
||||
this->mUnk_94.mUnk_07 = 0x13;
|
||||
} else {
|
||||
unk32 var;
|
||||
switch (((u32) (this->mAngle + DEG_TO_ANG(45)) << 0x10) >> 0x1E) {
|
||||
case 0:
|
||||
var = 9;
|
||||
break;
|
||||
case 2:
|
||||
var = 8;
|
||||
break;
|
||||
case 3:
|
||||
var = 0x22;
|
||||
break;
|
||||
case 1:
|
||||
var = 0x23;
|
||||
break;
|
||||
default:
|
||||
var = 7;
|
||||
break;
|
||||
}
|
||||
this->mUnk_94.mUnk_07 = var;
|
||||
}
|
||||
this->mUnk_B8.mUnk_04 = this->mRef;
|
||||
this->mUnk_B8.mUnk_08 = &this->mPos;
|
||||
this->mUnk_B8.mUnk_0C = &this->mUnk_94;
|
||||
|
||||
data_027e09c0->func_ov000_0207e240(&this->mUnk_B8);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "Actor/ActorUnkSKDO.hpp"
|
||||
|
||||
#include "Map/MapObjectId.hpp"
|
||||
#include "MapObject/MapObjectManager.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b34c4.hpp"
|
||||
|
||||
extern "C" bool func_ov000_0209c348();
|
||||
extern "C" fx32 func_01ffb9cc(VecFx32 *, VecFx32 *);
|
||||
|
||||
DECL_PROFILE(ActorProfileUnkSKDO);
|
||||
|
||||
@@ -12,13 +17,42 @@ Actor *ActorProfileUnkSKDO::Create() {
|
||||
ActorProfileUnkSKDO::ActorProfileUnkSKDO() :
|
||||
ActorProfile(ActorId_SKDO) {}
|
||||
|
||||
ActorUnkSKDO::ActorUnkSKDO() {}
|
||||
ActorUnkSKDO::ActorUnkSKDO() :
|
||||
mUnk_98(NULL) {}
|
||||
|
||||
void ActorUnkSKDO::func_ov031_02106de0(void) {}
|
||||
void ActorUnkSKDO::func_ov031_02106de8(void) {}
|
||||
void ActorUnkSKDO::func_ov031_02106e58(void) {}
|
||||
void ActorUnkSKDO::func_ov031_02106e90(void) {}
|
||||
void ActorUnkSKDO::func_ov031_02106e98(void) {}
|
||||
bool ActorUnkSKDO::vfunc_18(unk32 param1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
ActorUnkSKDO::~ActorUnkSKDO() {}
|
||||
ActorProfileUnkSKDO::~ActorProfileUnkSKDO() {}
|
||||
void ActorUnkSKDO::vfunc_1C() {
|
||||
ActorUnkSKDO_ov031_02115ce8 stack(MapObjectId_SKDI);
|
||||
stack.mUnk_08 = this->mPos;
|
||||
stack.mUnk_14 = FLOAT_TO_FX32(2.0f);
|
||||
|
||||
MapObject **mapObject = gpMapObjManager->func_01fff520(&stack, gpMapObjManager->mMapObjTable);
|
||||
|
||||
if (gpMapObjManager->mUnk_08 != mapObject) {
|
||||
this->mUnk_98 = (MapObjectUnkSKDI *) *mapObject;
|
||||
}
|
||||
}
|
||||
|
||||
void ActorUnkSKDO::vfunc_20() {
|
||||
unk32 var2 = 0x0;
|
||||
if (this->mUnk_98->vfunc_40() == 0x2) {
|
||||
var2 = 0x1;
|
||||
}
|
||||
this->func_ov000_02098a88(0x0, var2);
|
||||
}
|
||||
|
||||
void ActorUnkSKDO::vfunc_54(unk32 param1) {
|
||||
this->mUnk_94 = param1;
|
||||
}
|
||||
|
||||
bool ActorUnkSKDO_ov031_02115ce8::vfunc_00(MapObject *param1) {
|
||||
if (func_ov000_0209c348()) {
|
||||
if (func_01ffb9cc(¶m1->mPos, &this->mUnk_08) < this->mUnk_14) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "Actor/ActorUnkSWCH.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
DECL_PROFILE(ActorProfileUnkSWCH);
|
||||
|
||||
#if IS_JP
|
||||
unk8 data_ov031_02118a1c[0x24];
|
||||
#endif
|
||||
|
||||
Actor *ActorProfileUnkSWCH::Create() {
|
||||
return new(HeapIndex_2) ActorUnkSWCH();
|
||||
}
|
||||
@@ -12,11 +14,32 @@ Actor *ActorProfileUnkSWCH::Create() {
|
||||
ActorProfileUnkSWCH::ActorProfileUnkSWCH() :
|
||||
ActorProfile(ActorId_SWCH) {}
|
||||
|
||||
ActorUnkSWCH::ActorUnkSWCH() {}
|
||||
ActorUnkSWCH::ActorUnkSWCH() :
|
||||
mUnk_94(0x1) {}
|
||||
|
||||
void ActorUnkSWCH::func_ov031_020f7b0c(void) {}
|
||||
void ActorUnkSWCH::func_ov031_020f7b20(void) {}
|
||||
void ActorUnkSWCH::func_ov031_020f7b88(void) {}
|
||||
bool ActorUnkSWCH::vfunc_18(unk32 param1) {
|
||||
this->mUnk_98.mUnk_04 = 0x0;
|
||||
this->mUnk_98.mUnk_04 |= 0x10000;
|
||||
return true;
|
||||
}
|
||||
|
||||
ActorUnkSWCH::~ActorUnkSWCH() {}
|
||||
ActorProfileUnkSWCH::~ActorProfileUnkSWCH() {}
|
||||
void ActorUnkSWCH::vfunc_20() {
|
||||
if (!this->func_ov000_02098a60(0x0) && this->mUnk_5C.mUnk_1A[0] != 0x0) {
|
||||
return;
|
||||
}
|
||||
this->mUnk_3C = &this->mUnk_98;
|
||||
this->func_ov000_020989e0();
|
||||
if (!(this->mUnk_98.mUnk_08 & 0x3FFFF)) {
|
||||
return;
|
||||
}
|
||||
if (this->mUnk_98.mUnk_1C != 0x10) {
|
||||
return;
|
||||
}
|
||||
this->func_ov000_02098a88(0x1, 0x1);
|
||||
}
|
||||
|
||||
void ActorUnkSWCH::vfunc_2C(unk32 param1) {
|
||||
if (this->func_01fff5d0(param1, 0x0)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "Actor/ActorUnkTLKT.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0d34.hpp"
|
||||
|
||||
DECL_PROFILE(ActorProfileUnkTLKT);
|
||||
|
||||
@@ -14,13 +14,81 @@ ActorProfileUnkTLKT::ActorProfileUnkTLKT() :
|
||||
|
||||
ActorUnkTLKT::ActorUnkTLKT() {}
|
||||
|
||||
void ActorUnkTLKT::func_ov031_020e41ec(void) {}
|
||||
void ActorUnkTLKT::func_ov031_020e4238(void) {}
|
||||
void ActorUnkTLKT::func_ov031_020e4274(void) {}
|
||||
void ActorUnkTLKT::func_ov031_020e42ac(void) {}
|
||||
void ActorUnkTLKT::func_ov031_020e42f0(void) {}
|
||||
void ActorUnkTLKT::func_ov031_020e4320(void) {}
|
||||
void ActorUnkTLKT::func_ov031_020e4514(void) {}
|
||||
// non-matching
|
||||
ActorUnkTLKT::~ActorUnkTLKT() {
|
||||
if (this->mState == ActorUnkTLKTState_2) {
|
||||
this->func_ov031_020e4514();
|
||||
}
|
||||
}
|
||||
|
||||
ActorUnkTLKT::~ActorUnkTLKT() {}
|
||||
ActorProfileUnkTLKT::~ActorProfileUnkTLKT() {}
|
||||
void ActorUnkTLKT::vfunc_24() {
|
||||
switch (this->mState) {
|
||||
case ActorUnkTLKTState_0:
|
||||
this->vfunc_54();
|
||||
break;
|
||||
case ActorUnkTLKTState_1:
|
||||
this->vfunc_58();
|
||||
break;
|
||||
case ActorUnkTLKTState_4:
|
||||
this->func_ov031_020e4274();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ActorUnkTLKT::vfunc_58() {
|
||||
if (!data_027e09b8->func_ov000_020732ec(this->mUnk_9C.mUnk_04)) {
|
||||
return;
|
||||
}
|
||||
this->vfunc_60(ActorUnkTLKTState_2);
|
||||
}
|
||||
|
||||
void ActorUnkTLKT::func_ov031_020e4274() {
|
||||
if (data_027e0d34->func_ov031_020d9758()) {
|
||||
return;
|
||||
}
|
||||
data_027e09b8->func_ov000_020732fc(this->mUnk_9C.mUnk_04);
|
||||
}
|
||||
|
||||
void ActorUnkTLKT::vfunc_64() {
|
||||
switch (this->mState) {
|
||||
case ActorUnkTLKTState_1:
|
||||
this->vfunc_60(ActorUnkTLKTState_2);
|
||||
break;
|
||||
case ActorUnkTLKTState_3:
|
||||
this->vfunc_60(ActorUnkTLKTState_4);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void ActorUnkTLKT::vfunc_68() {
|
||||
if (this->mState == ActorUnkTLKTState_2) {
|
||||
this->func_ov031_020e4514();
|
||||
if (this->mState == ActorUnkTLKTState_3) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
this->func_ov031_020e3e6c();
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void ActorUnkTLKT::vfunc_60(ActorState state) {}
|
||||
|
||||
// non-matching
|
||||
void ActorUnkTLKT::func_ov031_020e4514() {
|
||||
u16 param = this->mUnk_5C.mParams[2];
|
||||
switch (param - (0xA * ((param >> 0x1F) + (param / 10)))) {
|
||||
case 0:
|
||||
this->func_ov000_02098a88(0x1, 0x1);
|
||||
return;
|
||||
case 1:
|
||||
this->vfunc_60(ActorUnkTLKTState_3);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -205,17 +205,17 @@ unk32 MapObjectChestBase::vfunc_28() {
|
||||
}
|
||||
|
||||
ItemId MapObjectChestBase::func_ov031_021037d0() {
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
switch (this->mState) {
|
||||
case MapObjChestBaseState_0:
|
||||
case MapObjChestBaseState_1:
|
||||
case MapObjChestBaseState_4:
|
||||
case MapObjChestBaseState_5:
|
||||
case MapObjChestBaseState_6:
|
||||
case MapObjChestBaseState_7:
|
||||
case MapObjChestBaseState_8:
|
||||
return ItemId_None;
|
||||
case 2:
|
||||
case 3:
|
||||
case MapObjChestBaseState_2:
|
||||
case MapObjChestBaseState_3:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -230,7 +230,7 @@ ItemId MapObjectChestBase::func_ov031_021037d0() {
|
||||
}
|
||||
|
||||
bool MapObjectChestBase::func_ov031_02103864() {
|
||||
return this->mUnk_16 == 8 ? true : false;
|
||||
return this->mState == MapObjChestBaseState_8 ? true : false;
|
||||
}
|
||||
|
||||
void MapObjectChestBase::func_ov031_02103878() {
|
||||
|
||||
@@ -108,21 +108,21 @@ void MapObjectDoorBase::func_ov031_020fbf10(bool param1, bool param2) {
|
||||
SET_FLAG(this->mFlags, MapObjFlag_5);
|
||||
|
||||
if (this->vfunc_64()) {
|
||||
this->vfunc_5C(8, 1);
|
||||
this->vfunc_5C(MapObjDoorBaseState_8, 1);
|
||||
|
||||
if (param2) {
|
||||
this->func_ov031_020fcd40();
|
||||
}
|
||||
} else {
|
||||
this->vfunc_5C(2, 1);
|
||||
this->vfunc_5C(MapObjDoorBaseState_2, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectDoorBase::vfunc_08() {
|
||||
this->vfunc_70();
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorBaseState_0:
|
||||
if (this->mUnk_80 > 0) {
|
||||
this->mUnk_80--;
|
||||
}
|
||||
@@ -132,7 +132,7 @@ void MapObjectDoorBase::vfunc_08() {
|
||||
}
|
||||
|
||||
if (this->mUnk_80 == 0) {
|
||||
this->vfunc_5C(1, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_1, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -143,65 +143,65 @@ void MapObjectDoorBase::vfunc_08() {
|
||||
}
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_68()) {
|
||||
this->vfunc_5C(3, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_3, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 1:
|
||||
case MapObjDoorBaseState_1:
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->mUnk_7A + this->mUnk_7C && this->vfunc_88()) {
|
||||
this->vfunc_58();
|
||||
this->vfunc_5C(2, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_2, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_68()) {
|
||||
this->vfunc_5C(3, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_3, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 2:
|
||||
case MapObjDoorBaseState_2:
|
||||
if (this->vfunc_68()) {
|
||||
this->vfunc_5C(3, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_3, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 3:
|
||||
case MapObjDoorBaseState_3:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= 0x1D) {
|
||||
this->vfunc_5C(4, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_4, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
case MapObjDoorBaseState_4:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= 0x28) {
|
||||
this->vfunc_5C(5, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_5, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 5:
|
||||
case MapObjDoorBaseState_5:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -228,36 +228,36 @@ void MapObjectDoorBase::vfunc_08() {
|
||||
|
||||
if (this->mUnk_82 >= 0x32) {
|
||||
this->mUnk_82 = 0x32;
|
||||
this->vfunc_5C(6, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_6, 0);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 6:
|
||||
case MapObjDoorBaseState_6:
|
||||
this->mUnk_82++;
|
||||
this->mUnk_84++;
|
||||
|
||||
if (this->mUnk_82 >= 0x32) {
|
||||
this->mUnk_82 = 0x32;
|
||||
this->vfunc_5C(7, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_7, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 7:
|
||||
case MapObjDoorBaseState_7:
|
||||
this->mUnk_82++;
|
||||
this->mUnk_84++;
|
||||
|
||||
if (this->mUnk_82 >= 0x50) {
|
||||
this->vfunc_5C(8, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_8, 0);
|
||||
}
|
||||
|
||||
// fallthrough
|
||||
case 8:
|
||||
case MapObjDoorBaseState_8:
|
||||
if (!this->vfunc_6C()) {
|
||||
break;
|
||||
}
|
||||
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_0, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -271,31 +271,31 @@ void MapObjectDoorBase::vfunc_40() {}
|
||||
void MapObjectDoorBase::vfunc_0C() {
|
||||
if (this->mUnk_74 >= 0 && data_027e09b8->func_ov000_020732ec(this->mUnk_74)) {
|
||||
this->vfunc_08();
|
||||
} else if (this->mUnk_16 == 2 || this->mUnk_16 == 8) {
|
||||
} else if (this->mState == MapObjDoorBaseState_2 || this->mState == MapObjDoorBaseState_8) {
|
||||
this->vfunc_08();
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectDoorBase::vfunc_60() {
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorBaseState_0:
|
||||
if (!this->mUnk_86 && !GET_FLAG(this->mFlags, MapObjFlag_1) && this->mUnk_6C <= FLOAT_TO_FX32(0.5f)) {
|
||||
this->func_ov031_020fcf0c(1);
|
||||
}
|
||||
this->vfunc_54();
|
||||
break;
|
||||
case 2:
|
||||
case MapObjDoorBaseState_2:
|
||||
if (this->mUnk_86 && !GET_FLAG(this->mFlags, MapObjFlag_1) && this->mUnk_6C <= FLOAT_TO_FX32(0.5f)) {
|
||||
this->func_ov031_020fcf0c(1);
|
||||
this->vfunc_58();
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case MapObjDoorBaseState_5:
|
||||
if (GET_FLAG(this->mFlags, MapObjFlag_1) && this->mUnk_6C >= FLOAT_TO_FX32(0.5f)) {
|
||||
this->func_ov031_020fcf0c(0);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case MapObjDoorBaseState_1:
|
||||
if (this->mUnk_86) {
|
||||
this->func_ov031_020fcf0c(1);
|
||||
this->vfunc_58();
|
||||
@@ -319,13 +319,13 @@ struct UnkStackStruct {
|
||||
u16 mUnk_1E;
|
||||
};
|
||||
|
||||
void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
void MapObjectDoorBase::vfunc_5C(MapObjState state, unk32 param2) {
|
||||
UnkStackStruct1 auStack_5c;
|
||||
UnkStackStruct1 auStack_9c;
|
||||
this->mUnk_16 = param1;
|
||||
this->mState = state;
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorBaseState_0:
|
||||
if (this->mUnk_88) {
|
||||
this->vfunc_74();
|
||||
}
|
||||
@@ -395,7 +395,7 @@ void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
this->func_ov000_0209d614(0);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case MapObjDoorBaseState_1:
|
||||
if (this->mUnk_91) {
|
||||
this->vfunc_48();
|
||||
}
|
||||
@@ -403,11 +403,11 @@ void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
this->mUnk_82 = 0;
|
||||
this->vfunc_7C();
|
||||
break;
|
||||
case 2:
|
||||
case MapObjDoorBaseState_2:
|
||||
this->mUnk_84 = 0x0D;
|
||||
this->func_ov031_020fcf0c(1);
|
||||
break;
|
||||
case 3:
|
||||
case MapObjDoorBaseState_3:
|
||||
this->vfunc_7C();
|
||||
|
||||
this->mUnk_80 =
|
||||
@@ -484,7 +484,7 @@ void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
case MapObjDoorBaseState_4:
|
||||
this->vfunc_7C();
|
||||
|
||||
if (this->mUnk_8A && this->mUnk_86 && param2 == 0) {
|
||||
@@ -505,17 +505,17 @@ void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case MapObjDoorBaseState_5:
|
||||
if (this->mUnk_88) {
|
||||
this->vfunc_74();
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
case MapObjDoorBaseState_6:
|
||||
this->vfunc_7C();
|
||||
break;
|
||||
case 7:
|
||||
case MapObjDoorBaseState_7:
|
||||
break;
|
||||
case 8:
|
||||
case MapObjDoorBaseState_8:
|
||||
this->vfunc_7C();
|
||||
|
||||
if (param2 == 0) {
|
||||
@@ -621,30 +621,30 @@ void MapObjectDoorBase::func_ov031_020fcd40() {
|
||||
}
|
||||
|
||||
void MapObjectDoorBase::vfunc_70() {
|
||||
switch (this->mUnk_16) {
|
||||
case 5:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorBaseState_5:
|
||||
if (this->mUnk_80 > 0) {
|
||||
this->vfunc_44();
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
case MapObjDoorBaseState_0:
|
||||
if (this->mUnk_80 > 0) {
|
||||
this->vfunc_4C();
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case MapObjDoorBaseState_1:
|
||||
break;
|
||||
case 2:
|
||||
case MapObjDoorBaseState_2:
|
||||
break;
|
||||
case 3:
|
||||
case MapObjDoorBaseState_3:
|
||||
break;
|
||||
case 4:
|
||||
case MapObjDoorBaseState_4:
|
||||
break;
|
||||
case 6:
|
||||
case MapObjDoorBaseState_6:
|
||||
break;
|
||||
case 7:
|
||||
case MapObjDoorBaseState_7:
|
||||
break;
|
||||
case 8:
|
||||
case MapObjDoorBaseState_8:
|
||||
break;
|
||||
default:
|
||||
this->vfunc_44();
|
||||
@@ -709,7 +709,7 @@ void MapObjectDoorBase::vfunc2_08() {
|
||||
u16 *temp_r3;
|
||||
u16 *temp_r3_2;
|
||||
|
||||
if (this->mUnk_16 != 1 || !this->mUnk_8C || (u16) (this->mUnk_14 + 0x2000) / DEG_TO_ANG(90) != 2) {
|
||||
if (this->mState != MapObjDoorBaseState_1 || !this->mUnk_8C || (u16) (this->mUnk_14 + 0x2000) / DEG_TO_ANG(90) != 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -725,7 +725,7 @@ void MapObjectDoorBase::vfunc2_08() {
|
||||
|
||||
// temp_r3 = sp - 4;
|
||||
// *temp_r3 = this->mUnk_4A;
|
||||
data_027e0ce0->func_ov000_0208bbd4(this->mUnk_44, &this->mUnk_4C, this->mUnk_4A);
|
||||
data_027e0ce0->func_ov000_0208bbd4(this->mUnk_04, &this->mUnk_4C, this->mUnk_4A);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -735,7 +735,7 @@ void MapObjectDoorBase::vfunc2_08() {
|
||||
|
||||
// temp_r3_2 = sp - 4;
|
||||
// *temp_r3_2 = this->mUnk_4A;
|
||||
data_027e0ce0->func_ov000_0208bbd4(this->mUnk_44, &this->mUnk_4C, this->mUnk_4A);
|
||||
data_027e0ce0->func_ov000_0208bbd4(this->mUnk_04, &this->mUnk_4C, this->mUnk_4A);
|
||||
|
||||
this->mUnk_5C.x = this->mPos.x + FLOAT_TO_FX32(1.0f);
|
||||
this->mUnk_5C.y = this->mPos.y;
|
||||
|
||||
@@ -98,46 +98,46 @@ void MapObjectDoorClick::vfunc_08(void) {
|
||||
this->mUnk_A4 = 0;
|
||||
}
|
||||
|
||||
if (this->mUnk_16 == 2) {
|
||||
if (this->mState == MapObjDoorClickState_2) {
|
||||
this->mUnk_8B = this->func_ov031_020fcf30();
|
||||
}
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorClickState_3:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(4)) {
|
||||
this->vfunc_5C(4, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_4, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
case MapObjDoorClickState_4:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(5)) {
|
||||
this->vfunc_5C(5, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_5, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 5:
|
||||
case MapObjDoorClickState_5:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -165,31 +165,31 @@ void MapObjectDoorClick::vfunc_08(void) {
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(6)) {
|
||||
this->mUnk_82 = this->vfunc2_1C(6);
|
||||
this->vfunc_5C(6, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_6, 0);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 6:
|
||||
case MapObjDoorClickState_6:
|
||||
this->mUnk_84++;
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(7)) {
|
||||
this->mUnk_82 = this->vfunc2_1C(7);
|
||||
this->vfunc_5C(7, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_7, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 7:
|
||||
case MapObjDoorClickState_7:
|
||||
this->mUnk_84++;
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(8)) {
|
||||
this->vfunc_5C(8, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_8, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 8:
|
||||
case MapObjDoorClickState_8:
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
break;
|
||||
default:
|
||||
@@ -246,17 +246,17 @@ void MapObjectDoorClick::vfunc_14(void) {
|
||||
this->mUnk_94.vfunc_14(&m, &local_48);
|
||||
}
|
||||
|
||||
void MapObjectDoorClick::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
void MapObjectDoorClick::vfunc_5C(MapObjState state, unk32 param2) {
|
||||
s32 var_r6;
|
||||
u32 temp_r8;
|
||||
UnkStackStruct1 sp8;
|
||||
s16 sp4;
|
||||
s16 *sp4Ptr;
|
||||
|
||||
this->mUnk_16 = param1;
|
||||
this->mState = state;
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorClickState_3:
|
||||
this->vfunc_7C();
|
||||
|
||||
u16 result = ROUND_FX32(MUL_FX32(func_01ffb428(0x1000 - this->mUnk_6C, 0x1000), INT_TO_FX32(this->mUnk_78)));
|
||||
@@ -272,9 +272,9 @@ void MapObjectDoorClick::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
}
|
||||
|
||||
break;
|
||||
case 8:
|
||||
case MapObjDoorClickState_8:
|
||||
if (this->mUnk_20.mParams[2] & 0xFF) {
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
this->func_ov031_020fcf0c(1);
|
||||
this->mUnk_10 = this->vfunc2_14();
|
||||
break;
|
||||
@@ -282,7 +282,7 @@ void MapObjectDoorClick::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
|
||||
// fallthrough
|
||||
default:
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -308,16 +308,16 @@ bool MapObjectDoorClick::func_ov031_020ffde4(void) {
|
||||
}
|
||||
|
||||
unk32 MapObjectDoorClick::vfunc_28(void) {
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorClickState_3:
|
||||
case MapObjDoorClickState_4:
|
||||
case MapObjDoorClickState_5:
|
||||
case MapObjDoorClickState_6:
|
||||
case MapObjDoorClickState_7:
|
||||
case MapObjDoorClickState_8:
|
||||
return -1;
|
||||
default:
|
||||
this->vfunc_5C(3, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_3, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ extern "C" unk32 func_01ffb428(unk32, unk32);
|
||||
extern "C" void func_01ffaf74(VecFx32 *, Mat4x3p *, VecFx32 *);
|
||||
extern "C" void func_01ff93c0(VecFx32 *, fx32);
|
||||
extern unk32 data_ov031_02110c00[];
|
||||
extern UnkStruct_ov000_020b34c4_Callback data_ov000_020b4cc4;
|
||||
|
||||
const UnkStruct_ov031_021150b0 data_ov031_021150b0(0x1E66);
|
||||
|
||||
@@ -70,7 +69,7 @@ void MapObjectDoorDangerSpawn::vfunc_04(void) {
|
||||
ptr = data_027e0cd8->mUnk_0C;
|
||||
ptr->func_ov000_0208053c(this->mUnk_20.mParams[0]);
|
||||
ptr->func_ov000_020803ec(this->mUnk_20.mParams[0]);
|
||||
this->vfunc_5C(2, 1);
|
||||
this->vfunc_5C(MapObjDoorDangerSpawnState_2, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -81,22 +80,19 @@ void MapObjectDoorDangerSpawn::vfunc_04(void) {
|
||||
if (this->mUnk_20.mParams[1] == 4) {
|
||||
if (this->func_ov000_0209d29c(0) != 0) {
|
||||
this->mUnk_6C = 0;
|
||||
this->MapObjectDoorBase::vfunc_5C(2, 1);
|
||||
this->MapObjectDoorBase::vfunc_5C(MapObjDoorDangerSpawnState_2, 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this->vfunc_5C(8, 1);
|
||||
this->vfunc_5C(MapObjDoorDangerSpawnState_8, 1);
|
||||
|
||||
#if IS_JP
|
||||
//! TODO: non-matching
|
||||
UnkStruct_ov000_020b34c4 stack;
|
||||
bool run = true;
|
||||
stack.mUnk_00 = &data_ov000_020b4cc4;
|
||||
stack.mUnk_04 = MapObjectId_DoorDangerSpawn;
|
||||
MapObjectDoorDangerSpawn_ov031_02116e24 stack(MapObjectId_DoorDangerSpawn);
|
||||
bool run = true;
|
||||
|
||||
MapObject **ppMapObject =
|
||||
gpMapObjManager->func_01fff520((UnkStruct_ov000_020b34c4 *) &stack.mUnk_00, gpMapObjManager->mMapObjTable);
|
||||
MapObject **ppMapObject = gpMapObjManager->func_01fff520(&stack, gpMapObjManager->mMapObjTable);
|
||||
|
||||
if (ppMapObject != gpMapObjManager->mUnk_08) {
|
||||
MapObjectDoorDangerSpawn *pMapObject = (MapObjectDoorDangerSpawn *) *ppMapObject;
|
||||
@@ -126,7 +122,7 @@ void MapObjectDoorDangerSpawn::vfunc_04(void) {
|
||||
this->mUnk_A2 = true;
|
||||
this->mUnk_8C = 0;
|
||||
ptr->func_ov000_020803ec(this->mUnk_20.mParams[0]);
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorDangerSpawnState_0, 0);
|
||||
|
||||
UnkStruct_027e09bc_0C *uVar5 = data_027e09bc->mUnk_0C;
|
||||
MapObjectDoorDangerSpawn::func_ov031_020fe5fc(&auStack_20, this);
|
||||
@@ -166,8 +162,8 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) {
|
||||
this->mUnk_AC++;
|
||||
}
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorDangerSpawnState_0:
|
||||
if (this->mUnk_A2) {
|
||||
u16 max = this->mUnk_AE;
|
||||
u16 timer = this->mUnk_AC;
|
||||
@@ -204,7 +200,7 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
case 1:
|
||||
case MapObjDoorDangerSpawnState_1:
|
||||
if (!this->mUnk_86 || data_027e09b8->func_ov000_020732ec(this->mUnk_74)) {
|
||||
if (!this->mUnk_A2) {
|
||||
if (data_027e09b8->func_ov000_0207330c() == 0x0A) {
|
||||
@@ -228,7 +224,7 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case MapObjDoorDangerSpawnState_2:
|
||||
if (this->mUnk_20.mParams[1] == 4 && this->func_ov000_0209d29c(0) != 0) {
|
||||
if (this->func_ov000_0209d29c(1) != 0) {
|
||||
return;
|
||||
@@ -258,7 +254,7 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) {
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
this->vfunc2_10();
|
||||
|
||||
if (this->mUnk_16 == 2 && this->mUnk_A4 == 0 && !this->mUnk_A1) {
|
||||
if (this->mState == MapObjDoorDangerSpawnState_2 && this->mUnk_A4 == 0 && !this->mUnk_A1) {
|
||||
data_ov000_020b51b8.func_ov000_0206d0bc(5);
|
||||
this->mUnk_A1 = true;
|
||||
}
|
||||
@@ -267,12 +263,12 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) {
|
||||
void MapObjectDoorDangerSpawn::vfunc_0C(void) {
|
||||
this->MapObjectDoorBase::vfunc_0C();
|
||||
|
||||
if ((u16) this->mUnk_16 <= 1) {
|
||||
if ((u16) this->mState <= MapObjDoorDangerSpawnState_1) {
|
||||
this->vfunc_08();
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
void MapObjectDoorDangerSpawn::vfunc_5C(MapObjState state, unk32 param2) {
|
||||
UnkStruct_027e0cd8 **ptr;
|
||||
s32 var_r6;
|
||||
u32 temp_r8;
|
||||
@@ -280,12 +276,12 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
s16 sp4;
|
||||
s16 *sp4Ptr;
|
||||
|
||||
this->mUnk_16 = param1;
|
||||
this->mState = state;
|
||||
this->mUnk_AE = 0;
|
||||
this->mUnk_AC = 0;
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorDangerSpawnState_3:
|
||||
this->vfunc_7C();
|
||||
|
||||
sp4Ptr = (s16 *) &sp4;
|
||||
@@ -331,10 +327,10 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
case MapObjDoorDangerSpawnState_4:
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
break;
|
||||
case 0:
|
||||
case MapObjDoorDangerSpawnState_0:
|
||||
this->func_ov000_0209d2c4(1, false);
|
||||
this->func_ov000_0209d2c4(0, true);
|
||||
|
||||
@@ -351,17 +347,17 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
this->mUnk_90 = false;
|
||||
}
|
||||
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
|
||||
if (this->mUnk_86 && param2 == 0 && this->mUnk_90 && data_027e0ce0->func_01fff1a4()) {
|
||||
data_027e0d8c->func_ov093_02166058();
|
||||
}
|
||||
|
||||
return;
|
||||
case 2:
|
||||
case MapObjDoorDangerSpawnState_2:
|
||||
ptr = &data_027e0cd8; // whyyy
|
||||
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
|
||||
var_r6 = 1;
|
||||
temp_r8 = data_027e09a4->CurrentSceneIndex();
|
||||
@@ -382,9 +378,9 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
}
|
||||
|
||||
break;
|
||||
case 8:
|
||||
case MapObjDoorDangerSpawnState_8:
|
||||
ptr = &data_027e0cd8;
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
this->func_ov000_0209d2c4(0, false);
|
||||
|
||||
if (param2 == 0) {
|
||||
@@ -397,7 +393,7 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
|
||||
break;
|
||||
default:
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -577,8 +573,8 @@ void MapObjectDoorDangerSpawn::vfunc_14(void) {
|
||||
}
|
||||
|
||||
void MapObjectDoorDangerSpawn::vfunc2_10(void) {
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorDangerSpawnState_0:
|
||||
default:
|
||||
if (data_027e09b8->func_ov000_020732ec(this->mUnk_74) != 0) {
|
||||
if (this->mUnk_68.mUnk_00 != NULL) {
|
||||
@@ -588,14 +584,14 @@ void MapObjectDoorDangerSpawn::vfunc2_10(void) {
|
||||
this->mUnk_68.mUnk_00->mUnk_24 |= 0x08;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case MapObjDoorDangerSpawnState_1:
|
||||
case MapObjDoorDangerSpawnState_2:
|
||||
case MapObjDoorDangerSpawnState_3:
|
||||
case MapObjDoorDangerSpawnState_4:
|
||||
case MapObjDoorDangerSpawnState_5:
|
||||
case MapObjDoorDangerSpawnState_6:
|
||||
case MapObjDoorDangerSpawnState_7:
|
||||
case MapObjDoorDangerSpawnState_8:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -628,7 +624,7 @@ void MapObjectDoorDangerSpawn::vfunc_74(void) {
|
||||
|
||||
u16 var_r5 = (u16) (this->mUnk_14 + DEG_TO_ANG(45));
|
||||
|
||||
if (((u16) this->mUnk_14 / DEG_TO_ANG(90)) == 2 && this->mUnk_16 == 5) {
|
||||
if (((u16) this->mUnk_14 / DEG_TO_ANG(90)) == 2 && this->mState == MapObjDoorDangerSpawnState_5) {
|
||||
var_r5 = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -91,12 +91,12 @@ void MapObjectDoorKey::vfunc_14(void) {
|
||||
this->mUnk_94.vfunc_14(&m, &local_48);
|
||||
}
|
||||
|
||||
void MapObjectDoorKey::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
void MapObjectDoorKey::vfunc_5C(MapObjState state, unk32 param2) {
|
||||
this->mUnk_8D = true;
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorKeyState_3:
|
||||
if (param2 == 0) {
|
||||
data_027e0ce0->mUnk_2C->GetInventory()->GiveSmallKeys(-1);
|
||||
}
|
||||
@@ -104,7 +104,7 @@ void MapObjectDoorKey::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
data_027e09a8->func_ov000_02071b30(0x134, &this->mPos, 0);
|
||||
break;
|
||||
case 8:
|
||||
case MapObjDoorKeyState_8:
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
break;
|
||||
default:
|
||||
@@ -133,16 +133,16 @@ unk32 MapObjectDoorKey::vfunc_28(void) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorKeyState_3:
|
||||
case MapObjDoorKeyState_4:
|
||||
case MapObjDoorKeyState_5:
|
||||
case MapObjDoorKeyState_6:
|
||||
case MapObjDoorKeyState_7:
|
||||
case MapObjDoorKeyState_8:
|
||||
return -1;
|
||||
default:
|
||||
this->vfunc_5C(3, 0);
|
||||
this->vfunc_5C(MapObjDoorKeyState_3, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ bool MapObjectDoorSwitch::vfunc_00(void) {
|
||||
void MapObjectDoorSwitch::vfunc_08(void) {
|
||||
if (this->mUnk_20.mParams[3] == 2 && data_027e09b8->func_01ffd420()) {
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
} else if (this->mUnk_16 == 5 && this->vfunc_6C()) {
|
||||
} else if (this->mState == MapObjDoorSwitchState_5 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
} else {
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
|
||||
@@ -0,0 +1,167 @@
|
||||
#include "MapObject/MapObjectGrass.hpp"
|
||||
|
||||
#include "System/Random.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
|
||||
DECL_PROFILE(MapObjectProfileGrass);
|
||||
|
||||
MapObject *MapObjectProfileGrass::Create() {
|
||||
return new(HeapIndex_ITCM) MapObjectGrass();
|
||||
}
|
||||
|
||||
// non-matching
|
||||
MapObjectProfileGrass::MapObjectProfileGrass() :
|
||||
MapObjectProfile_Derived2(MapObjectId_Grass, MapObjectId_Grass) {}
|
||||
|
||||
MapObjectGrass::MapObjectGrass() :
|
||||
mUnk_58(0x0),
|
||||
mUnk_5C(FLOAT_TO_FX32(0.0f)),
|
||||
mUnk_64(-1) {
|
||||
this->mUnk_62 = 0x0;
|
||||
this->mUnk_60 = 0x0;
|
||||
SET_FLAG(this->mFlags, MapObjFlag_6);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool MapObjectGrass::vfunc_00() {}
|
||||
|
||||
void MapObjectGrass::vfunc_08() {
|
||||
MapObjState state = this->mState;
|
||||
if (state != MapObjGrassState_1) {
|
||||
if (state == MapObjGrassState_2 && this->func_ov031_021016b4()) {
|
||||
this->vfunc_38(MapObjGrassState_3, 0x0);
|
||||
}
|
||||
} else if (this->func_ov031_02101778()) {
|
||||
this->vfunc_38(MapObjGrassState_0, 0x0);
|
||||
}
|
||||
if (this->mUnk_64 > -1) {
|
||||
--this->mUnk_64;
|
||||
}
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void MapObjectGrass::vfunc_14() {
|
||||
VecFx32 vec;
|
||||
for (unk32 i = 0; i < ARRAY_LEN(this->mUnk_40); ++i) {
|
||||
VecFx32_Add(&this->mUnk_40[i], &this->mPos, &vec);
|
||||
vec.x += this->mUnk_5C;
|
||||
}
|
||||
}
|
||||
|
||||
bool MapObjectGrass::vfunc_38(MapObjState state, unk32 param2) {
|
||||
if (this->mState == state) {
|
||||
return true;
|
||||
}
|
||||
this->mState = state;
|
||||
switch (this->mState) {
|
||||
case MapObjGrassState_0:
|
||||
this->mUnk_5C = FLOAT_TO_FX32(0.0f);
|
||||
if (param2 != 0) {
|
||||
this->func_ov031_021018a4(0x0);
|
||||
}
|
||||
break;
|
||||
case MapObjGrassState_2:
|
||||
this->mUnk_58 = 0x0;
|
||||
this->mUnk_5C = FLOAT_TO_FX32(0.0f);
|
||||
|
||||
VecFx32 vec;
|
||||
for (unk32 i = 0; i < ARRAY_LEN(this->mUnk_40); ++i) {
|
||||
VecFx32_Init(this->mUnk_40[i].x, this->mUnk_40[i].y + FLOAT_TO_FX32(0.35f), this->mUnk_40[i].z, &vec);
|
||||
VecFx32_Add(&vec, &this->mPos, &vec);
|
||||
this->vfunc_3C(&vec);
|
||||
}
|
||||
|
||||
if (this->GetMapObjectId() == MapObjectId_GRSV) {
|
||||
data_027e09a8->func_ov000_02071b30(0xFB, &this->mPos, 0);
|
||||
} else {
|
||||
data_027e09a8->func_ov000_02071b30(0xF7, &this->mPos, 0);
|
||||
}
|
||||
this->func_ov031_021018a4(0x1);
|
||||
break;
|
||||
case MapObjGrassState_1:
|
||||
this->mUnk_5C = FLOAT_TO_FX32(0.0f);
|
||||
this->mUnk_58 = 0x0;
|
||||
break;
|
||||
case MapObjGrassState_3:
|
||||
this->mUnk_5C = FLOAT_TO_FX32(0.0f);
|
||||
this->func_ov031_021018a4(0x1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool MapObjectGrass::func_ov031_021016b4() {}
|
||||
|
||||
void MapObjectGrass::vfunc_3C(VecFx32 *param1) {
|
||||
data_027e0cec->func_ov000_0209feac(0x923, param1, 0x4, 0x0, 0x0);
|
||||
}
|
||||
|
||||
bool MapObjectGrass::func_ov031_02101778() {
|
||||
this->mUnk_5C = gRandom.Next32(0x4CD) + 0xFFFFFD9A;
|
||||
if (this->mUnk_58 >= 4U) {
|
||||
return true;
|
||||
}
|
||||
++this->mUnk_58;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MapObjectGrass::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) {
|
||||
if (this->mUnk_64 != -0x1) {
|
||||
return false;
|
||||
}
|
||||
switch (param2) {
|
||||
case 0x7:
|
||||
case 0x8:
|
||||
case 0xC:
|
||||
if (this->mState >= MapObjGrassState_2) {
|
||||
return false;
|
||||
}
|
||||
this->vfunc_38(MapObjGrassState_2, 0x0);
|
||||
return false;
|
||||
case 0x4:
|
||||
if (this->mState >= MapObjGrassState_1) {
|
||||
return false;
|
||||
}
|
||||
this->vfunc_38(MapObjGrassState_1, 0x0);
|
||||
return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectGrass::func_ov031_021018a4(unk16 param1) {
|
||||
if (param1 != 0x0) {
|
||||
this->mUnk_60 = 0x4;
|
||||
this->mUnk_62 = 0x4;
|
||||
return;
|
||||
}
|
||||
if (this->mUnk_20.mParams[1] == 0x1) {
|
||||
this->mUnk_60 = 0x3;
|
||||
} else {
|
||||
this->mUnk_60 = gRandom.Next32(0x3);
|
||||
}
|
||||
this->mUnk_62 = gRandom.Next32(0x3);
|
||||
}
|
||||
|
||||
unk32 MapObjectGrass::func_ov031_02101950() {
|
||||
if (!(this->mState != MapObjGrassState_0 && this->mState != MapObjGrassState_1)) {
|
||||
return 0x15;
|
||||
}
|
||||
return 0x16;
|
||||
}
|
||||
|
||||
void MapObjectGrass::func_ov031_02101968(unk32 param1) {
|
||||
if (param1 != 0x0) {
|
||||
this->mUnk_64 = 0xA;
|
||||
}
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void MapObjectGrass::func_ov031_02101978(unk32 param1, VecFx32 *param2) {
|
||||
VecFx32_Copy(param2, &this->mUnk_40[param1]);
|
||||
}
|
||||
@@ -21,7 +21,7 @@ MapObject *MapObjectProfilePot::Create() {
|
||||
}
|
||||
|
||||
MapObjectProfilePot::MapObjectProfilePot() :
|
||||
MapObjectProfilePot_Base(MapObjectId_TSUB, MapObjectId_TSUB) {
|
||||
MapObjectProfilePot_Base(MapObjectId_Pot, MapObjectId_Pot) {
|
||||
this->mUnk_0E = 0x0;
|
||||
this->mUnk_D4.mUnk_08 = 0x7007;
|
||||
this->mUnk_D4.mUnk_0C.x = FLOAT_TO_FX32(0.0f);
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "MapObject/MapObjectUnkGRSS.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
DECL_PROFILE(MapObjectProfileUnkGRSS);
|
||||
|
||||
MapObject *MapObjectProfileUnkGRSS::Create() {
|
||||
return new(HeapIndex_2) MapObjectUnkGRSS();
|
||||
}
|
||||
|
||||
MapObjectProfileUnkGRSS::MapObjectProfileUnkGRSS() :
|
||||
MapObjectProfile(MapObjectId_GRSS) {}
|
||||
|
||||
MapObjectUnkGRSS::MapObjectUnkGRSS() {}
|
||||
|
||||
void MapObjectUnkGRSS::func_ov031_021010e0(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101170(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_0210148c(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101504(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101578(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_021016b4(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_0210173c(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101778(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_021017ec(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_021018a4(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101950(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101968(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101978(void) {}
|
||||
|
||||
MapObjectUnkGRSS::~MapObjectUnkGRSS() {}
|
||||
MapObjectProfileUnkGRSS::~MapObjectProfileUnkGRSS() {}
|
||||
@@ -1,34 +1,423 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "MapObject/MapObjectUnkSKDI.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
#include "Actor/ActorManager.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cd8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
|
||||
struct UnkStackStruct;
|
||||
DECL_PROFILE(MapObjectProfileUnkSKDI);
|
||||
|
||||
MapObject *MapObjectProfileUnkSKDI::Create() {
|
||||
return new(HeapIndex_2) MapObjectUnkSKDI();
|
||||
return new(HeapIndex_ITCM) MapObjectUnkSKDI();
|
||||
}
|
||||
|
||||
MapObjectProfileUnkSKDI::MapObjectProfileUnkSKDI() :
|
||||
MapObjectProfile(MapObjectId_SKDI) {}
|
||||
MapObjectProfile_Derived2(MapObjectId_SKDI, MapObjectId_SKDI) {
|
||||
this->mUnk_06 = -0x1;
|
||||
this->mUnk_1E &= 0xFFFE;
|
||||
}
|
||||
|
||||
MapObjectUnkSKDI::MapObjectUnkSKDI() {}
|
||||
MapObjectUnkSKDI::MapObjectUnkSKDI() :
|
||||
mUnk_040(GetModelFromProfile<MapObjectProfileUnkSKDI>()),
|
||||
mUnk_048(0x1),
|
||||
mUnk_07C(0x0),
|
||||
mUnk_080(-0x1),
|
||||
mUnk_084(0x0),
|
||||
mUnk_086(0x0),
|
||||
mUnk_087(0x1),
|
||||
mUnk_088(0x0),
|
||||
mUnk_089(0x0),
|
||||
mUnk_08C(0x3000, 0x1),
|
||||
mUnk_0F8(0x0),
|
||||
mUnk_0FA(0x0),
|
||||
mUnk_0FC(0x0) {
|
||||
SET_FLAG(this->mFlags, MapObjFlag_10);
|
||||
this->mUnk_18[1] = 0x12;
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::func_ov031_02106190(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_021061dc(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106224(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_021062ec(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_021063cc(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_021063dc(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_0210643c(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106678(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106a70(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106a84(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106c78(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106c98(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106ca0(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106ca8(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106cb0(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106190() {
|
||||
this->mUnk_04C[0].mUnk_04 = 0x8C0;
|
||||
this->mUnk_04C[0].mUnk_08 = 0x4;
|
||||
|
||||
MapObjectUnkSKDI::~MapObjectUnkSKDI() {}
|
||||
MapObjectProfileUnkSKDI::~MapObjectProfileUnkSKDI() {}
|
||||
this->mUnk_04C[1].mUnk_04 = 0x8C1;
|
||||
this->mUnk_04C[1].mUnk_08 = 0x4;
|
||||
|
||||
this->mUnk_04C[2].mUnk_04 = 0x8C2;
|
||||
this->mUnk_04C[2].mUnk_08 = 0x4;
|
||||
|
||||
this->mUnk_04C[3].mUnk_04 = 0x8C2;
|
||||
this->mUnk_04C[3].mUnk_08 = 0x4;
|
||||
this->mUnk_04C[3].func_ov000_020a0334();
|
||||
|
||||
this->mUnk_0FC = 0x0;
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::func_ov031_021061dc() {
|
||||
this->mUnk_04C[0].mUnk_04 = 0x8B8;
|
||||
this->mUnk_04C[0].mUnk_08 = 0x4;
|
||||
|
||||
this->mUnk_04C[1].mUnk_04 = 0x8B9;
|
||||
this->mUnk_04C[1].mUnk_08 = 0x4;
|
||||
|
||||
this->mUnk_04C[2].mUnk_04 = 0x8BA;
|
||||
this->mUnk_04C[2].mUnk_08 = 0x4;
|
||||
|
||||
this->mUnk_04C[3].mUnk_04 = 0x8BB;
|
||||
this->mUnk_04C[3].mUnk_08 = 0x4;
|
||||
|
||||
this->mUnk_0FC = 0x1;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool MapObjectUnkSKDI::vfunc_00() {
|
||||
unk32 var1;
|
||||
if (this->mUnk_20.mParams[2] == 0x1) {
|
||||
var1 = 0x1;
|
||||
} else {
|
||||
var1 = 0x0;
|
||||
}
|
||||
this->mUnk_07C = var1;
|
||||
VecFx32_Copy(&this->mPos, &this->mUnk_08C.mUnk_00);
|
||||
if (var1 == 1) {
|
||||
var1 = 0x7806;
|
||||
} else {
|
||||
var1 = 0x7406;
|
||||
}
|
||||
|
||||
this->mUnk_0D4.mUnk_08 = (var1 & ~0x7000) | 0x7000;
|
||||
VecFx32_Init(FLOAT_TO_FX32(-0.5002f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(-0.5002f), &this->mUnk_0D4.mUnk_0C);
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.5f), FLOAT_TO_FX32(1.2f), FLOAT_TO_FX32(0.5f), &this->mUnk_0D4.mUnk_18);
|
||||
|
||||
if (this->mUnk_07C == 0x0) {
|
||||
this->func_ov031_02106190();
|
||||
} else {
|
||||
this->func_ov031_021061dc();
|
||||
}
|
||||
|
||||
this->mUnk_10 = &this->mUnk_0D4;
|
||||
if (this->mUnk_20.mParams[1] == 0x1) {
|
||||
var1 = 0x1;
|
||||
} else {
|
||||
var1 = 0x0;
|
||||
}
|
||||
this->mUnk_086 = var1;
|
||||
return true;
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::vfunc_04() {
|
||||
data_027e0cd8->mUnk_0C->func_ov000_02080a5c(&this->mUnk_08C.mUnk_00);
|
||||
|
||||
if (this->mUnk_20.mParams[0] == 0x0) {
|
||||
if ((!this->func_ov000_0209d29c(0x0) && this->mUnk_20.mUnk_0A[0] != 0x0) ||
|
||||
(!this->func_ov000_0209d29c(0x1) && this->mUnk_20.mUnk_0A[1] != 0x0)) {
|
||||
this->func_ov031_02106678(0x2, 0x1);
|
||||
return;
|
||||
}
|
||||
this->func_ov031_02106678(0x1, 0x1);
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->func_ov000_0209d29c(0x0) || this->func_ov000_0209d29c(0x1)) {
|
||||
this->func_ov031_02106678(0x1, 0x1);
|
||||
return;
|
||||
}
|
||||
this->func_ov031_02106678(0x2, 0x1);
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::vfunc_08() {
|
||||
this->func_ov031_0210643c(0x0);
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::vfunc_0C() {
|
||||
if (this->mUnk_080 >= 0x0 && data_027e09b8->func_ov000_020732ec(this->mUnk_080) != 0x0) {
|
||||
this->func_ov031_0210643c(0x1);
|
||||
return;
|
||||
}
|
||||
if (this->mState != MapObjUnkSKDIState_0 && this->mState != MapObjUnkSKDIState_1 && this->mState != MapObjUnkSKDIState_2) {
|
||||
return;
|
||||
}
|
||||
this->func_ov031_0210643c(0x0);
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::func_ov031_0210643c(unk32 param1) {
|
||||
switch (this->mState) {
|
||||
case MapObjUnkSKDIState_0:
|
||||
++this->mUnk_084;
|
||||
if (this->mUnk_084 < 0x6) {
|
||||
return;
|
||||
}
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_1, 0x0);
|
||||
break;
|
||||
case MapObjUnkSKDIState_3:
|
||||
if (param1 == 0x0) {
|
||||
return;
|
||||
}
|
||||
if ((u32) data_027e09b8->func_ov000_0207330c() < 0x1E) {
|
||||
return;
|
||||
}
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0x0);
|
||||
break;
|
||||
case MapObjUnkSKDIState_1:
|
||||
if (this->func_ov000_0209d3b4(0x0, FLOAT_TO_FX32(2.0f)) != 0x0) {
|
||||
VecFx32 vec;
|
||||
VecFx32_Init(this->mPos.x, this->mPos.y + FLOAT_TO_FX32(1.25f), this->mPos.z, &vec);
|
||||
UnkStruct_027e0cec *data = data_027e0cec;
|
||||
for (ActorUnkBOMB_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) {
|
||||
data->func_ov000_020a0140(ptr, &vec);
|
||||
}
|
||||
} else {
|
||||
UnkStruct_027e0cec *data = data_027e0cec;
|
||||
for (ActorUnkBOMB_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) {
|
||||
data->func_ov000_020a0110(ptr);
|
||||
}
|
||||
}
|
||||
if (this->func_ov000_0209d29c(0x0) != 0 || this->mUnk_20.mUnk_0A[0] == 0x0) {
|
||||
if (this->func_ov000_0209d29c(0x1) != 0) {
|
||||
return;
|
||||
}
|
||||
if (this->mUnk_20.mUnk_0A[1] == 0x0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_2, 0x0);
|
||||
break;
|
||||
case MapObjUnkSKDIState_2:
|
||||
if (this->func_ov000_0209d29c(0x1) != 0x0) {
|
||||
if (this->mUnk_086 != 0) {
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_3, 0x0);
|
||||
} else {
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0x0);
|
||||
}
|
||||
}
|
||||
unk32 temp_r1 = this->mUnk_0FA;
|
||||
if (temp_r1 != 0 && ((u32) this->mUnk_0F8 >= (u32) temp_r1)) {
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0x0);
|
||||
this->mUnk_0FA = 0x0;
|
||||
this->mUnk_0F8 = 0x0;
|
||||
}
|
||||
if (data_027e09b8->func_01ffd420() != 0) {
|
||||
return;
|
||||
}
|
||||
if (this->mUnk_0F8 < this->mUnk_0FA) {
|
||||
++this->mUnk_0F8;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::func_ov031_02106678(MapObjState state, unk32 param2) {
|
||||
VecFx32 sp48;
|
||||
if (this->mState == state) {
|
||||
return;
|
||||
}
|
||||
this->mState = state;
|
||||
VecFx32_Init(this->mPos.x, this->mPos.y + FLOAT_TO_FX32(1.25f), this->mPos.z, &sp48);
|
||||
|
||||
switch (this->mState) {
|
||||
case MapObjUnkSKDIState_0:
|
||||
if (param2 == 0x0) {
|
||||
if (this->mUnk_0FC == 0x0) {
|
||||
data_027e0cec->func_ov000_0209feac(0x8C5, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x8C6, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e09a8->func_ov000_02071b30(0x108, &this->mPos, 0x0);
|
||||
} else {
|
||||
data_027e0cec->func_ov000_0209feac(0x8BE, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x8BF, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e09a8->func_ov000_02071b30(0x10A, &this->mPos, 0x0);
|
||||
}
|
||||
}
|
||||
this->mUnk_084 = 0x0;
|
||||
break;
|
||||
case MapObjUnkSKDIState_3:
|
||||
if (param2 == 0x0 && this->mUnk_087 != 0x0) {
|
||||
UnkStackStruct1 stack;
|
||||
|
||||
func_ov000_02072fd0(&stack);
|
||||
stack.mUnk_08 = 0x3C;
|
||||
stack.mUnk_00 = 0x80;
|
||||
stack.mUnk_3A = 0x07;
|
||||
stack.mUnk_38 |= 0x80;
|
||||
|
||||
VecFx32_Copy(&this->mPos, &stack.mUnk_0C);
|
||||
|
||||
if (this->mUnk_20.mUnk_16) {
|
||||
stack.mUnk_38 |= 0x4;
|
||||
}
|
||||
|
||||
this->mUnk_080 = data_027e09b8->func_ov000_02073388(&stack, 0x0);
|
||||
this->mUnk_087 = 0x0;
|
||||
break;
|
||||
}
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0x0);
|
||||
break;
|
||||
case MapObjUnkSKDIState_1:
|
||||
SET_FLAG(this->mFlags, MapObjFlag_7);
|
||||
SET_FLAG(this->mFlags, MapObjFlag_8);
|
||||
if (param2 == 0x0) {
|
||||
if (this->mUnk_07C != this->mUnk_0FC && this->mUnk_088 == 0x0) {
|
||||
break;
|
||||
}
|
||||
this->func_ov000_0209d2c4(0x0, true);
|
||||
}
|
||||
UnkStruct_027e0cec *data = data_027e0cec;
|
||||
for (ActorUnkBOMB_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) {
|
||||
data->func_ov000_020a0140(ptr, &sp48);
|
||||
}
|
||||
unk32 dc = this->mUnk_0D4.mUnk_08;
|
||||
if (this->mUnk_0FC == 0x1) {
|
||||
dc = (dc & ~0xE00) | 0x800;
|
||||
} else {
|
||||
dc = (dc & ~0xE00) | 0x400;
|
||||
}
|
||||
this->mUnk_0D4.mUnk_08 = dc;
|
||||
this->mUnk_080 = -1;
|
||||
this->mUnk_0BC = 0x3000;
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_10);
|
||||
break;
|
||||
case MapObjUnkSKDIState_2:
|
||||
SET_FLAG(this->mFlags, MapObjFlag_7);
|
||||
this->mFlags[0] &= 0xFEFF;
|
||||
this->mUnk_0FA = 0x0;
|
||||
this->mUnk_0F8 = 0x0;
|
||||
if (param2 == 0) {
|
||||
this->func_ov000_0209d2c4(0x0, false);
|
||||
UnkStruct_027e0cec *data = data_027e0cec;
|
||||
for (ActorUnkBOMB_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) {
|
||||
data->func_ov000_020a0110(ptr);
|
||||
}
|
||||
if (this->mUnk_0FC == 0) {
|
||||
data_027e0cec->func_ov000_0209feac(0x8C3, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x8C4, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e09a8->func_ov000_02071b30(0x109, &this->mPos, 0x0);
|
||||
} else {
|
||||
data_027e0cec->func_ov000_0209feac(0x8BC, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x8BD, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e09a8->func_ov000_02071b30(0x10B, &this->mPos, 0x0);
|
||||
}
|
||||
}
|
||||
this->mUnk_0D4.mUnk_08 &= ~0xE00;
|
||||
this->mUnk_080 = -1;
|
||||
this->mUnk_0BC = 0x800;
|
||||
SET_FLAG(this->mFlags, MapObjFlag_10);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::func_ov031_02106a70() {
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_2, 0x0);
|
||||
}
|
||||
|
||||
// ActorItemBoomerang?
|
||||
class ActorUnk_MapObjectUnkSKDI_vfunc_1C : public Actor {
|
||||
public:
|
||||
/* 000 (base) */
|
||||
/* 094 */ STRUCT_PAD(0x094, 0x128);
|
||||
/* 128 */ unk32 mUnk_128;
|
||||
/* 12C */
|
||||
};
|
||||
|
||||
// non-matching
|
||||
bool MapObjectUnkSKDI::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) {
|
||||
bool var_r1 = false;
|
||||
if (param1.type_index == 0x102) {
|
||||
if (param1.unk_id == 1 || param1.unk_id == 3) {
|
||||
var_r1 = true;
|
||||
}
|
||||
}
|
||||
if (var_r1 != 0 && param1.unk_id == 1) {
|
||||
if (data_027e0ce0->mEquippedItem != ActorId_PMTB) {
|
||||
return false;
|
||||
}
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0x0);
|
||||
return true;
|
||||
}
|
||||
|
||||
switch (param2) {
|
||||
case 0x4:
|
||||
if (this->mState != MapObjUnkSKDIState_2) {
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_2, 0x0);
|
||||
this->mUnk_0F8 = 0;
|
||||
unk32 var = 0x28;
|
||||
if (this->mUnk_20.mParams[3] != 0) {
|
||||
var = this->mUnk_20.mParams[3];
|
||||
}
|
||||
this->mUnk_0FA = var;
|
||||
}
|
||||
return false;
|
||||
case 0x3:
|
||||
return false;
|
||||
case 0xC:
|
||||
var_r1 = true;
|
||||
if (data_027e09a4->mUnk_00.sceneIndex == SceneIndex_d_snow26 && this->mUnk_0FA != 0x0) {
|
||||
var_r1 = false;
|
||||
}
|
||||
if (this->mState == MapObjUnkSKDIState_2 && var_r1) {
|
||||
ActorUnk_MapObjectUnkSKDI_vfunc_1C *actor =
|
||||
(ActorUnk_MapObjectUnkSKDI_vfunc_1C *) gpActorManager->func_01fff3b4(param1);
|
||||
if (actor != NULL) {
|
||||
switch (actor->mUnk_128) {
|
||||
case 0x1:
|
||||
switch (this->mUnk_07C) {
|
||||
case 0x0:
|
||||
this->func_ov031_02106190();
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0);
|
||||
break;
|
||||
case 0x1:
|
||||
this->func_ov031_02106190();
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 0x2:
|
||||
switch (this->mUnk_07C) {
|
||||
case 0x0:
|
||||
this->func_ov031_021061dc();
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0);
|
||||
break;
|
||||
case 0x1:
|
||||
this->func_ov031_021061dc();
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::vfunc_14() {
|
||||
this->mUnk_040.vfunc_18(&this->mPos);
|
||||
}
|
||||
|
||||
unk32 MapObjectUnkSKDI::vfunc_38() {
|
||||
return this->mUnk_07C;
|
||||
}
|
||||
|
||||
unk32 MapObjectUnkSKDI::vfunc_3C() {
|
||||
return this->mUnk_0FC;
|
||||
}
|
||||
|
||||
s16 MapObjectUnkSKDI::vfunc_40() {
|
||||
return this->mState;
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::func_ov031_02106cb0(unk32 param1) {
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, param1);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ struct UnkStruct {
|
||||
unk32 four;
|
||||
};
|
||||
|
||||
extern "C" void func_01ffecdc(int, void *);
|
||||
extern "C" unk32 func_01ffecdc(int, void *);
|
||||
|
||||
MapObject *MapObjectManager::func_01fff498(Vec2bCpp param1) {
|
||||
if (this->mUnk_0C[param1.y][param1.x] < 0) {
|
||||
@@ -29,16 +29,13 @@ void MapObjectManager::func_01fff4cc(UnkCallback_func_01fff4cc param1, void *par
|
||||
}
|
||||
}
|
||||
|
||||
// non-matching
|
||||
MapObject **MapObjectManager::func_01fff520(UnkStruct_ov000_020b34c4 *param1, MapObject **param2) {
|
||||
MapObject **ptr = param2;
|
||||
|
||||
while (ptr != this->mUnk_08) {
|
||||
MapObject *ptr2 = *ptr;
|
||||
if (ptr2 != NULL && GET_FLAG((ptr2)->mFlags, MapObjFlag_Alive)) {
|
||||
UnkStruct_ov000_020b34c4_Callback cb = *param1->mUnk_00;
|
||||
|
||||
if ((*cb)(param1, ptr2)) {
|
||||
if (param1->vfunc_00(ptr2)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -53,7 +50,7 @@ MapObjectId MapObject::GetMapObjectId() {
|
||||
return this->mpProfile->mMapObjId;
|
||||
}
|
||||
|
||||
void MapObject::func_01fff590(unk32 param2) {
|
||||
unk32 MapObject::func_01fff590(unk32 param2) {
|
||||
UnkStruct stack;
|
||||
unk32 one;
|
||||
unk32 two;
|
||||
@@ -69,5 +66,5 @@ void MapObject::func_01fff590(unk32 param2) {
|
||||
stack.two = two;
|
||||
stack.three = three;
|
||||
stack.four = four;
|
||||
func_01ffecdc(param2, &stack);
|
||||
return func_01ffecdc(param2, &stack);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user