mirror of
https://github.com/zeldaret/st
synced 2026-10-09 22:04:16 -04:00
07a5bd9fcc
* name some actor vfuncs * name some map object vfuncs * remove angle union * fix lots of clangd errors * create Timer struct * fix regressions
129 lines
3.3 KiB
C++
129 lines
3.3 KiB
C++
#include "MapObject/MapObjectUnkMTJR.hpp"
|
|
#include "System/Random.hpp"
|
|
#include "Unknown/UnkStruct_027e09a8.hpp"
|
|
#include "Unknown/UnkStruct_027e0cec.hpp"
|
|
#include "flags.h"
|
|
#include "nitro/fx.h"
|
|
#include "nitro/math.h"
|
|
#include "profile.hpp"
|
|
|
|
// Overlay 31
|
|
extern "C" void func_ov031_020e0f30(ActorRef);
|
|
|
|
DECL_PROFILE(MapObjectProfileUnkMTJR);
|
|
|
|
MapObject *MapObjectProfileUnkMTJR::Create() {
|
|
return new(HeapIndex_ITCM) MapObjectUnkMTJR();
|
|
}
|
|
|
|
// non-matching
|
|
MapObjectProfileUnkMTJR::MapObjectProfileUnkMTJR() :
|
|
MapObjectProfileUnkSTAT_Base(MapObjectId_MTJR, MapObjectId_MTJR) {
|
|
mUnk_D4.mUnk_08 = 0x7009;
|
|
|
|
VecFx32_Init(0, 0, 0, &mUnk_D4.mUnk_0C);
|
|
mUnk_D4.mUnk_18.x = FLOAT_TO_FX32(0.7f);
|
|
mUnk_D4.mUnk_18.y = FLOAT_TO_FX32(2.4f);
|
|
|
|
mUnk_06 = -1;
|
|
UNSET_FLAG2(mUnk_1E, 0x0);
|
|
}
|
|
|
|
MapObjectUnkMTJR::MapObjectUnkMTJR() :
|
|
mUnk_40(G3d_GetModelPtr(GET_PROFILE_20_50(MapObjectProfileUnkMTJR))),
|
|
mUnk_A0(2),
|
|
mUnk_A4(0, 0),
|
|
mUnk_A8(NULL),
|
|
mUnk_AC(-1),
|
|
mUnk_B0(0) {}
|
|
|
|
bool MapObjectUnkMTJR::Init() {
|
|
if (!this->func_ov000_0209d29c(0)) {
|
|
return false;
|
|
}
|
|
|
|
mPos.x += FLOAT_TO_FX32(.5f);
|
|
mPos.z += FLOAT_TO_FX32(.5f);
|
|
mUnk_10 = GET_PROFILE_D4(MapObjectProfileUnkMTJR);
|
|
mUnk_AC = 0x86F;
|
|
mUnk_B0 = 4;
|
|
mUnk_A8.func_ov000_020a0334();
|
|
this->func_ov063_02161254(0);
|
|
return true;
|
|
}
|
|
|
|
// non-matching
|
|
void MapObjectUnkMTJR::vfunc_08() {
|
|
if (mUnk_A0 == 0) {
|
|
fx32 tmp_x = mPos.x - FLOAT_TO_FX32(1.f) + (fx32) gRandom.Next32(0);
|
|
fx32 tmp_y = mPos.y + (fx32) gRandom.Next32(0x1801);
|
|
fx32 tmp_z = mPos.z - FLOAT_TO_FX32(1.f) + (fx32) gRandom.Next32(0);
|
|
VecFx32 stack_vec = {tmp_x, tmp_y, tmp_z};
|
|
data_027e0cec->func_ov000_020a0220(&mUnk_A8, &stack_vec);
|
|
}
|
|
|
|
this->mUnk_A4.Update();
|
|
}
|
|
|
|
void MapObjectUnkMTJR::vfunc_0C() {
|
|
this->vfunc_08();
|
|
}
|
|
|
|
bool MapObjectUnkMTJR::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) {
|
|
switch (param2) {
|
|
case 13:
|
|
this->func_ov063_02161254(1);
|
|
func_ov031_020e0f30(param1);
|
|
break;
|
|
case 0:
|
|
case 1:
|
|
case 7:
|
|
case 8:
|
|
this->func_ov063_02161254(1);
|
|
break;
|
|
case 3:
|
|
case 12:
|
|
this->func_ov063_02161254(1);
|
|
return false;
|
|
break;
|
|
case 10:
|
|
case 11:
|
|
this->func_ov063_02161254(1);
|
|
break;
|
|
case 2:
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 9:
|
|
default:
|
|
break;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
void MapObjectUnkMTJR::func_ov063_02161254(unk32 param1) {
|
|
this->mUnk_A0 = param1;
|
|
this->mUnk_A4.Reset();
|
|
|
|
if (param1 != 0 && param1 == 1) {
|
|
this->func_ov063_02161288();
|
|
}
|
|
}
|
|
|
|
void MapObjectUnkMTJR::func_ov063_02161288(void) {
|
|
data_027e09a8->func_ov000_02071b30(0xFC, &mPos, 0);
|
|
data_027e09a8->func_ov000_02071eac(&mPos);
|
|
VecFx32 vec = mPos;
|
|
data_027e0cec->func_ov000_0209feac(0xCC17, &vec, 4, 0, 0);
|
|
data_027e0cec->func_ov000_0209feac(0xCC18, &vec, 4, 0, 0);
|
|
data_027e0cec->func_ov000_0209feac(0xCC19, &vec, 4, 0, 0);
|
|
data_027e0cec->func_ov000_0209feac(0xCC1A, &vec, 4, 0, 0);
|
|
this->func_ov000_0209d2c4(1, true);
|
|
UNSET_FLAG(mFlags, 0);
|
|
}
|
|
|
|
void MapObjectUnkMTJR::vfunc_14(unk32 param1) {
|
|
this->func_ov000_0209d518(&mPos, 0xD9A, 0xD9A, 0x1F);
|
|
mUnk_40.vfunc_18(&mPos);
|
|
}
|