mirror of
https://github.com/zeldaret/ph
synced 2026-09-02 09:51:51 -04:00
ActorCharacterBase OK (#161)
* ActorCharacterBase OK * Fix broken matches
This commit is contained in:
@@ -225,7 +225,7 @@ ARM bool Actor::vfunc_60() {
|
||||
|
||||
ARM void Actor::vfunc_64() {}
|
||||
|
||||
ARM void Actor::SetUnk_11c(unk8 value) {
|
||||
ARM void Actor::SetUnk_11c(bool value) {
|
||||
mUnk_11c = value;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,32 +1,198 @@
|
||||
#include "Actor/Character/ActorCharacter.hpp"
|
||||
#include "Message/MessageManager.hpp"
|
||||
#include "Save/AdventureFlags.hpp"
|
||||
|
||||
static void func_ov014_021447f8(ActorCharacterBase *actor) {}
|
||||
static void func_ov014_0214480c(ActorCharacterBase *actor) {}
|
||||
static void func_ov014_02144820(ActorCharacterBase *actor) {}
|
||||
static void func_ov014_02144834(ActorCharacterBase *actor) {}
|
||||
static void func_ov014_02144848(unk32 *param1, unk32 param2, ActorCharacterBase *actor) {}
|
||||
ARM static unk32 func_ov014_021447f8(void *actor, unk32 param2) {
|
||||
return ((ActorCharacterBase *) actor)->vfunc_d8(param2);
|
||||
}
|
||||
|
||||
unk32 ActorCharacterBase::vfunc_d8() {}
|
||||
unk32 ActorCharacterBase::vfunc_dc() {}
|
||||
unk32 ActorCharacterBase::vfunc_e0() {}
|
||||
unk32 ActorCharacterBase::vfunc_e4() {}
|
||||
void ActorCharacterBase::vfunc_e8() {}
|
||||
ARM static unk32 func_ov014_0214480c(void *actor, unk32 param2) {
|
||||
return ((ActorCharacterBase *) actor)->vfunc_dc(param2);
|
||||
}
|
||||
|
||||
ActorCharacterBase::ActorCharacterBase() :
|
||||
mUnk_158(0x1000000) {}
|
||||
ActorCharacterBase::~ActorCharacterBase() {}
|
||||
ARM static unk32 func_ov014_02144820(void *actor, unk32 param2) {
|
||||
return ((ActorCharacterBase *) actor)->vfunc_e0(param2);
|
||||
}
|
||||
|
||||
bool ActorCharacterBase::Init() {}
|
||||
void ActorCharacterBase::vfunc_14(u32 param1) {}
|
||||
bool ActorCharacterBase::vfunc_c0() {}
|
||||
void ActorCharacterBase::vfunc_18(u32 param1) {}
|
||||
unk32 ActorCharacterBase::vfunc_d4() {}
|
||||
void ActorCharacterBase::vfunc_b4() {}
|
||||
void ActorCharacterBase::vfunc_b8() {}
|
||||
void ActorCharacterBase::vfunc_80() {}
|
||||
void ActorCharacterBase::vfunc_84() {}
|
||||
void ActorCharacterBase::vfunc_cc() {}
|
||||
void ActorCharacterBase::vfunc_c8() {}
|
||||
void ActorCharacterBase::vfunc_d0() {}
|
||||
void ActorCharacterBase::vfunc_68() {}
|
||||
bool ActorCharacterBase::vfunc_bc() {}
|
||||
ARM static unk32 func_ov014_02144834(void *actor, unk32 param2) {
|
||||
return ((ActorCharacterBase *) actor)->vfunc_e4(param2);
|
||||
}
|
||||
|
||||
struct UnkStruct_ov014_02144848_1 {
|
||||
/* 00 */ PAD(0x00, 0x03);
|
||||
/* 03 */ u8 mUnk_03;
|
||||
/* 04 */ u16 mUnk_04;
|
||||
/* 06 */ u16 mUnk_06;
|
||||
/* 08 */
|
||||
|
||||
u32 Unk1() {
|
||||
return mUnk_04 | (mUnk_03 << 16);
|
||||
}
|
||||
};
|
||||
|
||||
struct UnkStruct_ov014_02144848 {
|
||||
/* 00 */ UnkStruct_ov014_02144848_1 *mUnk_00;
|
||||
/* 08 */
|
||||
};
|
||||
|
||||
static UnkStruct_ov014_021448f4 func_ov014_02144848(UnkStruct_ov014_02144848 param4, ActorCharacterBase *actor) {
|
||||
u32 uVar1 = param4.mUnk_00->Unk1();
|
||||
|
||||
switch (uVar1) {
|
||||
case 0xfe0001:
|
||||
case 0xfe0002:
|
||||
case 0xfe0003:
|
||||
case 0xfe0004:
|
||||
case 0xfe0005:
|
||||
case 0xfe0006:
|
||||
case 0xfe0007:
|
||||
case 0xfe0008:
|
||||
return actor->vfunc_e8(param4.mUnk_00->mUnk_06, (u16) (uVar1 - 0xfe0000));
|
||||
break;
|
||||
default:
|
||||
return UnkStruct_ov014_021448f4();
|
||||
}
|
||||
}
|
||||
|
||||
ARM unk32 ActorCharacterBase::vfunc_d8(unk32 param1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
ARM unk32 ActorCharacterBase::vfunc_dc(unk32 param1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
ARM unk32 ActorCharacterBase::vfunc_e0(unk32 param1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
ARM unk32 ActorCharacterBase::vfunc_e4(unk32 param1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
ARM UnkStruct_ov014_021448f4 ActorCharacterBase::vfunc_e8(u16 param2, u16 param3) {
|
||||
return UnkStruct_ov014_021448f4();
|
||||
}
|
||||
|
||||
ARM ActorCharacterBase::ActorCharacterBase() :
|
||||
mUnk_158(0x1000000),
|
||||
mUnk_1b4(-1),
|
||||
mUnk_1b8(0),
|
||||
mUnk_1c0(0),
|
||||
mUnk_1c1(0),
|
||||
mUnk_1c2(0),
|
||||
mUnk_1c3(0) {}
|
||||
ARM ActorCharacterBase::~ActorCharacterBase() {
|
||||
if (gMessageManager.mUnk_20[0] == &mUnk_158) {
|
||||
gMessageManager.func_02036d4c(&mUnk_158);
|
||||
}
|
||||
}
|
||||
|
||||
ARM bool ActorCharacterBase::Init() {
|
||||
mUnk_12c = 5;
|
||||
mUnk_158.mUnk_20.id = mRef.id;
|
||||
mUnk_158.mUnk_20.index = mRef.index;
|
||||
mUnk_158.mUnk_04[0] = func_ov014_021447f8;
|
||||
mUnk_158.mUnk_04[1] = func_ov014_0214480c;
|
||||
mUnk_158.mUnk_04[2] = func_ov014_02144820;
|
||||
mUnk_158.mUnk_04[3] = func_ov014_02144834;
|
||||
mUnk_158.mUnk_14 = this;
|
||||
mUnk_158.mUnk_44 = (unk32) func_ov014_02144848; // TODO: Set type of mUnk_44 after matching func_ov014_02144848
|
||||
mUnk_158.mUnk_48 = this;
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM void ActorCharacterBase::vfunc_14(u32 param1) {
|
||||
if (this->func_ov00_020c313c(param1)) {
|
||||
mPrevPos.x = mPos.x;
|
||||
mPrevPos.y = mPos.y;
|
||||
mPrevPos.z = mPos.z;
|
||||
this->func_ov00_020c1cf8();
|
||||
this->vfunc_c4();
|
||||
}
|
||||
mUnk_0a4.func_ov000_0207a1c8(param1, &mPos);
|
||||
this->vfunc_b8();
|
||||
}
|
||||
|
||||
ARM bool ActorCharacterBase::vfunc_c0() {
|
||||
UnkStruct_02037750 *callback = gMessageManager.mUnk_20[0];
|
||||
bool result = true;
|
||||
if (mUnk_11c == false && callback != &mUnk_158) {
|
||||
bool unk = mUnk_1b4 != -1 && gAdventureFlags->func_ov00_02097b9c(mUnk_1b4);
|
||||
if (!unk) {
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
ARM void ActorCharacterBase::vfunc_18(u32 param1) {
|
||||
if (this->func_ov00_020c313c(param1)) {
|
||||
mPrevPos.x = mPos.x;
|
||||
mPrevPos.y = mPos.y;
|
||||
mPrevPos.z = mPos.z;
|
||||
mInactive = false;
|
||||
if (mUnk_1c0) {
|
||||
if (mUnk_1b8 != NULL) {
|
||||
if (mUnk_1b8(mUnk_1bc) == 0) {
|
||||
mUnk_0a4.func_ov000_0207a1c8(param1, &mPos);
|
||||
return;
|
||||
}
|
||||
mUnk_1b8 = NULL;
|
||||
}
|
||||
this->vfunc_c8();
|
||||
this->vfunc_cc();
|
||||
mUnk_0a4.func_ov000_0207a1c8(param1, &mPos);
|
||||
return;
|
||||
};
|
||||
if (this->vfunc_c0()) {
|
||||
if (mUnk_1b8 != NULL) {
|
||||
if (mUnk_1b8(mUnk_1bc) == 0) {
|
||||
mUnk_0a4.func_ov000_0207a1c8(param1, &mPos);
|
||||
return;
|
||||
}
|
||||
mUnk_1b8 = NULL;
|
||||
}
|
||||
this->vfunc_c4();
|
||||
this->vfunc_cc();
|
||||
} else {
|
||||
if (mUnk_1c3) {
|
||||
this->vfunc_d0();
|
||||
}
|
||||
}
|
||||
}
|
||||
mUnk_0a4.func_ov000_0207a1c8(param1, &mPos);
|
||||
if ((gMessageManager.mUnk_04 == false || gAdventureFlags->func_ov00_02097738()) && !mUnk_1c1) {
|
||||
return;
|
||||
}
|
||||
this->vfunc_b8();
|
||||
}
|
||||
|
||||
ARM unk32 ActorCharacterBase::vfunc_d4() {
|
||||
return mUnk_020.mUnk_10;
|
||||
}
|
||||
|
||||
ARM void ActorCharacterBase::vfunc_b4() {
|
||||
gMessageManager.func_02036ce4(&mUnk_158, this->vfunc_d4());
|
||||
}
|
||||
|
||||
ARM void ActorCharacterBase::vfunc_b8() {
|
||||
mUnk_158.vfunc_10();
|
||||
}
|
||||
|
||||
ARM void ActorCharacterBase::vfunc_80() {
|
||||
mUnk_1c0 = true;
|
||||
}
|
||||
|
||||
ARM void ActorCharacterBase::vfunc_84() {
|
||||
mUnk_1c0 = false;
|
||||
}
|
||||
|
||||
ARM void ActorCharacterBase::vfunc_cc() {}
|
||||
ARM void ActorCharacterBase::vfunc_c8() {}
|
||||
ARM void ActorCharacterBase::vfunc_d0() {}
|
||||
ARM void ActorCharacterBase::vfunc_68() {}
|
||||
|
||||
bool ActorCharacterBase::vfunc_bc() {
|
||||
return (mUnk_158.mUnk_18 & 0xffff0000) == 0x1000000;
|
||||
}
|
||||
|
||||
@@ -371,7 +371,7 @@ ARM void MessageManager::func_02036ca4(unk32 param_2) {
|
||||
}
|
||||
}
|
||||
|
||||
ARM bool MessageManager::func_02036ce4(UnkStruct_020386d8 *param_2, unk32 param_3) {
|
||||
ARM bool MessageManager::func_02036ce4(UnkStruct_02037750 *param_2, unk32 param_3) {
|
||||
u32 uVar1;
|
||||
|
||||
if (param_3 == 0) {
|
||||
|
||||
@@ -10,7 +10,7 @@ extern "C" ARM unk32 func_02037628(u8 *);
|
||||
extern u8 *data_027e0d54;
|
||||
extern unk32 *data_027e0cb4;
|
||||
|
||||
ARM UnkStruct_02037750::UnkStruct_02037750(unk32 param1, unk32 param2) {
|
||||
ARM UnkStruct_02037750::UnkStruct_02037750(unk32 param1, void *param2) {
|
||||
s32 i;
|
||||
|
||||
this->mUnk_14 = param2;
|
||||
@@ -66,7 +66,7 @@ ARM unk32 UnkStruct_02037750::vfunc_28(s32 param1) {
|
||||
iVar9 = 0;
|
||||
|
||||
if (pcVar8 != NULL) {
|
||||
iVar9 = pcVar8(this->mUnk_14);
|
||||
iVar9 = pcVar8(this->mUnk_14, param1);
|
||||
}
|
||||
|
||||
return iVar9;
|
||||
|
||||
Reference in New Issue
Block a user