Files
st/src/031_Land/Actor/ActorUnkTLKT.cpp
T
Alessevan f90c7cd531 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
2026-08-02 14:09:49 +02:00

95 lines
2.2 KiB
C++

#include "Actor/ActorUnkTLKT.hpp"
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_027e09b8.hpp"
#include "Unknown/UnkStruct_027e0d34.hpp"
DECL_PROFILE(ActorProfileUnkTLKT);
Actor *ActorProfileUnkTLKT::Create() {
return new(HeapIndex_2) ActorUnkTLKT();
}
ActorProfileUnkTLKT::ActorProfileUnkTLKT() :
ActorProfile(ActorId_TLKT) {}
ActorUnkTLKT::ActorUnkTLKT() {}
// non-matching
ActorUnkTLKT::~ActorUnkTLKT() {
if (this->mState == ActorUnkTLKTState_2) {
this->func_ov031_020e4514();
}
}
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;
}
}