mirror of
https://github.com/zeldaret/st
synced 2026-08-31 01:20:35 -04:00
Decompiling BOMB (#140)
* feat: begin decompiling * feat: some progress * fix: forgot to change symbol * feat: increase matching * fix: function params not updated * feat: more matching * fix: noo more errors oon local help * fix: match back UnkStruct_PlayerGet_74.data * feat: little progress * fix: SWBM.data regression * feat: up jp version * feat: update matching * refactor: rename UnkBOMB to Bomb * feat: decompiling part of MapObjectUnkBMFL * feat: destroy MapObjectPot's vfunc_24 for the good of all * fix: revert wrong symbol * feat: updating jp symbols * feat: eur advancements * feat: weird stuff * feat: fix build issue * feat: rename BMFL to BombFlower * feat: catchup jp .data * feat: improve BombFlower * feat: improve bomb matching * style: cleanup * style: cleanup v2 * fix: mapobjectpot_base .data * feat: better match for mapobjectpot_base * style: use deg_to_rad macro * style: cleaner variable definition * doc: better comment * fix: build
This commit is contained in:
@@ -111,12 +111,12 @@ bool Actor::Grab(ActorGrabParams grabParams) {
|
||||
|
||||
SET_FLAG(this->mFlags, ActorFlag_Grabbed);
|
||||
|
||||
switch (grabParams.unk_00) {
|
||||
switch (grabParams.mUnk_00.type_index) {
|
||||
case 0x100:
|
||||
case 0x101: {
|
||||
u16 var_r3 = grabParams.unk_02;
|
||||
u16 var_r3 = grabParams.mUnk_00.unk_id;
|
||||
|
||||
if (grabParams.unk_00 == 0x101) {
|
||||
if (grabParams.mUnk_00.type_index == 0x101) {
|
||||
var_r3 = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ MapObject::MapObject() {
|
||||
this->mPos.y = ptr->y;
|
||||
this->mPos.z = ptr->z;
|
||||
|
||||
this->mUnk_14 = *ptr2->mUnk_0C;
|
||||
this->mAngle = *ptr2->mUnk_0C;
|
||||
MI_CpuCopyFast(ptr2->mUnk_04, &this->mUnk_20, sizeof(MapObject_20));
|
||||
|
||||
for (int i = 0; i < ARRAY_LEN(this->mUnk_18); i++) {
|
||||
|
||||
@@ -85,31 +85,31 @@ bool MapObjectMiniBlocks::vfunc_00(void) {
|
||||
case 1:
|
||||
case 6:
|
||||
case 8:
|
||||
this->mUnk_14 = -0x8000;
|
||||
this->mAngle = DEG_TO_ANG(-180);
|
||||
break;
|
||||
case 2:
|
||||
case 7:
|
||||
case 9:
|
||||
this->mUnk_14 = 0x4000;
|
||||
this->mAngle = DEG_TO_ANG(90);
|
||||
break;
|
||||
case 3:
|
||||
case 5:
|
||||
case 11:
|
||||
this->mUnk_14 = -0x4000;
|
||||
this->mAngle = DEG_TO_ANG(-90);
|
||||
break;
|
||||
default:
|
||||
this->mUnk_14 = 0;
|
||||
this->mAngle = DEG_TO_ANG(0);
|
||||
break;
|
||||
}
|
||||
|
||||
func_01ff9638(&vec, -this->mUnk_14);
|
||||
func_01ff9638(&vec, -this->mAngle);
|
||||
VecFx32_Add(&this->mPos, &vec, &this->mPos);
|
||||
return true;
|
||||
}
|
||||
|
||||
void MapObjectMiniBlocks::vfunc_14(void) {
|
||||
Mat3p m;
|
||||
u16 unk_14 = this->mUnk_14;
|
||||
u16 unk_14 = this->mAngle;
|
||||
Mat3p_InitYRotation(&m, SIN(unk_14), COS(unk_14));
|
||||
this->mUnk_40.vfunc_14(&m, &this->mPos);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
#include "MapObject/MapObjectPot_Base.hpp"
|
||||
|
||||
extern "C" void func_ov000_020a14e4(unk8, VecFx32 *);
|
||||
|
||||
MapObjectPot_Base::MapObjectPot_Base() {
|
||||
this->mUnk_40 = 0;
|
||||
this->mUnk_44 = 0;
|
||||
|
||||
this->func_ov000_0209da78(0x0, 0x1);
|
||||
this->func_ov000_0209da78(0x1, 0x0);
|
||||
}
|
||||
|
||||
MapObjectPot_Base::~MapObjectPot_Base() {}
|
||||
|
||||
bool MapObjectPot_Base::vfunc_00() {
|
||||
this->SetState(MapObjPot_BaseState_0, 0x1);
|
||||
return true;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool MapObjectPot_Base::SetState(MapObjState state, unk32 param2) {
|
||||
if (param2 == 0x0 && this->mState == MapObjPot_BaseState_1) {
|
||||
return;
|
||||
}
|
||||
this->mState = state;
|
||||
switch (this->mState) {
|
||||
case MapObjPot_BaseState_0:
|
||||
break;
|
||||
case MapObjPot_BaseState_1:
|
||||
this->vfunc_48();
|
||||
if (this->vfunc_40()) {
|
||||
func_ov000_020a14e4(this->mUnk_38, &this->mPos);
|
||||
} else {
|
||||
if (this->vfunc_4C()) {
|
||||
unk32 val = this->vfunc_54();
|
||||
this->vfunc_3C();
|
||||
}
|
||||
}
|
||||
this->MapObject::func_ov000_0209d614(0x1);
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_Alive);
|
||||
break;
|
||||
case MapObjPot_BaseState_2:
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_Alive);
|
||||
break;
|
||||
case MapObjPot_BaseState_3:
|
||||
this->vfunc_38();
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_Alive);
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void MapObjectPot_Base::vfunc_24(MapObject *param1, VecFx32 param2) {}
|
||||
// non-matching
|
||||
void MapObjectPot_Base::vfunc_38() {}
|
||||
// non-matching
|
||||
unk32 MapObjectPot_Base::vfunc_28() {}
|
||||
// non-matching
|
||||
void MapObjectPot_Base::vfunc_48() {}
|
||||
|
||||
unk32 MapObjectPot_Base::vfunc_54() {
|
||||
return this->mUnk_20.mParams[0] & 0xFF;
|
||||
}
|
||||
|
||||
bool MapObjectPot_Base::vfunc_4C() {
|
||||
return true;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void MapObjectPot_Base::func_ov000_0209da78(unk32 param1, unk32 param2) {}
|
||||
// non-matching
|
||||
void MapObjectPot_Base::vfunc_50(ActorRef *param1, MapObjectPot_Base *thisx) {}
|
||||
@@ -31,7 +31,7 @@ ActorProfileBlast::ActorProfileBlast() :
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool ActorBlast_E8::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2) {}
|
||||
bool ActorBlast_E8::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {}
|
||||
|
||||
ActorBlast::ActorBlast() :
|
||||
mUnk_94(FLOAT_TO_FX32(0.625f)),
|
||||
@@ -146,7 +146,7 @@ fx32 ActorBlast::func_ov031_020e3b94() {
|
||||
return FLOAT_TO_FX32(0.5f);
|
||||
}
|
||||
|
||||
void ActorBlast::func_ov031_020e3b9c(unk16 param1, unk16 param2) {
|
||||
void ActorBlast::func_ov031_020e3b9c(Actor *spawner, unk16 param1, unk16 param2) {
|
||||
ActorParams actorParams;
|
||||
ActorRef ref;
|
||||
|
||||
@@ -154,11 +154,11 @@ void ActorBlast::func_ov031_020e3b9c(unk16 param1, unk16 param2) {
|
||||
actorParams.func_ov000_020975f8();
|
||||
actorParams.func_ov000_020975f8();
|
||||
|
||||
actorParams.mUnk_28 = this->mRef;
|
||||
VecFx32_Copy(&this->mPos, &actorParams.mInitialPos);
|
||||
actorParams.mUnk_28 = spawner->mRef;
|
||||
VecFx32_Copy(&spawner->mPos, &actorParams.mInitialPos);
|
||||
|
||||
actorParams.mParams[0] = param1;
|
||||
actorParams.mParams[1] = param2;
|
||||
|
||||
this->func_ov000_020973f4(&ref, &data_ov000_020b539c_eur, ActorId_Blast, &actorParams, 0x0);
|
||||
spawner->func_ov000_020973f4(&ref, &data_ov000_020b539c_eur, ActorId_Blast, &actorParams, 0x0);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,889 @@
|
||||
#include "Actor/ActorBomb.hpp"
|
||||
|
||||
#include "Actor/ActorBlast.hpp"
|
||||
#include "Actor/ActorManager.hpp"
|
||||
#include "Actor/Actor_Derived1.hpp"
|
||||
#include "MainGame/AdventureMode.hpp"
|
||||
#include "Map/MapObjectId.hpp"
|
||||
#include "MapObject/MapObjectBombFlower.hpp"
|
||||
#include "MapObject/MapObjectProfile.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b4.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09c0.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
#include "Unknown/UnkStruct_027e0d38.hpp"
|
||||
#include "Unknown/UnkStruct_027e0d8c.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b5d34.hpp"
|
||||
|
||||
struct UnkStruct_ov031_020e5d18_00 {
|
||||
/* 00 */ Actor *mUnk_00;
|
||||
/* 04 */ STRUCT_PAD(0x04, 0x18);
|
||||
/* 18 */
|
||||
};
|
||||
|
||||
extern "C" VecFx32 data_027e07d4;
|
||||
extern "C" unk32 data_ov000_020aecf8;
|
||||
extern "C" VecFx32 data_ov031_02110a10;
|
||||
extern "C" VecFx32 data_ov031_02110a28;
|
||||
extern "C" char data_ov031_02110a50;
|
||||
extern "C" char data_ov031_02110a60;
|
||||
extern "C" char data_ov031_02110a70;
|
||||
|
||||
extern "C" bool func_01ff916c(void *, int, int);
|
||||
extern "C" void func_01ff9218(fx32 *, fx32, fx32);
|
||||
extern "C" unk32 func_01ff9258(fx32, fx32);
|
||||
extern "C" void func_01ff94cc(VecFx32 *, VecFx32 *, VecFx32 *);
|
||||
extern "C" fx32 func_01ffb464(fx32);
|
||||
extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, VecFx32 *);
|
||||
extern "C" void func_01ffb974(unk32, VecFx32 *, VecFx32 *, VecFx32 *);
|
||||
extern "C" void func_01ffc5a0(ModelRender *, unk32, UnkAngleStruct, void *);
|
||||
extern "C" void func_01ffe6c4(UnkStruct_ov031_020e5d18_00 *, ActorRef, VecFx32 *, VecFx32 *, s32, VecFx32 *,
|
||||
UnkStruct_ov031_Items_00_Base *);
|
||||
extern "C" void func_0200b578(G3d_RenderObject *, void (*)(), unk32, unk32, unk32);
|
||||
|
||||
extern "C" void func_ov017_020c2438(unk32 *, unk32, VecFx32 *, unk32, unk32);
|
||||
extern "C" void func_ov017_020c26f8(unk32, VecFx32 *, unk32, unk32);
|
||||
|
||||
static ActorUnkZLSL_AnimationTag data_ov031_02112be8 = {.index = 0, .name = "bomb_clanim", .unknown = 0};
|
||||
static PTMF<ActorBomb> data_ov031_02112c00[ActorBombState_Max] = {
|
||||
ActorBomb::func_ov031_020e1da0, // ActorUnkBOMBState_0
|
||||
ActorBomb::func_ov031_020e1ed8, // ActorUnkBOMBState_1
|
||||
ActorBomb::func_ov031_020e1f88, // ActorUnkBOMBState_2
|
||||
ActorBomb::func_ov031_020e1fe4, // ActorUnkBOMBState_3
|
||||
ActorBomb::func_ov031_020e2064, // ActorUnkBOMBState_4
|
||||
ActorBomb::func_ov031_020e20fc, // ActorUnkBOMBState_5
|
||||
ActorBomb::func_ov031_020e2134, // ActorUnkBOMBState_6
|
||||
};
|
||||
|
||||
static PTMF<ActorBomb> data_ov031_02112c38[ActorBombState_Max] = {
|
||||
ActorBomb::func_ov031_020e1d48, // ActorUnkBOMBState_0
|
||||
ActorBomb::func_ov031_020e1ebc, // ActorUnkBOMBState_1
|
||||
ActorBomb::func_ov031_020e1f18, // ActorUnkBOMBState_2
|
||||
ActorBomb::func_ov031_020e1fe0, // ActorUnkBOMBState_3
|
||||
ActorBomb::func_ov031_020e2034, // ActorUnkBOMBState_4
|
||||
ActorBomb::func_ov031_020e20d8, // ActorUnkBOMBState_5
|
||||
ActorBomb::func_ov031_020e2100, // ActorUnkBOMBState_6
|
||||
};
|
||||
|
||||
DECL_PROFILE(ActorProfileBomb);
|
||||
|
||||
Actor *ActorProfileBomb::Create() {
|
||||
return new(HeapIndex_2) ActorBomb();
|
||||
}
|
||||
|
||||
ActorProfileBomb::ActorProfileBomb() :
|
||||
ActorProfile(ActorId_Bomb) {
|
||||
this->mUnk_04.Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.2999f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.4f));
|
||||
}
|
||||
|
||||
G3d_Model *ActorBomb::func_ov031_020e1540(u16 param1) {
|
||||
if (param1 == 0x0) {
|
||||
return data_027e0ce0->mUnk_1C->func_ov000_0208ed30(0x0, 0x1, &data_ov031_02110a60);
|
||||
}
|
||||
|
||||
return G3d_GetModelPtr(
|
||||
((MapObjectProfileBombFlower *) data_ov000_020b5d34.GetProfileFromId(MapObjectId_BombFlower))->mUnk_20.mUnk_50);
|
||||
}
|
||||
|
||||
UnkStruct_ov000_02058a84 *ActorBomb::func_ov031_020e15d0(u16 param1) {
|
||||
if (param1 == 0x0) {
|
||||
return data_027e0ce0->mUnk_1C->func_ov000_0208ee94(0x0, 0x1, &data_ov031_02110a70, 0x1);
|
||||
}
|
||||
return ((MapObjectProfileBombFlower *) data_ov000_020b5d34.GetProfileFromId(MapObjectId_BombFlower))
|
||||
->mUnk_20.func_ov000_02058a84(0x1, &data_ov031_02110a50);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
// seems not to be in the actor
|
||||
// use a pattern like this->mUnk_04->mUnk_04
|
||||
// so it's not ActorBomb and the class has at
|
||||
// least 0xB3 bytes so it does not seem to be
|
||||
// one of the auxiliary classes
|
||||
void ActorBomb::func_ov031_020e1634() {}
|
||||
|
||||
ActorBomb::ActorBomb() :
|
||||
mUnk_094(this->func_ov031_020e1540(this->mUnk_5C.mParams[0])),
|
||||
mUnk_0F4(&this->mUnk_114, this->func_ov031_020e1540(this->mUnk_5C.mParams[0])),
|
||||
mUnk_17C(NULL),
|
||||
mUnk_180(this),
|
||||
mUnk_19C(this),
|
||||
mUnk_1CC(data_027e07d4),
|
||||
mUnk_1D8(0x1000),
|
||||
mUnk_1DC(0x0),
|
||||
mUnk_1E0(0x0),
|
||||
mUnk_1E4(0x0),
|
||||
mUnk_1E8(0x0),
|
||||
mUnk_1EA(0x0),
|
||||
mUnk_1EC(0x0),
|
||||
mUnk_1EE(false),
|
||||
#if IS_JP
|
||||
mUnk_1F0(false),
|
||||
mUnk_1F1(false)
|
||||
#else
|
||||
mUnk_1F0(false)
|
||||
#endif
|
||||
{
|
||||
if (this->mUnk_5C.mParams[0] != 0x1) {
|
||||
this->mUnk_1EF = false;
|
||||
this->mUnk_17C = &data_ov031_02110a28;
|
||||
} else {
|
||||
func_0200b578(&this->mUnk_094.mRenderObj, this->func_ov031_020e1634, 0x0, 0x2, 0x2);
|
||||
this->mUnk_17C = &data_ov031_02110a10;
|
||||
this->mUnk_1EF = true;
|
||||
}
|
||||
this->mUnk_164[0].mUnk_04 = 0x810;
|
||||
this->mUnk_164[0].mUnk_08 = 0x2;
|
||||
this->mUnk_164[1].mUnk_04 = 0x811;
|
||||
this->mUnk_164[1].mUnk_08 = 0x2;
|
||||
SET_FLAG(this->mFlags, ActorFlag_11);
|
||||
#if IS_JP
|
||||
SET_FLAG(this->mFlags, ActorFlag_13);
|
||||
#endif
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e17f4() {}
|
||||
|
||||
bool ActorBomb::vfunc_18(unk32 param1) {
|
||||
Cylinder *profileCylinder = &this->mpProfile->mUnk_04;
|
||||
|
||||
this->mUnk_154.pos = profileCylinder->pos;
|
||||
this->mUnk_154.size = profileCylinder->size;
|
||||
this->mUnk_30 = &this->mUnk_154;
|
||||
|
||||
this->SetState(ActorBombState_0);
|
||||
|
||||
this->mUnk_19C.mUnk_04 = this->mRef;
|
||||
VecFx32_Copy(&this->mPos, &this->mUnk_19C.mUnk_0C.pos);
|
||||
this->mUnk_19C.mUnk_0C.size = 0x666;
|
||||
|
||||
this->mUnk_1EC = 0x78;
|
||||
this->mUnk_1EA = 0x0;
|
||||
this->Actor::func_ov000_0209862c(0x2);
|
||||
return true;
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e18a0() {
|
||||
this->func_ov000_0209862c(0x2);
|
||||
this->mUnk_2C = data_ov000_020aecf8;
|
||||
}
|
||||
|
||||
void ActorBomb::SetState(ActorState state) {
|
||||
this->mState = state;
|
||||
this->func_ov031_020e18a0();
|
||||
|
||||
CALL_PTMF(PTMF<ActorBomb>, data_ov031_02112c38[this->mState]);
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e1908() {
|
||||
this->mUnk_134.mUnk_04 |= 0x8000;
|
||||
this->mUnk_1F0 = true;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void ActorBomb::func_ov031_020e1920(VecFx32 *param1) {
|
||||
fx32 y = param1->y;
|
||||
fx32 z = param1->z;
|
||||
fx32 x = param1->x;
|
||||
this->mUnk_1CC.x = x;
|
||||
this->mUnk_1CC.y = y;
|
||||
this->mUnk_1CC.z = z;
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e193c() {
|
||||
if (this->mUnk_1EF && GET_FLAG(this->mFlags, ActorFlag_Visible)) {
|
||||
VecFx32 sp0C;
|
||||
func_01ffb974(this->mUnk_1D8, this->mUnk_17C, &this->mPos, &sp0C);
|
||||
VecFx32 sp00;
|
||||
// weird logic + 1
|
||||
func_01ffb974(this->mUnk_1D8, this->mUnk_17C + 1, &this->mPos, &sp00);
|
||||
|
||||
data_027e0cec->func_ov000_020a0140(&this->mUnk_164[0], &sp0C);
|
||||
data_027e0cec->func_ov000_020a0140(&this->mUnk_164[1], &sp00);
|
||||
|
||||
for (ActorBomb_unk *ptr = this->mUnk_164; ptr != this->mUnk_164 + ARRAY_LEN(this->mUnk_164); ptr++) {
|
||||
if (ptr->mUnk_00 != NULL) {
|
||||
ptr->mUnk_00->mUnk_24 &= ~0x8;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
for (ActorBomb_unk *ptr = this->mUnk_164; ptr != this->mUnk_164 + ARRAY_LEN(this->mUnk_164); ptr++) {
|
||||
ptr->func_ov000_020a0334();
|
||||
}
|
||||
}
|
||||
|
||||
void ActorBomb::vfunc_20() {
|
||||
this->mUnk_3C = &this->mUnk_134;
|
||||
|
||||
CALL_PTMF(PTMF<ActorBomb>, data_ov031_02112c00[this->mState]);
|
||||
this->func_ov031_020e1b7c();
|
||||
|
||||
if (!GET_FLAG(this->mFlags, ActorFlag_Alive)) {
|
||||
return;
|
||||
}
|
||||
this->func_ov031_020e193c();
|
||||
|
||||
if (this->mState != ActorBombState_2 && this->mState != ActorBombState_4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (func_01ff9258(this->mVel.x, this->mVel.z) <= 0x52) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->mUnk_1E4.type == 0x1) {
|
||||
if (!this->func_ov031_020e25bc()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ActorBlast::func_ov031_020e3b9c(this, 0x0, 0x0);
|
||||
this->func_ov000_020984d0();
|
||||
return;
|
||||
}
|
||||
|
||||
this->func_ov031_020e262c();
|
||||
}
|
||||
|
||||
void ActorBomb::vfunc_24() {
|
||||
if (this->mState != ActorBombState_1) {
|
||||
return;
|
||||
}
|
||||
this->func_ov031_020e1ed8();
|
||||
this->func_ov031_020e193c();
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void ActorBomb::func_ov031_020e1b1c() {
|
||||
UnkStruct_ov000_02058a84 *param1 = this->func_ov031_020e15d0(this->mUnk_5C.mParams[0]);
|
||||
|
||||
bool param3 = !(param1->mUnk_6 & 0x2);
|
||||
|
||||
this->mUnk_0F4.func_ov000_020577a4(param1, 0x0, param3);
|
||||
|
||||
this->mUnk_0F4.mUnk_08 = 0x1000;
|
||||
this->mUnk_0F4.mUnk_04 = data_ov031_02112be8.unknown;
|
||||
|
||||
this->mUnk_094.func_ov000_02057cf4();
|
||||
|
||||
this->mUnk_094.func_ov000_02057c98(&this->mUnk_0F4);
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e1b7c() {
|
||||
if (!this->mUnk_1EF) {
|
||||
return;
|
||||
}
|
||||
data_027e09a8->func_ov000_02071d34(&this->mRef, 0xF4, &this->mPos, 0x0);
|
||||
|
||||
if (!this->mUnk_1EE) {
|
||||
if (!this->IsInternalTimerOut()) {
|
||||
return;
|
||||
}
|
||||
|
||||
this->mUnk_1EE = true;
|
||||
this->mUnk_1EC = 0x3C;
|
||||
this->mUnk_1EA = 0x00;
|
||||
this->func_ov031_020e1b1c();
|
||||
return;
|
||||
}
|
||||
fx32 delta = this->mUnk_1EC - this->mUnk_1EA;
|
||||
this->mUnk_0F4.mUnk_08 = FLOAT_TO_FX32(1.5f) - delta * FLOAT_TO_FX32(0.01985f);
|
||||
this->mUnk_0F4.func_01ffc3b4();
|
||||
|
||||
if (delta > 0x0) {
|
||||
func_01ff9218(&this->mUnk_1D8, FLOAT_TO_FX32(1.3f), func_01ffb464((u32) delta << 0xC));
|
||||
}
|
||||
if (!this->IsInternalTimerOut()) {
|
||||
return;
|
||||
}
|
||||
ActorBlast::func_ov031_020e3b9c(this, 0x0, 0x0);
|
||||
|
||||
if (this->mState == ActorBombState_6) {
|
||||
ActorParams params;
|
||||
ActorRef ref;
|
||||
params.mUnk_28 = 0;
|
||||
params.func_ov000_020975f8();
|
||||
|
||||
VecFx32_Copy(&this->mPos, ¶ms.mInitialPos);
|
||||
params.mInitialPos.y = this->mUnk_1DC;
|
||||
this->Actor::func_ov000_020973f4(&ref, &data_ov000_020b539c_eur, ActorId_EFSC, ¶ms, 0x0);
|
||||
}
|
||||
this->Actor::func_ov000_020984d0();
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e1d18() {
|
||||
this->func_ov000_02098838();
|
||||
VecFx32_Add(&this->mPos, &this->mUnk_1CC, &this->mPos);
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_1CC);
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e1d48() {
|
||||
this->mUnk_1E4 = 0;
|
||||
this->mUnk_2C = 0x0;
|
||||
}
|
||||
|
||||
bool ActorBomb::func_ov031_020e1d58() {
|
||||
return this->mUnk_154.pos.y >= FLOAT_TO_FX32(0.2999f);
|
||||
}
|
||||
|
||||
bool ActorBomb::func_ov031_020e1d74() {
|
||||
if (this->func_ov031_020e1d58()) {
|
||||
if (this->mUnk_46 & 0x1) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e1da0() {
|
||||
this->func_ov031_020e1d18();
|
||||
|
||||
VecFx32_Copy(&this->mPos, &this->mPrevPos);
|
||||
VecFx32_Add(&this->mPos, &this->mVel, &this->mPos);
|
||||
|
||||
this->func_ov031_020e2a9c();
|
||||
|
||||
if (this->func_ov031_020e1d74() || this->mUnk_180.mUnk_04 & 0x1) {
|
||||
if (this->mUnk_180.mUnk_04 & 0x8) {
|
||||
if (this->func_ov031_020e1d58()) {
|
||||
this->SetState(ActorBombState_6);
|
||||
}
|
||||
} else {
|
||||
if (this->func_ov031_020e2b40()) {
|
||||
this->func_ov000_020984d0();
|
||||
return;
|
||||
}
|
||||
if (this->mUnk_180.mUnk_0C.z >= FLOAT_TO_FX32(-0.1003f)) {
|
||||
this->mUnk_2C = 0x0;
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mVel);
|
||||
func_01ffb974(-0x29, &this->mUnk_180.mUnk_0C, &this->mVel, &this->mVel);
|
||||
} else {
|
||||
func_01ff9218(&this->mUnk_2C, data_ov000_020aecf8, 0x800);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
func_01ff9218(&this->mUnk_2C, data_ov000_020aecf8, 0x200);
|
||||
}
|
||||
|
||||
this->func_ov031_020e238c();
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e1ebc() {
|
||||
this->func_ov000_0209862c(0x0);
|
||||
this->mUnk_2C = 0x0;
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e1ed8() {
|
||||
if (this->mUnk_1E0.type_index != 0x100) {
|
||||
return;
|
||||
}
|
||||
unk32 param1 = 0x101;
|
||||
if (this->mUnk_1E0.type_index == param1) {
|
||||
param1 = 0x0;
|
||||
} else {
|
||||
param1 = this->mUnk_1E0.unk_id;
|
||||
}
|
||||
data_027e0ce0->func_ov000_0208bacc(param1, &this->mPos);
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e1f18() {
|
||||
if (!this->mUnk_1EF) {
|
||||
bool var = true;
|
||||
if (this->mUnk_1E0.type_index != 0x100 && this->mUnk_1E0.type_index != 0x101) {
|
||||
var = false;
|
||||
}
|
||||
if (var) {
|
||||
#if IS_JP
|
||||
if (!this->mUnk_1F1)
|
||||
#endif
|
||||
{
|
||||
ItemManager *itemManager = data_027e0ce0->mUnk_2C;
|
||||
if (itemManager != NULL && itemManager->GetInventory()->GetBombAmount() > 0) {
|
||||
itemManager->GetInventory()->GiveBombs(-1);
|
||||
#if IS_JP
|
||||
this->mUnk_1F1 = true;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!this->mUnk_1F0) {
|
||||
this->mUnk_1EF = true;
|
||||
}
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e1f88() {
|
||||
this->mUnk_3C = &this->mUnk_134;
|
||||
|
||||
this->func_ov031_020e1d18();
|
||||
|
||||
VecFx32_Copy(&this->mPos, &this->mPrevPos);
|
||||
VecFx32_Add(&this->mPos, &this->mVel, &this->mPos);
|
||||
|
||||
this->func_ov031_020e2a9c();
|
||||
this->func_ov031_020e2c2c();
|
||||
this->func_ov031_020e238c();
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e1fe0() {}
|
||||
|
||||
void ActorBomb::func_ov031_020e1fe4() {
|
||||
this->func_ov031_020e1d18();
|
||||
|
||||
VecFx32_Copy(&this->mPos, &this->mPrevPos);
|
||||
VecFx32_Add(&this->mPos, &this->mVel, &this->mPos);
|
||||
|
||||
this->func_ov031_020e2a9c();
|
||||
this->func_ov031_020e2c2c();
|
||||
this->func_ov031_020e238c();
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e2034() {
|
||||
this->mUnk_1E4 = 0;
|
||||
this->mUnk_2C = 0x0;
|
||||
|
||||
this->Actor::vfunc_40();
|
||||
|
||||
this->mUnk_44 = (s16) this->mUnk_44 & ~0x20;
|
||||
this->mUnk_134.func_ov000_02097bec();
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e2064() {
|
||||
this->Actor::vfunc_44();
|
||||
|
||||
if (GET_FLAG(this->mFlags, ActorFlag_5)) {
|
||||
this->SetState(ActorBombState_3);
|
||||
this->mUnk_44 = (s16) this->mUnk_44 | 0x20;
|
||||
}
|
||||
this->func_ov031_020e238c();
|
||||
this->func_ov031_020e1d18();
|
||||
|
||||
VecFx32_Copy(&this->mPos, &this->mPrevPos);
|
||||
VecFx32_Add(&this->mPos, &this->mVel, &this->mPos);
|
||||
|
||||
this->func_ov031_020e2a9c();
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e20d8() {
|
||||
this->mUnk_1E4 = 0x0;
|
||||
ActorBlast::func_ov031_020e3b9c(this, 0x1, 0x0);
|
||||
this->Actor::func_ov000_020984d0();
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e20fc() {}
|
||||
|
||||
void ActorBomb::func_ov031_020e2100() {
|
||||
fx32 newY = this->mPos.y - FLOAT_TO_FX32(0.0125f);
|
||||
newY -= FLOAT_TO_FX32(0.1875f);
|
||||
|
||||
this->mUnk_1E9 = 0x50;
|
||||
this->mUnk_2C = 0x0;
|
||||
this->mPos.y = newY;
|
||||
this->mUnk_1DC = newY;
|
||||
this->mUnk_44 = (s16) this->mUnk_44 & ~0x3;
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e2134() {
|
||||
fx32 newZ = MUL_FX32(this->mVel.z, FLOAT_TO_FX32(0.3f));
|
||||
fx32 newX = MUL_FX32(this->mVel.x, FLOAT_TO_FX32(0.3f));
|
||||
|
||||
this->mVel.x = newX;
|
||||
this->mVel.y = FLOAT_TO_FX32(-0.0102f);
|
||||
this->mVel.z = newZ;
|
||||
|
||||
VecFx32_Copy(&this->mPos, &this->mPrevPos);
|
||||
VecFx32_Add(&this->mPos, &this->mVel, &this->mPos);
|
||||
|
||||
ActorBomb_ov031_020e2134 sp00 = ActorBomb_ov031_020e2134();
|
||||
this->func_ov031_020e295c(&sp00);
|
||||
this->func_ov031_020e2820(&sp00);
|
||||
|
||||
if (!(--this->mUnk_1E9 & 0xFF)) {
|
||||
this->func_ov000_020984d0();
|
||||
}
|
||||
}
|
||||
|
||||
void ActorBomb::vfunc_2C(unk32 param1) {
|
||||
if (!this->Actor::func_01fff5d0(param1, 0x0)) {
|
||||
for (ActorBomb_unk *ptr = this->mUnk_164; ptr != this->mUnk_164 + ARRAY_LEN(this->mUnk_164); ptr++) {
|
||||
ptr->func_ov000_020a0334();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!data_027e09b8->mUnk_97) {
|
||||
for (ActorBomb_unk *ptr = this->mUnk_164; ptr != this->mUnk_164 + ARRAY_LEN(this->mUnk_164); ptr++) {
|
||||
if (ptr->mUnk_00 != NULL) {
|
||||
ptr->mUnk_00->mUnk_24 |= 0x8;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
for (ActorBomb_unk *ptr = this->mUnk_164; ptr != this->mUnk_164 + ARRAY_LEN(this->mUnk_164); ptr++) {
|
||||
if (ptr->mUnk_00 != NULL) {
|
||||
ptr->mUnk_00->mUnk_24 &= ~0x8;
|
||||
}
|
||||
}
|
||||
|
||||
func_01ffc5a0(&this->mUnk_094, this->mUnk_1D8, this->mAngleStruct, &this->mPos);
|
||||
|
||||
VecFx32 sp0C;
|
||||
VecFx32_Init(this->mPos.x, this->mPos.y + FLOAT_TO_FX32(0.4f), this->mPos.z, &sp0C);
|
||||
|
||||
if (this->mState == ActorBombState_6) {
|
||||
return;
|
||||
}
|
||||
|
||||
data_027e09b4->func_ov017_020c08c4(&sp0C, 0x59A, 0x59A, 0x1F, 0x0, 0x1);
|
||||
}
|
||||
|
||||
// non-matching (switch case)
|
||||
void ActorBomb::func_ov031_020e238c() {
|
||||
this->Actor::func_ov000_020989e0();
|
||||
if (!(this->mUnk_134.mUnk_08 & 0x3FFFF)) {
|
||||
return;
|
||||
}
|
||||
|
||||
u16 value = this->mUnk_134.mUnk_1C;
|
||||
switch ((s32) value) {
|
||||
case 15:
|
||||
this->mUnk_134.mUnk_04 &= ~0x8000;
|
||||
data_027e0d8c->func_ov093_021661c0(this->mRef);
|
||||
break;
|
||||
case 4:
|
||||
if (!data_027e0d38->func_ov031_020d9c04(0x1, 0x0, 0x0)) {
|
||||
break;
|
||||
}
|
||||
this->SetState(ActorBombState_4);
|
||||
break;
|
||||
case 0:
|
||||
this->SetState(ActorBombState_5);
|
||||
break;
|
||||
default:
|
||||
ActorBlast::func_ov031_020e3b9c(this, 0x0, 0x0);
|
||||
this->Actor::func_ov000_020984d0();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool ActorBomb::Grab(ActorGrabParams grabParams) {
|
||||
this->SetState(ActorBombState_1);
|
||||
this->mUnk_1E0 = grabParams.mUnk_00;
|
||||
this->mUnk_1E4 = 0;
|
||||
this->mUnk_180.mUnk_18 = 0x0;
|
||||
|
||||
this->Actor::Grab(grabParams);
|
||||
}
|
||||
|
||||
bool ActorBomb::Drop(ActorGrabParams grabParams, const VecFx32 *pVel) {
|
||||
this->SetState(ActorBombState_2);
|
||||
this->mUnk_1E4 = this->mUnk_1E0;
|
||||
this->mUnk_1E0 = 0x0;
|
||||
|
||||
if (!(grabParams.mUnk_00.type_index != 0x100 && grabParams.mUnk_00.type_index != 0x2 + 0xFF)) {
|
||||
unk32 param1;
|
||||
if (grabParams.mUnk_00.type_index == 0x101) {
|
||||
param1 = 0x0;
|
||||
} else {
|
||||
param1 = grabParams.mUnk_00.unk_id;
|
||||
}
|
||||
|
||||
VecFx32 sp0C = *this->Actor::func_ov000_0209853c(param1);
|
||||
|
||||
this->mUnk_154.pos.y = sp0C.y + FLOAT_TO_FX32(0.4f) - this->mPos.y;
|
||||
this->mPrevPos.x = sp0C.x;
|
||||
this->mPrevPos.z = sp0C.z;
|
||||
} else {
|
||||
Actor *actor = gpActorManager->func_01fff3b4(grabParams.mUnk_00);
|
||||
|
||||
if (actor != NULL) {
|
||||
VecFx32 sp00 = actor->mPos;
|
||||
this->mUnk_154.pos.y = sp00.y + FLOAT_TO_FX32(0.4f) - this->mPos.y;
|
||||
this->mPrevPos.x = sp00.x;
|
||||
this->mPrevPos.z = sp00.z;
|
||||
}
|
||||
}
|
||||
|
||||
return this->Actor::Drop(grabParams, pVel);
|
||||
}
|
||||
|
||||
bool ActorBomb::func_ov031_020e25bc() {
|
||||
bool ret = true;
|
||||
Cylinder cylinder;
|
||||
VecFx32_Copy(&this->mPos, &cylinder.pos);
|
||||
cylinder.size = 0x666;
|
||||
|
||||
if (!data_027e09c0->func_ov000_0207e458(0x4, 0x0, &cylinder.pos, 0x1, NULL, 0x0)) {
|
||||
ret = false;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool ActorBomb::func_ov031_020e262c() {
|
||||
VecFx32_Copy(&this->mPos, &this->mUnk_19C.mUnk_0C.pos);
|
||||
this->mUnk_19C.mUnk_0C.size = FLOAT_TO_FX32(0.4f);
|
||||
|
||||
data_027e09c0->func_ov000_0207e58c(this->mRef, 0x0, 0xC, &this->mUnk_19C);
|
||||
return true;
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e2680(VecFx32 *param1) {
|
||||
if (this->mVel.y == FLOAT_TO_FX32(0.0f)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (param1->x == FLOAT_TO_FX32(0.0f) && param1->y == FLOAT_TO_FX32(0.0f) && param1->z == FLOAT_TO_FX32(0.0f)) {
|
||||
return;
|
||||
}
|
||||
|
||||
VecFx32 sp0C = this->mVel;
|
||||
VecFx32 sp00 = this->mVel;
|
||||
|
||||
if (VecFx32_Dot(param1, &sp00) >= FLOAT_TO_FX32(0.0f)) {
|
||||
return;
|
||||
}
|
||||
|
||||
fx32 velLength = VecFx32_Length(&this->mVel);
|
||||
|
||||
func_01ff94cc(&sp00, param1, &sp0C);
|
||||
VecFx32_TryNormalize(&sp00);
|
||||
|
||||
this->mVel.x = MUL_FX32(sp00.x, MUL_FX32(velLength, FLOAT_TO_FX32(0.2f)));
|
||||
this->mVel.z = MUL_FX32(sp00.z, MUL_FX32(velLength, FLOAT_TO_FX32(0.2f)));
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e2780(VecFx32 *param1) {
|
||||
VecFx32 sp00 = *param1;
|
||||
|
||||
if (!VecFx32_TryNormalize(&sp00)) {
|
||||
return;
|
||||
}
|
||||
|
||||
fx32 dot = VecFx32_Dot(&sp00, &this->mVel);
|
||||
if (dot >= FLOAT_TO_FX32(0.0f)) {
|
||||
return;
|
||||
}
|
||||
|
||||
func_01ffb974(ROUND_FX32(dot * FLOAT_TO_FX32(-1.2002f)), &sp00, &this->mVel, &this->mVel);
|
||||
this->mVel.x = ROUND_FX32(this->mVel.x * FLOAT_TO_FX32(0.75f));
|
||||
this->mVel.z = ROUND_FX32(this->mVel.z * FLOAT_TO_FX32(0.75f));
|
||||
}
|
||||
|
||||
// non-matching
|
||||
fx32 ActorBomb::func_ov031_020e2820(UnkStruct_ov031_Items_00 *param1) {
|
||||
UnkStruct_ov031_020e5d18_00 sp60;
|
||||
sp60.mUnk_00 = NULL;
|
||||
VecFx32 sp54 = this->mPos;
|
||||
VecFx32 sp48 = this->mPrevPos;
|
||||
VecFx32 sp3C;
|
||||
|
||||
func_01ffb714(&sp54, &sp48, &sp3C);
|
||||
fx32 sp3CLength = VecFx32_Length(&sp3C);
|
||||
|
||||
VecFx32 sp0C = sp48;
|
||||
VecFx32 sp30 = sp0C;
|
||||
VecFx32 sp24 = sp0C;
|
||||
VecFx32 sp18 = sp3C;
|
||||
|
||||
if (VecFx32_TryNormalize(&sp18) != 0x0) {
|
||||
while (sp3CLength != FLOAT_TO_FX32(0.0f)) {
|
||||
if (sp3CLength > FLOAT_TO_FX32(0.5f)) {
|
||||
func_01ffb974(FLOAT_TO_FX32(0.5f), &sp18, &sp24, &sp24);
|
||||
sp3CLength -= FLOAT_TO_FX32(0.5f);
|
||||
} else {
|
||||
func_01ffb974(sp3CLength, &sp18, &sp24, &sp24);
|
||||
sp3CLength = FLOAT_TO_FX32(0.0f);
|
||||
}
|
||||
func_01ffe6c4(&sp60, this->mRef, &sp24, &sp30, (s16) this->mUnk_44, &this->mPos, param1);
|
||||
|
||||
if (!this->Actor::func_ov000_0207e294(this->mUnk_30)) {
|
||||
VecFx32_Copy(&sp24, &sp30);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return sp3CLength;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
fx32 ActorBomb::func_ov031_020e295c(UnkStruct_ov031_Items_00 *param1) {
|
||||
UnkStruct_ov031_020e5d18_00 sp60;
|
||||
sp60.mUnk_00 = NULL;
|
||||
VecFx32 sp54 = this->mPos;
|
||||
VecFx32 sp48 = this->mPrevPos;
|
||||
VecFx32 sp3C;
|
||||
|
||||
func_01ffb714(&sp54, &sp48, &sp3C);
|
||||
fx32 sp3CLength = VecFx32_Length(&sp3C);
|
||||
|
||||
VecFx32 sp0C = sp48;
|
||||
VecFx32 sp30 = sp0C;
|
||||
VecFx32 sp24 = sp0C;
|
||||
VecFx32 sp18 = sp3C;
|
||||
|
||||
if (VecFx32_TryNormalize(&sp18) != 0x0) {
|
||||
while (sp3CLength != FLOAT_TO_FX32(0.0f)) {
|
||||
if (sp3CLength > FLOAT_TO_FX32(0.5f)) {
|
||||
func_01ffb974(FLOAT_TO_FX32(0.5f), &sp18, &sp24, &sp24);
|
||||
sp3CLength -= FLOAT_TO_FX32(0.5f);
|
||||
} else {
|
||||
func_01ffb974(sp3CLength, &sp18, &sp24, &sp24);
|
||||
sp3CLength = FLOAT_TO_FX32(0.0f);
|
||||
}
|
||||
func_01ffe6c4(&sp60, this->mRef, &sp24, &sp30, (s16) this->mUnk_44, &this->mPos, param1);
|
||||
|
||||
if (!this->Actor::func_ov000_0207df88(this->mUnk_30, 0x10)) {
|
||||
VecFx32_Copy(&sp24, &sp30);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return sp3CLength;
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e2a9c() {
|
||||
UnkStruct_ov031_020e5d18_00 s0C;
|
||||
s0C.mUnk_00 = NULL;
|
||||
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_180.mUnk_0C);
|
||||
|
||||
func_01ffe6c4(&s0C, this->mRef, &this->mPos, &this->mPrevPos, (s16) this->mUnk_44, &this->mPos, &this->mUnk_180);
|
||||
|
||||
unk32 value = this->func_ov031_020e295c(&this->mUnk_180) | this->func_ov031_020e2820(&this->mUnk_180);
|
||||
if (this->mUnk_1E0.type_index != 0x0) {
|
||||
this->mUnk_154.pos.y = 0x4CC;
|
||||
} else {
|
||||
func_01ff916c(&this->mUnk_154.pos.y, 0x4CC, 0x333);
|
||||
}
|
||||
this->mUnk_46 = value;
|
||||
}
|
||||
|
||||
bool ActorBomb::func_ov031_020e2b40() {
|
||||
if (this->mUnk_180.mUnk_04 & 0x4) {
|
||||
func_ov017_020c26f8(0x2, &this->mPos, 0x1, 0x1);
|
||||
data_027e09a8->func_ov000_02071b30(0xED, &this->mPos, 0x0);
|
||||
|
||||
ActorBlast::func_ov031_020e3b9c(this, 0x0, 0x0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (this->mUnk_180.mUnk_04 & 0x2) {
|
||||
unk32 sp00;
|
||||
func_ov017_020c2438(&sp00, 0x2, &this->mPos, 0x1, 0x1);
|
||||
|
||||
data_027e09a8->func_ov000_02071b30(0xEA, &this->mPos, 0x0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!(this->mUnk_180.mUnk_04 & 0x1)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
data_027e09a8->func_ov000_02071b30(0xE8, &this->mPos, 0x0);
|
||||
return true;
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e2c2c() {
|
||||
if (this->func_ov031_020e1d74() || (this->mUnk_180.mUnk_04 & 0x1) != 0x0) {
|
||||
if (this->mUnk_1F0) {
|
||||
this->mUnk_1EF = true;
|
||||
}
|
||||
|
||||
if (this->mUnk_180.mUnk_04 & 0x8) {
|
||||
if (!this->func_ov031_020e1d58()) {
|
||||
return;
|
||||
}
|
||||
this->SetState(ActorBombState_6);
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->func_ov031_020e2b40()) {
|
||||
this->Actor::func_ov000_020984d0();
|
||||
return;
|
||||
}
|
||||
|
||||
++this->mUnk_1E8;
|
||||
this->mVel.y = MUL_FX32(-this->mVel.y, FLOAT_TO_FX32(0.6f));
|
||||
this->mVel.x = MUL_FX32(this->mVel.x, FLOAT_TO_FX32(0.2f));
|
||||
this->mVel.z = MUL_FX32(this->mVel.z, FLOAT_TO_FX32(0.2f));
|
||||
|
||||
if (this->mUnk_1E8 <= 0x3) {
|
||||
return;
|
||||
}
|
||||
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mVel);
|
||||
this->SetState(ActorBombState_0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(this->mUnk_46 & 0x1C)) {
|
||||
return;
|
||||
}
|
||||
|
||||
this->func_ov031_020e2780(&this->mUnk_180.mUnk_0C);
|
||||
}
|
||||
|
||||
ActorBomb_180::ActorBomb_180(Actor *param1) :
|
||||
mUnk_08(param1) {
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_0C);
|
||||
this->mUnk_18 = 0x0;
|
||||
}
|
||||
|
||||
ActorBomb_180::~ActorBomb_180() {
|
||||
this->mUnk_08 = NULL;
|
||||
}
|
||||
|
||||
// non-matching (wrong instruction in condition)
|
||||
bool ActorBomb_180::vfunc_08(const UnkStruct_ov031_020f3310 *param1) {
|
||||
if (((((u32) param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06]) >> 0x19) & 1) == 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
VecFx16_Copy2VecFx32(¶m1->mUnk_08, &this->mUnk_0C);
|
||||
return this->UnkStruct_ov031_Items_00::vfunc_08(param1);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool ActorBomb_180::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {}
|
||||
|
||||
bool ActorBomb_180::vfunc_10(ActorRef param1, unk32 param2) {
|
||||
if (param1.type == 0x1) {
|
||||
Actor *actor = gpActorManager->func_01fff3b4(param1);
|
||||
if (actor != NULL && actor->GetActorId() == ActorId_Bomb) {
|
||||
ActorBlast::func_ov031_020e3b9c(this->mUnk_08, 0x0, 0x0);
|
||||
this->mUnk_08->func_ov000_020984d0();
|
||||
((ActorBomb *) actor)->SetState(ActorBombState_5);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// non-matching (unreachable code ?)
|
||||
bool ActorBomb_ov031_020e2134::vfunc_08(const UnkStruct_ov031_020f3310 *param1) {
|
||||
if ((((u32) param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06] >> 0x9) & 0x7) == 0xA) {
|
||||
return false;
|
||||
}
|
||||
return this->UnkStruct_ov031_Items_00::vfunc_08(param1);
|
||||
}
|
||||
|
||||
ActorBomb_19C::ActorBomb_19C(Actor *param1) :
|
||||
mUnk_2C(param1) {}
|
||||
|
||||
void ActorBomb_19C::vfunc_10(Actor *actor) {
|
||||
Actor *bomb = this->mUnk_2C;
|
||||
if (!GET_FLAG(bomb->mFlags, ActorFlag_Alive)) {
|
||||
return;
|
||||
}
|
||||
ActorBlast::func_ov031_020e3b9c(bomb, 0x0, 0x0);
|
||||
this->mUnk_2C->func_ov000_020984d0();
|
||||
}
|
||||
|
||||
ActorBomb_unk::ActorBomb_unk() :
|
||||
UnkSystem7(NULL),
|
||||
mUnk_04(-0x1),
|
||||
mUnk_08(0x0) {}
|
||||
@@ -30,7 +30,7 @@ ActorProfileItemBoomerang::ActorProfileItemBoomerang() :
|
||||
|
||||
// non-matching
|
||||
ActorItemBoomerang::ActorItemBoomerang() :
|
||||
mUnk_94(data_027e0ce0->func_ov000_0208ed30(0x0, 0x1, ItemManager::func_ov000_020a8974(0x1)->mUnk_10)),
|
||||
mUnk_94(data_027e0ce0->mUnk_1C->func_ov000_0208ed30(0x0, 0x1, ItemManager::func_ov000_020a8974(0x1)->mUnk_10)),
|
||||
mUnk_9C(true),
|
||||
mUnk_11C(this),
|
||||
mUnk_12C(),
|
||||
|
||||
@@ -39,7 +39,7 @@ ActorProfileItemTornado::ActorProfileItemTornado() :
|
||||
|
||||
// non-matching
|
||||
ActorItemTornado::ActorItemTornado() :
|
||||
mUnk_94(data_027e0ce0->func_ov000_0208ed30(0x0, 0x1, data_ov031_02110a88)),
|
||||
mUnk_94(data_027e0ce0->mUnk_1C->func_ov000_0208ed30(0x0, 0x1, data_ov031_02110a88)),
|
||||
mUnk_F4(&this->mUnk_114, this->mUnk_94.mpModel),
|
||||
mUnk_134(&this->mUnk_154, this->mUnk_94.mpModel),
|
||||
mUnk_17C(NULL),
|
||||
@@ -268,7 +268,7 @@ void ActorItemTornado::vfunc_2C(unk32 param1) {
|
||||
VecFx32 vec = this->mPos;
|
||||
|
||||
if (this->mState == ActorItemTornadoState_0) {
|
||||
vec.y += (((FLOAT_TO_FX32(1.0f) - this->mUnk_1DC) << 0xC) + FLOAT_TO_FX32(0.5f)) >> 0xC;
|
||||
vec.y += ROUND_FX32(((FLOAT_TO_FX32(1.0f) - this->mUnk_1DC) << 0xC));
|
||||
}
|
||||
data_027e0958->func_ov000_02058fc4(&this->mUnk_17C, &vec);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "Actor/ActorRollingStone.hpp"
|
||||
|
||||
#include "Actor/ActorManager.hpp"
|
||||
#include "Physics/Cylinder.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
@@ -64,8 +65,23 @@ ActorProfileRollingStone::ActorProfileRollingStone() :
|
||||
// non-matching
|
||||
bool ActorRollingStone_104::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {}
|
||||
|
||||
// non-matching
|
||||
void ActorRollingStone_104::vfunc_10() {}
|
||||
bool ActorRollingStone_104::vfunc_10(ActorRef param1, unk32 param2) {
|
||||
if (param1.type != 0x0) {
|
||||
Actor *actor = gpActorManager->func_01fff3b4(param1);
|
||||
if (actor != NULL) {
|
||||
switch (actor->GetActorId()) {
|
||||
case ActorId_CASE:
|
||||
case ActorId_FMAS:
|
||||
case ActorId_FMLS:
|
||||
case ActorId_RCMS:
|
||||
return false;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return this->UnkStruct_027e0ce0_38_Base::vfunc_10(param1, param2);
|
||||
}
|
||||
|
||||
void ActorRollingStone_D4::vfunc_10(Actor *param1) {
|
||||
if (param1->GetActorId() != ActorId_RollingStone) {
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "Actor/ActorUnkBOMB.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
DECL_PROFILE(ActorProfileUnkBOMB);
|
||||
|
||||
Actor *ActorProfileUnkBOMB::Create() {
|
||||
return new(HeapIndex_2) ActorUnkBOMB();
|
||||
}
|
||||
|
||||
ActorProfileUnkBOMB::ActorProfileUnkBOMB() :
|
||||
ActorProfile(ActorId_BOMB) {}
|
||||
|
||||
ActorUnkBOMB::ActorUnkBOMB() {}
|
||||
|
||||
void ActorUnkBOMB::func_ov031_020e1540(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e15d0(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1634(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e17f4(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1808(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e181c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e18a0(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e18c4(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1908(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1920(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e193c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1a28(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1af8(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1b1c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1b7c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1d18(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1d48(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1d58(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1d74(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1da0(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1ebc(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1ed8(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1f18(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1f88(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1fe0(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e1fe4(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2034(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2064(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e20d8(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e20fc(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2100(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2134(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2220(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2234(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e238c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e246c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e24ac(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e25bc(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e262c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2680(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2780(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2820(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e295c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2a9c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2b40(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2c2c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2d78(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2df4(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e2e3c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e328c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e3310(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e3340(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e337c(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e33ac(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e33c0(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e33dc(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e33f8(void) {}
|
||||
void ActorUnkBOMB::func_ov031_020e3448(void) {}
|
||||
|
||||
ActorUnkBOMB::~ActorUnkBOMB() {}
|
||||
ActorProfileUnkBOMB::~ActorProfileUnkBOMB() {}
|
||||
@@ -1,4 +1,6 @@
|
||||
#include "Actor/ActorUnkROCK.hpp"
|
||||
|
||||
#include "MapObject/MapObject_10_Pot.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b4.hpp"
|
||||
@@ -6,7 +8,7 @@
|
||||
|
||||
extern "C" Mat3p data_027e0130;
|
||||
|
||||
static MapObject_10 data_ov031_021166b8;
|
||||
static MapObject_10_Pot data_ov031_021166b8;
|
||||
|
||||
DECL_PROFILE(ActorProfileUnkROCK);
|
||||
|
||||
@@ -17,9 +19,10 @@ Actor *ActorProfileUnkROCK::Create() {
|
||||
// non-matching
|
||||
ActorProfileUnkROCK::ActorProfileUnkROCK() :
|
||||
ActorProfileUnkROCK_Base(ActorId_ROCK) {
|
||||
this->mUnk_04.Init(FLOAT_TO_FX32(0.5f));
|
||||
this->mUnk_04.Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.5f));
|
||||
VecFx32_Init(FLOAT_TO_FX32(7.0017f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_D8.mUnk_0C);
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.6f), FLOAT_TO_FX32(1.2f), &this->mUnk_D8.mUnk_18);
|
||||
this->mUnk_D8.mUnk_18 = FLOAT_TO_FX32(0.6f);
|
||||
this->mUnk_D8.mUnk_1C = FLOAT_TO_FX32(1.2f);
|
||||
}
|
||||
|
||||
ActorUnkROCK::ActorUnkROCK() :
|
||||
@@ -105,9 +108,8 @@ void ActorUnkROCK::vfunc_2C(unk32 param1) {
|
||||
data_027e09b4->func_01fff60c(&this->mPos, 0xC00, 0xC00, 0x1F, 0x0, 0x0);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool ActorUnkROCK::Grab(ActorGrabParams param1) {
|
||||
if (param1.unk_00 != 0x100 || param1.unk_02 != 1) {
|
||||
if (param1.mUnk_00.type_index != 0x100 || param1.mUnk_00.unk_id != 1) {
|
||||
return false;
|
||||
}
|
||||
if (!this->Actor::Grab(param1)) {
|
||||
@@ -117,7 +119,6 @@ bool ActorUnkROCK::Grab(ActorGrabParams param1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool ActorUnkROCK::Drop(ActorGrabParams param1, const VecFx32 *param2) {
|
||||
if (!this->Actor::Drop(param1, param2)) {
|
||||
return false;
|
||||
|
||||
@@ -60,7 +60,7 @@ void ActorUnkSWBM_98::vfunc_10(Actor *actor) {
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void ActorUnkSWBM_C8::vfunc_00(unk32 param1, unk32 param2, unk32 param3) {
|
||||
void ActorUnkSWBM_C8::vfunc_00(unk32 param1, unk32 param2) {
|
||||
ActorUnkSWBM *actor = this->mUnk_14;
|
||||
|
||||
FlushGfxQueue();
|
||||
|
||||
@@ -0,0 +1,257 @@
|
||||
#include "MapObject/MapObjectBombFlower.hpp"
|
||||
|
||||
#include "Actor/ActorBomb.hpp"
|
||||
#include "Actor/ActorManager.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0d38.hpp"
|
||||
|
||||
extern "C" fx32 func_01ffb464(fx32);
|
||||
extern "C" void func_01ff9218(fx32 *, fx32, fx32);
|
||||
extern "C" void func_ov031_020e0f30(ActorRef);
|
||||
|
||||
struct UnkStruct_ov031_02102728 {
|
||||
ActorRef ref;
|
||||
unk32 mUnk_04;
|
||||
};
|
||||
|
||||
DECL_PROFILE(MapObjectProfileBombFlower);
|
||||
|
||||
MapObject *MapObjectProfileBombFlower::Create() {
|
||||
return new(HeapIndex_ITCM) MapObjectBombFlower();
|
||||
}
|
||||
|
||||
MapObjectProfileBombFlower::MapObjectProfileBombFlower() :
|
||||
MapObjectProfile_Derived2(MapObjectId_BombFlower, MapObjectId_BombFlower) {
|
||||
this->mUnk_0E = 0x0;
|
||||
this->mUnk_06 = 0x0;
|
||||
this->mUnk_0C = 0x1333;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
MapObjectBombFlower::MapObjectBombFlower() :
|
||||
mUnk_48(G3d_GetModelPtr(GET_PROFILE(MapObjectProfileBombFlower)->mUnk_20.mUnk_50), 0x0, 0x0),
|
||||
mUnk_B4(0x1000),
|
||||
mUnk_B8(0x0),
|
||||
mUnk_BA(0x0),
|
||||
mUnk_BC(true) {
|
||||
SET_FLAG(this->mFlags, MapObjFlag_8);
|
||||
|
||||
if (this->mUnk_20.mParams[1] == 0x1) {
|
||||
this->mPos.x += FLOAT_TO_FX32(0.5f);
|
||||
}
|
||||
|
||||
this->mUnk_40 = ActorId_Bomb;
|
||||
|
||||
this->mUnk_C0.mUnk_08 = (unk32) 0x80007006;
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_C0.mUnk_0C);
|
||||
this->mUnk_C0.mUnk_18 = FLOAT_TO_FX32(0.5f);
|
||||
this->mUnk_C0.mUnk_1C = FLOAT_TO_FX32(1.2f);
|
||||
this->mUnk_10 = &this->mUnk_C0;
|
||||
|
||||
SET_FLAG(this->mFlags, MapObjFlag_6);
|
||||
}
|
||||
|
||||
bool MapObjectBombFlower::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) {
|
||||
this->mUnk_BC = false;
|
||||
switch (param2) {
|
||||
case 0xD:
|
||||
if (this->mState != MapObjBombFlowerState_0) {
|
||||
break;
|
||||
}
|
||||
func_ov031_020e0f30(param1);
|
||||
this->SetState(MapObjBombFlowerState_1, 0x0);
|
||||
break;
|
||||
case 0x0:
|
||||
case 0x3:
|
||||
case 0x7:
|
||||
case 0x8:
|
||||
case 0xA:
|
||||
case 0xC:
|
||||
if (this->mState != MapObjBombFlowerState_0) {
|
||||
break;
|
||||
}
|
||||
if (param2 != 0) {
|
||||
this->SetState(MapObjBombFlowerState_1, 0x0);
|
||||
break;
|
||||
}
|
||||
this->SetState(0x6, 0x0);
|
||||
break;
|
||||
case 0x4:
|
||||
if (this->mState != MapObjBombFlowerState_0) {
|
||||
return false;
|
||||
}
|
||||
if (data_027e0d38->func_ov031_020d9c04(0x2, 0x0, 0x1)) {
|
||||
this->SetState(MapObjBombFlowerState_3, 0x0);
|
||||
}
|
||||
return false;
|
||||
case 0x10:
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void MapObjectBombFlower::vfunc_48() {
|
||||
this->func_ov031_02102728(0x0);
|
||||
}
|
||||
|
||||
void MapObjectBombFlower::vfunc_58() {
|
||||
this->func_ov031_02102728(0x1);
|
||||
}
|
||||
|
||||
void MapObjectBombFlower::func_ov031_02102728(unk32 param1) {
|
||||
ActorParams params;
|
||||
params.mUnk_28 = 0;
|
||||
params.func_ov000_020975f8();
|
||||
|
||||
params.mUnk_28 = *(unk32 *) &this->mUnk_38;
|
||||
VecFx32_Copy(&this->mPos, ¶ms.mInitialPos);
|
||||
|
||||
params.mParams[0] = 0x0;
|
||||
if (param1 != 0x0) {
|
||||
params.mParams[0] = 0x1;
|
||||
}
|
||||
|
||||
UnkStruct_ov031_02102728 stack;
|
||||
Actor::func_ov000_020973f4(&stack.ref, &data_ov000_020b539c_eur, ActorId_Blast, ¶ms, 0);
|
||||
}
|
||||
|
||||
void MapObjectBombFlower::vfunc_08() {
|
||||
switch (this->mState) {
|
||||
case MapObjBombFlowerState_4:
|
||||
if (!this->mUnk_BC) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (!this->IsInternalTimerOut()) {
|
||||
break;
|
||||
}
|
||||
|
||||
this->SetState(MapObjBombFlowerState_5, 0x0);
|
||||
break;
|
||||
case MapObjBombFlowerState_5:
|
||||
if (this->IsInternalTimerOut()) {
|
||||
this->SetState(MapObjBombFlowerState_0, 0x0);
|
||||
break;
|
||||
}
|
||||
|
||||
fx32 delta = this->mUnk_BA - this->mUnk_B8;
|
||||
if (delta > 0x0) {
|
||||
func_01ff9218(&this->mUnk_B4, 0x1000, func_01ffb464((u32) delta << 0xC));
|
||||
}
|
||||
this->mUnk_B0 = this->mUnk_B4;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
this->mUnk_BC = true;
|
||||
}
|
||||
|
||||
bool MapObjectBombFlower::SetState(MapObjState state, unk32 param2) {
|
||||
if (param2 == 0x0 && this->mState == state) {
|
||||
return true;
|
||||
}
|
||||
this->mState = state;
|
||||
|
||||
switch (this->mState) {
|
||||
case MapObjBombFlowerState_1:
|
||||
this->vfunc_48();
|
||||
this->SetState(MapObjBombFlowerState_4, 0x0);
|
||||
break;
|
||||
|
||||
case MapObjBombFlowerState_6:
|
||||
this->vfunc_58();
|
||||
this->SetState(MapObjBombFlowerState_4, 0x0);
|
||||
break;
|
||||
|
||||
case MapObjBombFlowerState_2:
|
||||
this->SetState(MapObjBombFlowerState_4, 0x0);
|
||||
break;
|
||||
|
||||
case MapObjBombFlowerState_4:
|
||||
this->mUnk_C0.mUnk_04 &= 0xFD;
|
||||
this->mUnk_C0.mUnk_08 |= 0xA800000;
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
this->mUnk_B4 = FLOAT_TO_FX32(0.0f);
|
||||
this->mUnk_BA = 0xB4;
|
||||
this->mUnk_B8 = 0x00;
|
||||
break;
|
||||
|
||||
case MapObjBombFlowerState_5:
|
||||
this->mUnk_BA = 0xA;
|
||||
this->mUnk_B8 = 0x0;
|
||||
data_027e09a8->func_ov000_02071b30(0x10C, &this->mPos, 0x0);
|
||||
break;
|
||||
|
||||
case MapObjBombFlowerState_0:
|
||||
this->MapObjectPot_Base::SetState(state, param2);
|
||||
this->mUnk_C0.mUnk_04 |= 0x2;
|
||||
this->mUnk_C0.mUnk_08 &= ~0xA800000;
|
||||
SET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
this->mUnk_B4 = FLOAT_TO_FX32(1.0f);
|
||||
break;
|
||||
|
||||
case MapObjBombFlowerState_3:
|
||||
this->vfunc_38();
|
||||
this->SetState(MapObjBombFlowerState_4, 0x0);
|
||||
break;
|
||||
|
||||
default:
|
||||
this->MapObjectPot_Base::SetState(state, param2);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_B0 = this->mUnk_B4;
|
||||
return true;
|
||||
}
|
||||
|
||||
void MapObjectBombFlower::vfunc_14() {
|
||||
this->mUnk_48.func_ov031_02102c00();
|
||||
|
||||
this->MapObject::func_ov000_0209d518(&this->mPos, 0x5A7, 0x5A7, 0x1F);
|
||||
this->mUnk_48.vfunc_18(&this->mPos);
|
||||
}
|
||||
|
||||
void MapObjectBombFlower::vfunc_38() {
|
||||
ActorParams params;
|
||||
params.mUnk_28 = 0;
|
||||
params.func_ov000_020975f8();
|
||||
|
||||
params.mInitialAngle = this->mAngle;
|
||||
VecFx32_Copy(&this->mPos, ¶ms.mInitialPos);
|
||||
|
||||
params.mParams[0] = 0x1;
|
||||
ActorRef ref;
|
||||
Actor::func_ov000_020973f4(&ref, &data_ov000_020b539c_eur, this->mUnk_40, ¶ms, 0x0);
|
||||
|
||||
ActorBomb *bomb = (ActorBomb *) gpActorManager->func_01fff3b4(ref);
|
||||
if (bomb == NULL) {
|
||||
return;
|
||||
}
|
||||
bomb->SetState(ActorBombState_4);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
unk32 MapObjectBombFlower::vfunc_28() {
|
||||
if (this->mState == MapObjBombFlowerState_4) {
|
||||
return 0x0;
|
||||
}
|
||||
return this->MapObjectPot_Base::vfunc_28();
|
||||
}
|
||||
|
||||
// non-matching
|
||||
// https://decomp.me/scratch/WRLuY
|
||||
void MapObjectBombFlower::vfunc_50(ActorRef *param1, MapObjectPot_Base *thisx) {
|
||||
ActorParams params;
|
||||
params.mUnk_28 = 0;
|
||||
|
||||
params.func_ov000_020975f8();
|
||||
|
||||
params.mInitialAngle = thisx->mAngle;
|
||||
VecFx32_Copy(&thisx->mPos, ¶ms.mInitialPos);
|
||||
|
||||
params.mParams[0] = 0x1;
|
||||
Actor::func_ov000_020973f4(param1, &data_ov000_020b539c_eur, thisx->mUnk_40, ¶ms, 0x0);
|
||||
}
|
||||
@@ -382,7 +382,7 @@ void MapObjectDoorBase::vfunc_5C(MapObjState state, unk32 param2) {
|
||||
auStack_5c.mUnk_36 = unk_1E;
|
||||
auStack_5c.mUnk_34 = unk_1C;
|
||||
|
||||
auStack_5c.mUnk_1E = this->mUnk_14;
|
||||
auStack_5c.mUnk_1E = this->mAngle;
|
||||
this->mUnk_74 = data_027e09b8->func_ov000_02073388(&auStack_5c, 0);
|
||||
}
|
||||
|
||||
@@ -466,7 +466,7 @@ void MapObjectDoorBase::vfunc_5C(MapObjState state, unk32 param2) {
|
||||
auStack_9c.mUnk_36 = unk_1E;
|
||||
auStack_9c.mUnk_34 = unk_1C;
|
||||
|
||||
auStack_9c.mUnk_1E = this->mUnk_14;
|
||||
auStack_9c.mUnk_1E = this->mAngle;
|
||||
this->mUnk_74 = data_027e09b8->func_ov000_02073388(&auStack_9c, 0);
|
||||
|
||||
this->mUnk_84 = 0x0D;
|
||||
@@ -648,15 +648,15 @@ void MapObjectDoorBase::vfunc_4C() {}
|
||||
|
||||
void MapObjectDoorBase::vfunc_84(unk32 param1, VecFx32 *param2, unk16 *param3) {
|
||||
VecFx32 local_20;
|
||||
*param3 = this->mUnk_14;
|
||||
*param3 = this->mAngle;
|
||||
|
||||
if (param1 != 0) {
|
||||
local_20.x = MUL_FX32(SIN((u16) this->mUnk_14), 0x1000);
|
||||
local_20.z = MUL_FX32(COS((u16) this->mUnk_14), 0x1000);
|
||||
local_20.x = MUL_FX32(SIN((u16) this->mAngle), 0x1000);
|
||||
local_20.z = MUL_FX32(COS((u16) this->mAngle), 0x1000);
|
||||
local_20.y = 0;
|
||||
} else {
|
||||
local_20.x = MUL_FX32(SIN((u16) this->mUnk_14), 0xC00);
|
||||
local_20.z = MUL_FX32(COS((u16) this->mUnk_14), 0xC00);
|
||||
local_20.x = MUL_FX32(SIN((u16) this->mAngle), 0xC00);
|
||||
local_20.z = MUL_FX32(COS((u16) this->mAngle), 0xC00);
|
||||
local_20.y = 0;
|
||||
|
||||
*param3 += -DEG_TO_ANG(180);
|
||||
@@ -699,7 +699,7 @@ void MapObjectDoorBase::vfunc2_08() {
|
||||
u16 *temp_r3;
|
||||
u16 *temp_r3_2;
|
||||
|
||||
if (this->mState != MapObjDoorBaseState_1 || !this->mUnk_8C || (u16) (this->mUnk_14 + 0x2000) / DEG_TO_ANG(90) != 2) {
|
||||
if (this->mState != MapObjDoorBaseState_1 || !this->mUnk_8C || (u16) (this->mAngle + 0x2000) / DEG_TO_ANG(90) != 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -176,7 +176,7 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) {
|
||||
UnkStruct_Copy *temp_r0_3 = (UnkStruct_Copy *) func_ov000_02077590(3);
|
||||
|
||||
sp3C = *temp_r0_3;
|
||||
((unk16 *) sp3C.data)[3] = this->mUnk_14;
|
||||
((unk16 *) sp3C.data)[3] = this->mAngle;
|
||||
|
||||
UnkStruct_027e09bc_0C *temp_r5 = data_027e09bc->mUnk_0C;
|
||||
|
||||
@@ -564,7 +564,7 @@ void MapObjectDoorDangerSpawn::vfunc_18(s8 *param1, s8 param2) {
|
||||
|
||||
void MapObjectDoorDangerSpawn::vfunc_14(void) {
|
||||
Mat3p m;
|
||||
Mat3p_InitYRotation(&m, SIN((u16) this->mUnk_14), COS((u16) this->mUnk_14));
|
||||
Mat3p_InitYRotation(&m, SIN((u16) this->mAngle), COS((u16) this->mAngle));
|
||||
|
||||
VecFx32 pos(this->mPos);
|
||||
pos.y += -(this->mUnk_6C * 2);
|
||||
@@ -622,9 +622,9 @@ void MapObjectDoorDangerSpawn::vfunc_74(void) {
|
||||
local_28.y = local_34.y;
|
||||
local_28.z = local_34.z;
|
||||
|
||||
u16 var_r5 = (u16) (this->mUnk_14 + DEG_TO_ANG(45));
|
||||
u16 var_r5 = (u16) (this->mAngle + DEG_TO_ANG(45));
|
||||
|
||||
if (((u16) this->mUnk_14 / DEG_TO_ANG(90)) == 2 && this->mState == MapObjDoorDangerSpawnState_5) {
|
||||
if (((u16) this->mAngle / DEG_TO_ANG(90)) == 2 && this->mState == MapObjDoorDangerSpawnState_5) {
|
||||
var_r5 = 0;
|
||||
}
|
||||
|
||||
@@ -699,8 +699,8 @@ void MapObjectDoorDangerSpawn::vfunc_84(unk32 param1, VecFx32 *param2, unk16 *pa
|
||||
}
|
||||
|
||||
VecFx32 local_24;
|
||||
*param3 = this->mUnk_14;
|
||||
iVar1 = this->mUnk_14 + DEG_TO_ANG(30);
|
||||
*param3 = this->mAngle;
|
||||
iVar1 = this->mAngle + DEG_TO_ANG(30);
|
||||
if (param1 != 0) {
|
||||
local_24.x = MUL_FX32(SIN((u16) iVar1), 0x1666);
|
||||
local_24.z = MUL_FX32(COS((u16) iVar1), 0x1666);
|
||||
@@ -715,8 +715,8 @@ void MapObjectDoorDangerSpawn::vfunc_84(unk32 param1, VecFx32 *param2, unk16 *pa
|
||||
VecFx32_Add(&this->mPos, &local_24, param2);
|
||||
|
||||
VecFx32 local_30;
|
||||
this->mUnk_5A = this->mUnk_14;
|
||||
iVar1 = this->mUnk_14 - DEG_TO_ANG(30);
|
||||
this->mUnk_5A = this->mAngle;
|
||||
iVar1 = this->mAngle - DEG_TO_ANG(30);
|
||||
if (param1 != 0) {
|
||||
local_30.x = MUL_FX32(SIN((u16) iVar1), 0x1666);
|
||||
local_30.z = MUL_FX32(COS((u16) iVar1), 0x1666);
|
||||
|
||||
@@ -113,7 +113,7 @@ bool MapObjectDoorSwitch::vfunc_6C(void) {
|
||||
}
|
||||
|
||||
void MapObjectDoorSwitch::vfunc_14(void) {
|
||||
u16 angle = this->mUnk_14;
|
||||
u16 angle = this->mAngle;
|
||||
Mat3p m;
|
||||
|
||||
Mat3p_InitYRotation(&m, SIN(angle), COS(angle));
|
||||
@@ -133,7 +133,7 @@ void MapObjectDoorSwitch::vfunc_74(void) {
|
||||
VecFx32_Init(0, 0, 0x666, &local_2c);
|
||||
|
||||
Mat4x3p m;
|
||||
u16 angle = this->mUnk_14;
|
||||
u16 angle = this->mAngle;
|
||||
|
||||
Mat4x3p_InitYRotation(&m, SIN(angle), COS(angle));
|
||||
func_01ffaf74(&local_2c, &m, &local_2c);
|
||||
@@ -142,7 +142,7 @@ void MapObjectDoorSwitch::vfunc_74(void) {
|
||||
data_027e0cec->func_ov000_0209ff8c(&this->mUnk_68, 0x8CF, &local_20, 4);
|
||||
|
||||
if (this->mUnk_68.mUnk_00 != NULL) {
|
||||
this->mUnk_68.mUnk_00->mUnk_A4 = this->mUnk_14;
|
||||
this->mUnk_68.mUnk_00->mUnk_A4 = this->mAngle;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,15 @@ MapObject *MapObjectProfileGrass::Create() {
|
||||
|
||||
// non-matching
|
||||
MapObjectProfileGrass::MapObjectProfileGrass() :
|
||||
MapObjectProfile_Derived2(MapObjectId_Grass, MapObjectId_Grass) {}
|
||||
MapObjectProfilePot_Base(MapObjectId_Grass, MapObjectId_Grass) {
|
||||
this->mUnk_D4.mUnk_08 = 0x2A807003;
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_D4.mUnk_0C);
|
||||
this->mUnk_D4.mUnk_18 = FLOAT_TO_FX32(0.35f);
|
||||
this->mUnk_D4.mUnk_1C = FLOAT_TO_FX32(1.0f);
|
||||
this->mUnk_D4.mUnk_04 &= 0xFD;
|
||||
this->mUnk_06 = -0x1;
|
||||
this->mUnk_1E &= ~0x1;
|
||||
}
|
||||
|
||||
MapObjectGrass::MapObjectGrass() :
|
||||
mUnk_58(0x0),
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
#include "limits.h"
|
||||
|
||||
extern "C" MapObject_10 data_ov031_02118010;
|
||||
extern "C" MapObject_10_Pot data_ov031_02118010;
|
||||
|
||||
extern "C" fx32 func_01ffe868(VecFx32 *, unk32, unk32);
|
||||
extern "C" void func_ov031_020e0f30(ActorRef);
|
||||
@@ -22,15 +22,15 @@ MapObject *MapObjectProfilePot::Create() {
|
||||
|
||||
MapObjectProfilePot::MapObjectProfilePot() :
|
||||
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);
|
||||
this->mUnk_D4.mUnk_0C.y = FLOAT_TO_FX32(0.0f);
|
||||
this->mUnk_D4.mUnk_0C.z = FLOAT_TO_FX32(0.0f);
|
||||
this->mUnk_D4.mUnk_18.x = FLOAT_TO_FX32(0.5f);
|
||||
this->mUnk_D4.mUnk_18.y = FLOAT_TO_FX32(1.2f);
|
||||
this->mUnk_06 = 0x0;
|
||||
this->mUnk_0C = 0x1000;
|
||||
this->mUnk_0E = 0x0;
|
||||
this->mUnk_D4.mUnk_08 = 0x7007;
|
||||
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_D4.mUnk_0C);
|
||||
|
||||
this->mUnk_D4.mUnk_18 = FLOAT_TO_FX32(0.5f);
|
||||
this->mUnk_D4.mUnk_1C = FLOAT_TO_FX32(1.2f);
|
||||
this->mUnk_06 = 0x0;
|
||||
this->mUnk_0C = 0x1000;
|
||||
}
|
||||
|
||||
ModelRender_ov000_020b198c::ModelRender_ov000_020b198c(G3d_Model *pModel, unk8 param2) :
|
||||
@@ -54,78 +54,39 @@ void MapObjectPot::vfunc_04() {
|
||||
this->mPos.y = func_01ffe868(&this->mPos, 0x1, 0x0);
|
||||
}
|
||||
|
||||
void MapObjectPot::vfunc_14() {
|
||||
this->func_ov000_0209d518(&this->mPos, 0x5A7, 0x5A7, 0x1F);
|
||||
this->mUnk_48.vfunc_18(&this->mPos);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool MapObjectPot::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) {
|
||||
switch (param2) {
|
||||
case 0xD:
|
||||
this->vfunc_44(0x1, 0x0);
|
||||
this->SetState(0x1, 0x0);
|
||||
func_ov031_020e0f30(param1);
|
||||
return true;
|
||||
break;
|
||||
case 0x0:
|
||||
case 0x1:
|
||||
case 0x7:
|
||||
case 0x8:
|
||||
case 0xA:
|
||||
case 0xB:
|
||||
this->vfunc_44(0x1, 0x0);
|
||||
return true;
|
||||
this->SetState(0x1, 0x0);
|
||||
break;
|
||||
case 0x3:
|
||||
case 0xC:
|
||||
this->vfunc_44(0x1, 0x0);
|
||||
this->SetState(0x1, 0x0);
|
||||
return false;
|
||||
case 0xA:
|
||||
case 0xB:
|
||||
this->SetState(0x1, 0x0);
|
||||
break;
|
||||
case 0x4:
|
||||
if (data_027e0d38->func_ov031_020d9c04(0x1, 0x0, 0x0)) {
|
||||
Actor *actor = gpActorManager->func_01fff3b4(param1);
|
||||
if (actor != NULL) {
|
||||
this->mUnk_14 = actor->mAngle;
|
||||
this->vfunc_44(0x3, 0x0);
|
||||
this->mAngle = actor->mAngle;
|
||||
this->SetState(0x3, 0x0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
default:
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectPot::vfunc_24(MapObject *param1, VecFx32 param2) {
|
||||
this->func_ov000_0209d8e8((MapObjectPot_Base *) param1, param2.x);
|
||||
param1->func_ov000_0209d614(0x1);
|
||||
|
||||
if (((MapObjectPot_Base *) param1)->func_ov000_0209da64() != 0x65) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (param1->mUnk_20.mUnk_0A[0] == 0x0) {
|
||||
return;
|
||||
}
|
||||
|
||||
param1->func_ov000_0209d2c4(0x0, true);
|
||||
}
|
||||
|
||||
bool MapObjectPot::vfunc_3C() {
|
||||
if (this->func_ov000_0209da64() == 0x65) {
|
||||
return false;
|
||||
}
|
||||
if (this->func_ov000_0209da64() == 0x0) {
|
||||
return this->func_ov000_0209d668() == 0x0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MapObjectPot::vfunc_40() {
|
||||
if (this->func_ov000_0209da64() == 0x65) {
|
||||
if (!this->func_ov000_0209d29c(0x0)) {
|
||||
return true;
|
||||
}
|
||||
if (this->mUnk_20.mUnk_0A[0] == 0x0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void MapObjectPot::vfunc_48() {
|
||||
@@ -140,7 +101,7 @@ void MapObjectPot::vfunc_48() {
|
||||
|
||||
data_027e0cec->func_ov000_0209feac(0x822, &stack_09, 0x4, 0x0, 0x0);
|
||||
|
||||
if (this->func_ov000_0209da64() != 0x65) {
|
||||
if (this->MapObjectPot_Base::vfunc_54() != 0x65) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -150,8 +111,13 @@ void MapObjectPot::vfunc_48() {
|
||||
this->func_ov000_0209d2c4(0x0, true);
|
||||
}
|
||||
|
||||
void MapObjectPot::vfunc_14() {
|
||||
this->func_ov000_0209d518(&this->mPos, 0x5A7, 0x5A7, 0x1F);
|
||||
this->mUnk_48.vfunc_18(&this->mPos);
|
||||
}
|
||||
|
||||
unk32 MapObjectPot::vfunc_54() {
|
||||
if (this->func_ov000_0209da64() == 0x65) {
|
||||
if (this->MapObjectPot_Base::vfunc_54() == 0x65) {
|
||||
return 0x1;
|
||||
}
|
||||
|
||||
@@ -159,8 +125,42 @@ unk32 MapObjectPot::vfunc_54() {
|
||||
return 0x1;
|
||||
}
|
||||
|
||||
return this->func_ov000_0209da64();
|
||||
return this->MapObjectPot_Base::vfunc_54();
|
||||
}
|
||||
|
||||
MapObjectPot::~MapObjectPot() {}
|
||||
MapObjectProfilePot::~MapObjectProfilePot() {}
|
||||
void MapObjectPot::vfunc_24(MapObject *param1, VecFx32 param2) {
|
||||
this->MapObjectPot_Base::vfunc_24(param1, param2);
|
||||
param1->func_ov000_0209d614(0x1);
|
||||
|
||||
if (((MapObjectPot_Base *) param1)->MapObjectPot_Base::vfunc_54() != 0x65) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (param1->mUnk_20.mUnk_0A[0] == 0x0) {
|
||||
return;
|
||||
}
|
||||
|
||||
param1->func_ov000_0209d2c4(0x0, true);
|
||||
}
|
||||
|
||||
bool MapObjectPot::vfunc_3C() {
|
||||
if (this->MapObjectPot_Base::vfunc_54() == 0x65) {
|
||||
return false;
|
||||
}
|
||||
if (this->MapObjectPot_Base::vfunc_54() == 0x0) {
|
||||
return this->func_ov000_0209d668() == 0x0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MapObjectPot::vfunc_40() {
|
||||
if (this->MapObjectPot_Base::vfunc_54() == 0x65) {
|
||||
if (!this->func_ov000_0209d29c(0x0)) {
|
||||
return true;
|
||||
}
|
||||
if (this->mUnk_20.mUnk_0A[0] == 0x0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "MapObject/MapObjectUnkBMFL.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
DECL_PROFILE(MapObjectProfileUnkBMFL);
|
||||
|
||||
MapObject *MapObjectProfileUnkBMFL::Create() {
|
||||
return new(HeapIndex_2) MapObjectUnkBMFL();
|
||||
}
|
||||
|
||||
MapObjectProfileUnkBMFL::MapObjectProfileUnkBMFL() :
|
||||
MapObjectProfile(MapObjectId_BMFL) {}
|
||||
|
||||
MapObjectUnkBMFL::MapObjectUnkBMFL() {}
|
||||
|
||||
void MapObjectUnkBMFL::func_ov031_021025c4(void) {}
|
||||
void MapObjectUnkBMFL::func_ov031_02102708(void) {}
|
||||
void MapObjectUnkBMFL::func_ov031_02102718(void) {}
|
||||
void MapObjectUnkBMFL::func_ov031_02102728(void) {}
|
||||
void MapObjectUnkBMFL::func_ov031_021027a4(void) {}
|
||||
void MapObjectUnkBMFL::func_ov031_02102894(void) {}
|
||||
void MapObjectUnkBMFL::func_ov031_021029f0(void) {}
|
||||
void MapObjectUnkBMFL::func_ov031_02102a40(void) {}
|
||||
void MapObjectUnkBMFL::func_ov031_02102ad8(void) {}
|
||||
void MapObjectUnkBMFL::func_ov031_02102af4(void) {}
|
||||
|
||||
MapObjectUnkBMFL::~MapObjectUnkBMFL() {}
|
||||
MapObjectProfileUnkBMFL::~MapObjectProfileUnkBMFL() {}
|
||||
@@ -165,12 +165,12 @@ void MapObjectUnkSKDI::func_ov031_0210643c(unk32 param1) {
|
||||
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) {
|
||||
for (ActorBomb_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) {
|
||||
for (ActorBomb_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) {
|
||||
data->func_ov000_020a0110(ptr);
|
||||
}
|
||||
}
|
||||
@@ -265,7 +265,7 @@ void MapObjectUnkSKDI::func_ov031_02106678(MapObjState state, unk32 param2) {
|
||||
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) {
|
||||
for (ActorBomb_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;
|
||||
@@ -287,7 +287,7 @@ void MapObjectUnkSKDI::func_ov031_02106678(MapObjState state, unk32 param2) {
|
||||
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) {
|
||||
for (ActorBomb_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) {
|
||||
|
||||
@@ -27,11 +27,11 @@ MapObjectProfileUnkSWHT::MapObjectProfileUnkSWHT() :
|
||||
MapObjectProfilePot_Base(MapObjectId_SWHT, MapObjectId_SWHT) {
|
||||
this->mUnk_D4.mUnk_08 = 0x84007009;
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_D4.mUnk_0C);
|
||||
this->mUnk_D4.mUnk_18.x = FLOAT_TO_FX32(0.35f);
|
||||
this->mUnk_D4.mUnk_18.y = FLOAT_TO_FX32(1.2f);
|
||||
this->mUnk_06 = 0x0;
|
||||
this->mUnk_0C = 0x1333;
|
||||
this->mUnk_20.mUnk_15 = 0x1;
|
||||
this->mUnk_D4.mUnk_18 = FLOAT_TO_FX32(0.35f);
|
||||
this->mUnk_D4.mUnk_1C = FLOAT_TO_FX32(1.2f);
|
||||
this->mUnk_06 = 0x0;
|
||||
this->mUnk_0C = 0x1333;
|
||||
this->mUnk_20.mUnk_15 = 0x1;
|
||||
}
|
||||
|
||||
MapObjectUnkSWHT::MapObjectUnkSWHT() :
|
||||
@@ -43,8 +43,8 @@ MapObjectUnkSWHT::MapObjectUnkSWHT() :
|
||||
this->mUnk_054.vfunc_08(G3d_GetModelPtr(GET_PROFILE(MapObjectProfileUnkSWHT)->mUnk_20.mUnk_50));
|
||||
this->mUnk_0B4.mpModel = this->mUnk_054.mpModel;
|
||||
|
||||
unk32 param2 = data_ov031_021179e8.func_ov000_02058a24();
|
||||
unk32 param1 = data_ov031_021179e8.func_ov000_02058a84(0x3, &data_ov031_02110ce0);
|
||||
unk32 param2 = data_ov031_021179e8.func_ov000_02058a24();
|
||||
UnkStruct_ov000_02058a84 *param1 = data_ov031_021179e8.func_ov000_02058a84(0x3, &data_ov031_02110ce0);
|
||||
|
||||
this->mUnk_0B4.func_ov000_020577a4(param1, param2, 0x1);
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ void MapObjectUnkSTAT::vfunc_0C(void) {
|
||||
void MapObjectUnkSTAT::vfunc_14(void) {
|
||||
VecFx32 vec;
|
||||
VecFx32_Init(mPos.x + mUnk_60, mPos.y + mUnk_64, mPos.z + mUnk_68, &vec);
|
||||
mUnk_40.func_01ffc6d4(mUnk_14_AngleStruct, &vec);
|
||||
mUnk_40.func_01ffc6d4(mAngleStruct, &vec);
|
||||
}
|
||||
|
||||
void MapObjectUnkSTAT::func_ov063_0215f7ac(void) {
|
||||
@@ -220,7 +220,7 @@ void MapObjectUnkSTAT::func_ov063_0215fc40(unk32 param1) {
|
||||
}
|
||||
|
||||
unk32 MapObjectUnkSTAT::func_ov063_0215fce0(void) {
|
||||
return func_02016b8c(&mPos, data_027e0ce0->func_01fff148(0), mUnk_54, mUnk_14_AngleStruct, mUnk_58, 1);
|
||||
return func_02016b8c(&mPos, data_027e0ce0->func_01fff148(0), mUnk_54, mAngleStruct, mUnk_58, 1);
|
||||
}
|
||||
|
||||
MapObjectUnkSTAT::~MapObjectUnkSTAT() {}
|
||||
|
||||
@@ -37,7 +37,7 @@ extern const char *data_ov000_020aa248; // .nsbmd
|
||||
|
||||
extern "C" void func_ov000_0205ca74(unk32);
|
||||
extern "C" void func_01ffb6e4(unk32, const void *, void *);
|
||||
extern "C" void func_01ffc5a0(ModelRender *, unk32, u16, void *, unk32);
|
||||
extern "C" void func_01ffc5a0(ModelRender *, unk32, UnkAngleStruct, void *);
|
||||
extern "C" void func_ov000_0208f820();
|
||||
extern "C" void func_ov000_0208ba10(void *, void *, unk32);
|
||||
extern "C" void func_02015ea8(unk32, void *);
|
||||
@@ -425,18 +425,17 @@ static const AdventureFlag sAdvFlagItemMap[] = {
|
||||
AdventureFlag_Nothing, // ItemId_EngineerUniform
|
||||
};
|
||||
|
||||
// non-matching
|
||||
void UnkStruct_PlayerGet_74::vfunc_00(unk32 param1, unk32 param2, unk32 param3) {
|
||||
void UnkStruct_PlayerGet_74::vfunc_00(unk32 param1, unk32 param2) {
|
||||
PlayerGet *unk_14 = (PlayerGet *) this->mUnk_14;
|
||||
|
||||
func_01ffc5a0(&unk_14->mUnk_8C, unk_14->mUnk_6C, unk_14->mUnk_70, &this->mUnk_04, param3);
|
||||
func_01ffc5a0(&unk_14->mUnk_8C, unk_14->mUnk_6C, unk_14->mUnkAngleStruct, &this->mUnk_04);
|
||||
}
|
||||
|
||||
PlayerGet::PlayerGet() :
|
||||
mUnk_54(0, 0, -1, ItemId_None),
|
||||
mUnk_64(mUnk_44, -1),
|
||||
mUnk_6C(0x1000),
|
||||
mUnk_70(0),
|
||||
mAngle(0),
|
||||
mUnk_72(0),
|
||||
mUnk_73(0),
|
||||
mUnk_74(this),
|
||||
@@ -536,7 +535,7 @@ void PlayerGet::vfunc_0C(UnkStruct_PlayerGet_vfunc_0C_param1 *param1) {
|
||||
}
|
||||
|
||||
this->mUnk_54.mItemId = itemId;
|
||||
this->mUnk_70 = 0;
|
||||
this->mAngle = 0;
|
||||
this->mUnk_2C->mUnk_58 = 0;
|
||||
char auStack_108[12];
|
||||
func_ov000_0208ba10(auStack_108, &this->mUnk_24->mUnk_94, 0);
|
||||
@@ -955,7 +954,7 @@ void PlayerGet::vfunc_10(unk32 param1, unk32 param2) {
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_70 += 0x10E;
|
||||
this->mAngle += 0x10E;
|
||||
|
||||
if (this->mUnk_73 == 0) {
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user