Files
st/src/001_SceneInit/Player/PlayerLinkActor_001.cpp
T
Yanis 07a5bd9fcc Create Timer struct, improve angle usage and name known virtual functions (#154)
* name some actor vfuncs

* name some map object vfuncs

* remove angle union

* fix lots of clangd errors

* create Timer struct

* fix regressions
2026-10-02 20:54:43 +02:00

109 lines
3.1 KiB
C++

#include "Player/PlayerActorBase.hpp"
#include "Player/PlayerLink.hpp"
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_027e09a4.hpp"
#include "Unknown/UnkStruct_027e0cd8.hpp"
#include "Unknown/UnkStruct_027e0ce0.hpp"
#include "Unknown/UnkStruct_027e0d34.hpp"
PlayerLinkActor::PlayerLinkActor(unk32 param1, ItemManager *pItemMgr, UnkStruct_027e0ce0_40 *param3,
UnkStruct_027e0ce0_40_150 *param4) :
PlayerActorBase(PlayerCharacter_Link, param1, pItemMgr, param3),
mUnk_094(param4),
mpZelda(NULL),
mUnk_09C(new(HeapIndex_1) PlayerLinkActor_9C(param3, *(u32 *) &this->mUnk_50, this->mCharacter)),
mUnk_0A0(new(HeapIndex_1) PlayerLinkActor_A0(pItemMgr, param3, this, this->mUnk_09C)),
mUnk_0A4(this, this->mUnk_0A0),
mUnk_0B0(-1),
mUnk_0B4(false),
mUnk_0B5(false),
mUnk_0B6(false),
mUnk_0B7(0),
mUnk_0B8(0),
mUnk_0B9(false),
mUnk_0BA(false),
mUnk_0BB(false),
mUnk_134(param1 == -1 ? new(HeapIndex_1) PlayerLinkActor_134() : NULL) {
this->mUnk_90 = this->mUnk_09C;
//! TODO: dark magic
PlayerLinkActor *new_var = this;
PlayerLinkActor **new_var3 = &new_var;
if ((*new_var3)->mUnk_4C == -1) {
(*new_var3)->func_ov031_020d96a4(this->mUnk_0A0, this->mUnk_58);
this->func_ov031_020dccf0();
} else {
this->func_ov021_020ebda0();
}
}
PlayerLinkActor::~PlayerLinkActor() {
if (data_027e09a4->IsSceneModeAdventure()) {
UnkStruct_027e0d34::Destroy();
}
delete this->mUnk_134;
delete this->mUnk_0A0;
delete this->mUnk_09C;
}
void PlayerLinkActor::func_ov001_020bcb60(PlayerActorBase *pZelda) {
this->mpZelda = pZelda;
this->mUnk_09C->pZelda = pZelda;
}
void PlayerLinkActor::func_ov001_020bcb70() {
this->func_ov001_020bc96c();
this->mUnk_0B4 = false;
this->mUnk_0B5 = false;
this->mUnk_0B8 = 0;
this->mUnk_0A0->func_ov001_020bd2e0();
this->mUnk_0A4.mUnk_08 = false;
this->func_ov000_0208d7f0(false);
}
void PlayerLinkActor::func_ov001_020bcba8() {
if (this->mUnk_134 != NULL) {
this->mUnk_134->func_ov031_020db0fc();
}
if (!this->mUnk_0B6) {
this->mUnk_0A0->func_ov001_020bd358();
}
}
void PlayerLinkActor::func_ov001_020bcbd0(VecFx32 *pVec) {
this->func_ov000_0208c8f8(pVec);
this->mUnk_90->mUnk_034.func_ov000_0208efd0(pVec);
PlayerActorBase_70 *unk_70 = this->mUnk_70;
unk_70->func_ov001_020bbe18(0, this->mAngle, this->mUnk_0A0->func_ov000_02093718(), this->mUnk_0A0->func_ov000_0209378c());
bool uVar1 = false;
if (this->mUnk_094 != NULL) {
uVar1 = this->mUnk_094->mUnk_00;
}
this->mUnk_0A0->func_ov001_020bd388(uVar1, this->mUnk_0B6);
this->mUnk_0B6 = false;
this->mUnk_0B9 = data_027e0cd8->func_ov000_02082124();
this->mUnk_0BA = false;
this->mUnk_0BB = false;
this->func_ov000_0208d3fc();
}
void UnkStruct_027e0d34::Destroy() {
if (data_027e0d34 != NULL) {
delete data_027e0d34;
}
}
PlayerLinkActor_1B0::PlayerLinkActor_1B0() :
UnkSystem7(NULL),
mUnk_04(-1),
mUnk_08(0) {}
DECL_INSTANCE_DTOR(UnkStruct_027e0d34, data_027e0d34);