d_a_npc_jb1 matching (#991)

This commit is contained in:
Zeclos
2026-05-10 22:00:47 +02:00
committed by GitHub
parent 4de5fdf6a0
commit 814c70590c
3 changed files with 624 additions and 115 deletions
+1 -1
View File
@@ -1640,7 +1640,7 @@ config.libs = [
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_npc_hi1"),
ActorRel(NonMatching, "d_a_npc_ho"),
ActorRel(Matching, "d_a_npc_hr"),
ActorRel(NonMatching, "d_a_npc_jb1"),
ActorRel(Matching, "d_a_npc_jb1"),
ActorRel(NonMatching, "d_a_npc_ji1"),
ActorRel(Matching, "d_a_npc_kamome"),
ActorRel(NonMatching, "d_a_npc_kf1"),
+86 -47
View File
@@ -4,78 +4,117 @@
#include "f_op/f_op_actor.h"
#include "m_Do/m_Do_ext.h"
#include "SSystem/SComponent/c_phase.h"
#include "d/d_npc.h"
class daNpc_Jb1_c : public fopAc_ac_c {
class daNpc_Jb1_c : public fopNpc_npc_c {
public:
struct anm_prm_c {
s8 field_0x0;
s8 field_0x1;
f32 mMorf;
f32 mPlaySpeed;
int mLoopMode;
};
typedef BOOL (daNpc_Jb1_c::*ActionFunc)(void*);
void init_JB1_0();
void createInit();
daNpc_Jb1_c();
bool init_JB1_0();
bool createInit();
void setMtx();
void playBrkAnm(J3DAnmTevRegKey*, short*);
void anmNum_toResID(int);
void setAnm_anm(anm_prm_c*);
void setAnm();
void playBrkAnm(J3DAnmTevRegKey*, s16*);
int anmNum_toResID(int);
BOOL setAnm_anm(anm_prm_c*);
BOOL setAnm();
void chg_anmTag();
void control_anmTag();
void chg_anmAtr(unsigned char);
void chg_anmAtr(u8);
void control_anmAtr();
void setAnm_ATR();
void anmAtr(unsigned short);
void anmAtr(u16);
void eventOrder();
void checkOrder();
void next_msgStatus(unsigned long*);
void getMsg_JB1_0();
void getMsg();
void chkAttention();
u16 next_msgStatus(u32*);
u32 getMsg_JB1_0();
u32 getMsg();
bool chkAttention();
void setAttention();
void charDecide(int);
bool charDecide(int);
void event_actionInit(int);
void event_action();
bool event_action();
void privateCut(int);
void isEventEntry();
int isEventEntry();
void event_proc(int);
void set_action(int (daNpc_Jb1_c::*)(void*), void*);
void setStt(signed char);
void wait_1();
void wait_action1(void*);
void demo();
BOOL set_action(ActionFunc, void*);
void setStt(s8);
BOOL wait_1();
BOOL wait_action1(void*);
bool demo();
BOOL _draw();
BOOL _execute();
BOOL _delete();
cPhs_State _create();
void create_Anm();
void create_lgt();
void CreateHeap();
J3DModelData* create_Anm();
bool create_lgt();
BOOL CreateHeap();
public:
/* 0x6C4 */ request_of_phase_process_class mReqPhaseProc;
/* 0x6CC */ s8 mCaseJointIndex;
/* 0x6CD */ u8 m6CD[0x818 - 0x6CD];
/* 0x818 */ J3DAnmTevRegKey* mLampBrkAnim;
/* 0x81C */ mDoExt_brkAnm mBrkAnimator;
/* 0x834 */ u8 m834[0x838 - 0x834];
/* 0x838 */ J3DModelData* mpModelData;
/* 0x83C */ u8 m83C[0x848 - 0x83C];
/* 0x848 */ J3DAnmTevRegKey* mCurrentBrkAnim;
/* 0x84C */ u8 m84C[0x85C - 0x84C];
/* 0x85C */ ActionFunc mCurStateFunc;
/* 0x868 */ u8 m868[0x8E0 - 0x868];
/* 0x6C4 */ request_of_phase_process_class mPhs;
/* 0x6CC */ s8 m_cse_jnt_num;
/* 0x6CD */ u8 field_0x6CD[0x6D0 - 0x6CD];
/* 0x6D0 */ cXyz field_0x6D0;
/* 0x6DC */ dKy_tevstr_c field_0x6DC; // not used
/* 0x78C */ u8 field_0x78C[0x7A8 - 0x78C];
/* 0x7A8 */ mDoExt_bckAnm mBckAnm; // not used maybe related to the unused JUT_ASSERTS
/* 0x7B8 */ u8 field_0x7B8[0x7C0 - 0x7B8];
/* 0x7C0 */ mDoExt_btkAnm mBtkAnm; // not used maybe related to the unused JUT_ASSERTS
/* 0x7D4 */ u8 field_0x7D4[0x7DC - 0x7D4];
/* 0x7DC */ mDoExt_brkAnm mBrkAnm3; // not used maybe related to the unused JUT_ASSERTS
/* 0x7F4 */ u8 field_0x7F4[0x7F8 - 0x7F4];
/* 0x7F8 */ LIGHT_INFLUENCE field_0x7F8;
/* 0x818 */ J3DAnmTevRegKey* m_lmp_brk;
/* 0x81C */ mDoExt_brkAnm mBrkAnm;
/* 0x834 */ s16 field_0x834;
/* 0x836 */ u8 field_0x836[0x838 - 0x836];
/* 0x838 */ J3DModel* m_lgt_mdl;
/* 0x83C */ J3DAnmTevRegKey* m_lgt_brk;
/* 0x840 */ mDoExt_brkAnm mBrkAnm2;
/* 0x858 */ s16 field_0x858;
/* 0x85A */ u8 field_0x85A[0x85C - 0x85A];
/* 0x85C */ ActionFunc mCurrActionFunc;
/* 0x868 */ u8 field_0x868[0x870 - 0x868];
/* 0x870 */ dNpc_EventCut_c mEventCut;
/* 0x8DC */ u8 field_0x8DC[0x8E0 - 0x8DC];
/* 0x8E0 */ cXyz mCurrentPos;
/* 0x8EC */ csXyz mCurrentRot;
/* 0x8F2 */ u8 m8F2[0x924 - 0x8F2];
};
class daNpc_Jb1_HIO_c {
public:
daNpc_Jb1_HIO_c();
public:
/* Place member variables here */
};
/* 0x8F2 */ u8 field_0x8F2[0x8F4 - 0x8F2];
/* 0x8F4 */ cXyz field_0x8F4;
/* 0x900 */ f32 mFrame;
/* 0x904 */ u8 field_0x904[0x908 - 0x904];
/* 0x908 */ s8 field_0x908;
/* 0x909 */ bool field_0x909;
/* 0x90A */ u8 field_0x90A[0x90C - 0x90A];
/* 0x90C */ bool field_0x90C;
/* 0x90D */ bool field_0x90D;
/* 0x90E */ bool field_0x90E;
/* 0x90F */ bool field_0x90F;
/* 0x910 */ BOOL field_0x910;
/* 0x914 */ bool mHasAttention;
/* 0x915 */ s8 field_0x915;
/* 0x916 */ u8 field_0x916[0x917 - 0x916];
/* 0x917 */ bool field_0x917;
/* 0x918 */ s8 mActIdx;
/* 0x919 */ s8 mActNo;
/* 0x91A */ u8 field_0x91A;
/* 0x91B */ u8 field_0x91B;
/* 0x91C */ s8 field_0x91C;
/* 0x91D */ s8 field_0x91D;
/* 0x91E */ s8 field_0x91E;
/* 0x91F */ u8 field_0x91F[0x920 - 0x91F];
/* 0x920 */ s8 field_0x920;
/* 0x921 */ s8 field_0x921;
/* 0x922 */ s8 field_0x922;
/* 0x923 */ s8 field_0x923;
}; // Size: 0x924
#endif /* D_A_NPC_JB1_H */
+537 -67
View File
@@ -7,205 +7,675 @@
#include "d/actor/d_a_npc_jb1.h"
#include "d/d_procname.h"
#include "d/d_priority.h"
#include "d/res/res_jb.h"
class daNpc_Jb1_HIO_c : public JORReflexible{
public:
struct hio_prm_c {
f32 field_0x00;
s16 field_0x04;
s16 field_0x06;
s16 field_0x08;
s16 field_0x0A;
f32 field_0x0C;
f32 field_0x10;
}; // Size: 0x14
daNpc_Jb1_HIO_c();
virtual ~daNpc_Jb1_HIO_c() {};
void genMessage(JORMContext* ctx) {}
public:
/* 0x04 */ s8 mNo;
/* 0x05 */ s8 field_0x5;
/* 0x06 */ s8 field_0x6;
/* 0x07 */ s8 field_0x7;
/* 0x08 */ int field_0x8;
/* 0x0C */ hio_prm_c mPrmTbl;
};
static daNpc_Jb1_HIO_c l_HIO;
/* 000000EC-00000144 .text __ct__15daNpc_Jb1_HIO_cFv */
daNpc_Jb1_HIO_c::daNpc_Jb1_HIO_c() {
/* Nonmatching */
static hio_prm_c a_prm_tbl = {
100.0f,
0,
1000,
1000,
0,
VERSION_SELECT(2050.0f, 2050.0f, 1200.0f, 2050.0f),
50.0f,
};
memcpy(&mPrmTbl, &a_prm_tbl, sizeof(hio_prm_c));
mNo = -1;
field_0x8 = -1;
}
/* 00000144-00000190 .text init_JB1_0__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::init_JB1_0() {
/* Nonmatching */
bool daNpc_Jb1_c::init_JB1_0() {
set_action(&daNpc_Jb1_c::wait_action1, NULL);
return true;
}
/* 00000190-00000264 .text createInit__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::createInit() {
/* Nonmatching */
bool daNpc_Jb1_c::createInit() {
cXyz unused(0.0f, 0.0f, -400.0f);
gravity = 0.0f;
mEventCut.setActorInfo2("Jb1", this);
field_0x91C = 2;
bool temp;
switch(field_0x921) {
case 0:
temp = init_JB1_0();
break;
default:
temp = false;
break;
}
if(temp) {
shape_angle = current.angle;
} else {
return false;
}
dKy_plight_set(&field_0x7F8);
mpMorf->setMorf(0.0f);
setMtx();
return true;
}
/* 00000264-0000049C .text setMtx__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::setMtx() {
/* Nonmatching */
cXyz temp(0.0f, -150.0f, 0.0f);
playBrkAnm(m_lmp_brk, &field_0x834);
playBrkAnm(m_lgt_brk, &field_0x858);
if (!field_0x917) {
field_0x908 = mpMorf->play(&eyePos, 0, 0);
if (mpMorf->getFrame() < mFrame) {
field_0x908 = true;
}
mFrame = mpMorf->getFrame();
mObjAcch.CrrPos(*dComIfG_Bgsp());
}
tevStr.mRoomNo = dComIfG_Bgsp()->GetRoomId(mObjAcch.m_gnd);
tevStr.mEnvrIdxOverride = dComIfG_Bgsp()->GetPolyColor(mObjAcch.m_gnd);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(current.angle.y);
mpMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
mpMorf->calc();
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(m_cse_jnt_num));
mDoMtx_stack_c::multVec(&temp, &field_0x6D0);
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(m_cse_jnt_num));
mDoMtx_stack_c::transM(0.0f, -150.0f, 0.0f);
mDoMtx_stack_c::scaleM(2.0f, 2.0f, 2.0f);
m_lgt_mdl->setBaseTRMtx(mDoMtx_stack_c::get());
m_lgt_mdl->calc();
field_0x7F8.mPos.set(field_0x6D0);
field_0x7F8.mColor.r = l_HIO.mPrmTbl.field_0x06;
field_0x7F8.mColor.g = l_HIO.mPrmTbl.field_0x08;
field_0x7F8.mColor.b = l_HIO.mPrmTbl.field_0x0A;
field_0x7F8.mPower = l_HIO.mPrmTbl.field_0x0C;
field_0x7F8.mFluctuation = l_HIO.mPrmTbl.field_0x10;
setAttention();
}
/* 0000049C-000004CC .text playBrkAnm__11daNpc_Jb1_cFP15J3DAnmTevRegKeyPs */
void daNpc_Jb1_c::playBrkAnm(J3DAnmTevRegKey*, short*) {
/* Nonmatching */
void daNpc_Jb1_c::playBrkAnm(J3DAnmTevRegKey* param_1, s16* param_2) {
if (param_1 == NULL) {
return;
}
*param_2 = *param_2 + 1;
if (*param_2 < param_1->getFrameMax()) {
return;
}
*param_2 = 0;
}
/* 000004CC-000004E0 .text anmNum_toResID__11daNpc_Jb1_cFi */
void daNpc_Jb1_c::anmNum_toResID(int) {
/* Nonmatching */
int daNpc_Jb1_c::anmNum_toResID(int param_1) {
static const int a_bck_resID_tbl[] = {
1,
0
};
return a_bck_resID_tbl[param_1];
}
/* 000004E0-00000588 .text setAnm_anm__11daNpc_Jb1_cFPQ211daNpc_Jb1_c9anm_prm_c */
void daNpc_Jb1_c::setAnm_anm(daNpc_Jb1_c::anm_prm_c*) {
/* Nonmatching */
BOOL daNpc_Jb1_c::setAnm_anm(daNpc_Jb1_c::anm_prm_c* i_anmPrmP) {
if (field_0x91C == i_anmPrmP->field_0x0) {
return TRUE;
}
field_0x91C = i_anmPrmP->field_0x0;
dNpc_setAnmIDRes(
mpMorf,
i_anmPrmP->mLoopMode,
i_anmPrmP->mMorf,
i_anmPrmP->mPlaySpeed,
anmNum_toResID(field_0x91C),
-1,
"Jb"
);
mFrame = 0.0f;
field_0x909 = 0;
field_0x908 = 0;
return TRUE;
}
/* 00000588-000005D0 .text setAnm__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::setAnm() {
/* Nonmatching */
BOOL daNpc_Jb1_c::setAnm() {
static daNpc_Jb1_c::anm_prm_c a_anm_prm_tbl[2] = {
{-1, 0, 0.0f, 0.0f, J3DFrameCtrl::EMode_NULL},
{0, 0, 8.0f, 1.0f, J3DFrameCtrl::EMode_LOOP},
};
if(a_anm_prm_tbl[field_0x91E].field_0x0 >= 0){
setAnm_anm(&a_anm_prm_tbl[field_0x91E]);
}
return TRUE;
}
/* 000005D0-000005D4 .text chg_anmTag__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::chg_anmTag() {
/* Nonmatching */
}
/* 000005D4-000005D8 .text control_anmTag__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::control_anmTag() {
/* Nonmatching */
}
/* 000005D8-00000618 .text chg_anmAtr__11daNpc_Jb1_cFUc */
void daNpc_Jb1_c::chg_anmAtr(unsigned char) {
/* Nonmatching */
void daNpc_Jb1_c::chg_anmAtr(u8 param_1) {
if(param_1 >= 1 || param_1 == field_0x91A) {
return;
}
field_0x91A = param_1;
setAnm_ATR();
}
/* 00000618-00000624 .text control_anmAtr__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::control_anmAtr() {
/* Nonmatching */
switch(field_0x91A) {
case 0:
break;
}
}
/* 00000624-00000658 .text setAnm_ATR__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::setAnm_ATR() {
/* Nonmatching */
static daNpc_Jb1_c::anm_prm_c a_anm_prm_tbl[1] = {
{0, 0, 8.0f, 1.0f, J3DFrameCtrl::EMode_LOOP},
};
setAnm_anm(&a_anm_prm_tbl[field_0x91A]);
}
/* 00000658-0000071C .text anmAtr__11daNpc_Jb1_cFUs */
void daNpc_Jb1_c::anmAtr(unsigned short) {
/* Nonmatching */
void daNpc_Jb1_c::anmAtr(u16 param_1) {
switch(param_1) {
case 6:
if (field_0x923 == 0) {
field_0x91A = 0xFF;
chg_anmAtr(dComIfGp_getMesgAnimeAttrInfo());
field_0x923++;
}
u8 mesgTagInfo = dComIfGp_getMesgAnimeTagInfo();
dComIfGp_clearMesgAnimeTagInfo();
if (mesgTagInfo != 0xFF && field_0x91B != mesgTagInfo) {
field_0x91B = mesgTagInfo;
chg_anmTag();
}
break;
case 0xE:
field_0x923 = 0;
break;
}
control_anmTag();
control_anmAtr();
}
/* 0000071C-0000076C .text eventOrder__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::eventOrder() {
/* Nonmatching */
if ((field_0x91D == 1 || field_0x91D == 2)) {
eventInfo.onCondition(dEvtCnd_CANTALK_e);
if(field_0x91D == 1) {
fopAcM_orderSpeakEvent(this);
}
}
}
/* 0000076C-000007AC .text checkOrder__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::checkOrder() {
/* Nonmatching */
if (eventInfo.mCommand == dEvtCmd_INDEMO_e) {
return;
}
if (eventInfo.mCommand != dEvtCmd_INTALK_e) {
return;
}
if (field_0x91D != 1 && field_0x91D != 2) {
return;
}
field_0x91D = 0;
field_0x915 = 1;
}
/* 000007AC-000007B4 .text next_msgStatus__11daNpc_Jb1_cFPUl */
void daNpc_Jb1_c::next_msgStatus(unsigned long*) {
/* Nonmatching */
u16 daNpc_Jb1_c::next_msgStatus(u32* pMsgNo) {
return 0x10;
}
/* 000007B4-000007BC .text getMsg_JB1_0__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::getMsg_JB1_0() {
/* Nonmatching */
u32 daNpc_Jb1_c::getMsg_JB1_0() {
return 0;
}
/* 000007BC-000007F8 .text getMsg__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::getMsg() {
/* Nonmatching */
u32 daNpc_Jb1_c::getMsg() {
u32 msg = 0;
switch(field_0x921) {
case 0:
msg = getMsg_JB1_0();
break;
}
return msg;
}
/* 000007F8-00000878 .text chkAttention__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::chkAttention() {
/* Nonmatching */
bool daNpc_Jb1_c::chkAttention() {
dAttention_c& attention = dComIfGp_getAttention();
if(attention.LockonTruth()) {
return this == attention.LockonTarget(0);
}
return this == attention.ActionTarget(0);
}
/* 00000878-0000093C .text setAttention__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::setAttention() {
/* Nonmatching */
cXyz temp(0.0f, 1100.0f, 700.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(current.angle.y);
mDoMtx_stack_c::multVec(&temp, &field_0x8F4);
attention_info.position.set(field_0x8F4.x, field_0x8F4.y + l_HIO.mPrmTbl.field_0x00, field_0x8F4.z);
eyePos.set(field_0x8F4.x, field_0x8F4.y, field_0x8F4.z);
}
/* 0000093C-00000958 .text charDecide__11daNpc_Jb1_cFi */
void daNpc_Jb1_c::charDecide(int) {
/* Nonmatching */
bool daNpc_Jb1_c::charDecide(int) {
field_0x920 = 0;
field_0x921 = -1;
field_0x921 = 0;
return true;
}
/* 00000958-000009B0 .text event_actionInit__11daNpc_Jb1_cFi */
void daNpc_Jb1_c::event_actionInit(int) {
/* Nonmatching */
void daNpc_Jb1_c::event_actionInit(int staffIdx) {
int* actNo = dComIfGp_evmng_getMyIntegerP(staffIdx, "ActNo");
if(actNo != NULL){
mActNo = *actNo;
}
}
/* 000009B0-000009D0 .text event_action__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::event_action() {
/* Nonmatching */
bool daNpc_Jb1_c::event_action() {
switch(mActNo) {
case 0:
return true;
}
return true;
}
/* 000009D0-00000ABC .text privateCut__11daNpc_Jb1_cFi */
void daNpc_Jb1_c::privateCut(int) {
/* Nonmatching */
void daNpc_Jb1_c::privateCut(int staffIdx) {
static char* a_cut_tbl[] = {
"ACTION"
};
if(staffIdx != -1) {
mActIdx = dComIfGp_evmng_getMyActIdx(staffIdx, a_cut_tbl, ARRAY_SSIZE(a_cut_tbl), TRUE, 0);
if(mActIdx == -1) {
dComIfGp_evmng_cutEnd(staffIdx);
} else {
if(dComIfGp_evmng_getIsAddvance(staffIdx)) {
switch(mActIdx) {
case 0:
event_actionInit(staffIdx);
break;
}
}
bool temp;
switch(mActIdx) {
case 0:
temp = event_action();
break;
default:
temp = true;
break;
}
if(temp) {
dComIfGp_evmng_cutEnd(staffIdx);
}
}
}
}
/* 00000ABC-00000AF4 .text isEventEntry__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::isEventEntry() {
/* Nonmatching */
int daNpc_Jb1_c::isEventEntry() {
return dComIfGp_evmng_getMyStaffId(mEventCut.getActorName());
}
/* 00000AF4-00000B44 .text event_proc__11daNpc_Jb1_cFi */
void daNpc_Jb1_c::event_proc(int) {
/* Nonmatching */
void daNpc_Jb1_c::event_proc(int param_1) {
if (!mEventCut.cutProc()) {
privateCut(param_1);
}
}
/* 00000B44-00000BF0 .text set_action__11daNpc_Jb1_cFM11daNpc_Jb1_cFPCvPvPv_iPv */
void daNpc_Jb1_c::set_action(ActionFunc, void*) {
/* Nonmatching */
BOOL daNpc_Jb1_c::set_action(ActionFunc actionFunc, void* arg) {
if (mCurrActionFunc != actionFunc) {
if (mCurrActionFunc != NULL) {
field_0x922 = 9;
(this->*mCurrActionFunc)(arg);
}
mCurrActionFunc = actionFunc;
field_0x922 = 0;
(this->*mCurrActionFunc)(arg);
}
return TRUE;
}
/* 00000BF0-00000C20 .text setStt__11daNpc_Jb1_cFSc */
void daNpc_Jb1_c::setStt(signed char) {
/* Nonmatching */
void daNpc_Jb1_c::setStt(s8 param_1) {
field_0x91E = param_1;
switch (field_0x91E) {
case 0:
case 1:
break;
}
setAnm();
}
/* 00000C20-00000C28 .text wait_1__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::wait_1() {
/* Nonmatching */
BOOL daNpc_Jb1_c::wait_1() {
return TRUE;
}
/* 00000C28-00000CBC .text wait_action1__11daNpc_Jb1_cFPv */
void daNpc_Jb1_c::wait_action1(void*) {
/* Nonmatching */
BOOL daNpc_Jb1_c::wait_action1(void*) {
switch(field_0x922) {
case 9:
break;
case 0:
setStt(1);
field_0x922++;
break;
case 1:
case 2:
case 3:
mHasAttention = chkAttention();
switch(field_0x91E) {
case 1:
field_0x910 = wait_1();
break;
}
break;
}
return TRUE;
}
/* 00000CBC-00000D58 .text demo__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::demo() {
/* Nonmatching */
bool daNpc_Jb1_c::demo() {
if (demoActorID == 0) {
if (field_0x917) {
field_0x917 = false;
}
} else {
field_0x917 = true;
dComIfGp_demo_getActor(demoActorID);
dDemo_setDemoData(
this,
dDemo_actor_c::ENABLE_TRANS_e | dDemo_actor_c::ENABLE_ROTATE_e | dDemo_actor_c::ENABLE_ANM_e | dDemo_actor_c::ENABLE_ANM_FRAME_e,
mpMorf,
"Jb"
);
}
return field_0x917;
}
static const u32 dummyColor[] = {
0xFFFFFF80,
0xFF000080,
0x0000FF80,
0x00000000,
};
/* 00000D58-00000E74 .text _draw__11daNpc_Jb1_cFv */
BOOL daNpc_Jb1_c::_draw() {
/* Nonmatching */
J3DModelData* lgtModelData;
J3DModel* pModel;
J3DModelData* modelData;
lgtModelData = m_lgt_mdl->getModelData();
pModel = mpMorf->getModel();
modelData = pModel->getModelData();
if (field_0x90C || field_0x90E) {
return TRUE;
}
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &current.pos, &tevStr);
g_env_light.setLightTevColorType(pModel, &tevStr);
mBrkAnm.entry(modelData, field_0x834);
mpMorf->entryDL();
mBrkAnm.remove(modelData);
mBrkAnm2.entry(lgtModelData, field_0x858);
mDoExt_modelEntryDL(m_lgt_mdl);
mBrkAnm2.remove(lgtModelData);
return TRUE;
}
/* 00000E74-00000FBC .text _execute__11daNpc_Jb1_cFv */
BOOL daNpc_Jb1_c::_execute() {
/* Nonmatching */
if (!field_0x90F) {
mCurrentPos.set(current.pos);
mCurrentRot = current.angle;
field_0x90F = true;
}
if (field_0x90C && demoActorID == 0) {
return TRUE;
}
field_0x90C = false;
checkOrder();
if (!demo()) {
int temp = -1;
if (dComIfGp_event_runCheck() && eventInfo.checkCommandTalk() == false) {
temp = isEventEntry();
}
if(temp >= 0) {
event_proc(temp);
} else {
(this->*mCurrActionFunc)(NULL);
}
fopAcM_posMoveF(this, mStts.GetCCMoveP());
if (!field_0x90D) {
shape_angle = current.angle;
}
}
eventOrder();
setMtx();
return TRUE;
}
/* 00000FBC-00001054 .text _delete__11daNpc_Jb1_cFv */
BOOL daNpc_Jb1_c::_delete() {
/* Nonmatching */
// fopAcM_GetID(); mentioned in debug map
DEMO_SELECT(dComIfG_deleteObjectRes("Jb"), dComIfG_resDelete(&mPhs, "Jb"));
dKy_plight_cut(&field_0x7F8);
if(
#if VERSION > VERSION_DEMO
heap != NULL &&
#endif
mpMorf != NULL) {
mpMorf->stopZelAnime();
}
if(l_HIO.field_0x8 >= 0) {
l_HIO.field_0x8--;
if(l_HIO.field_0x8 < 0) {
mDoHIO_deleteChild(l_HIO.mNo);
}
}
return TRUE;
}
/* 00001054-00001074 .text CheckCreateHeap__FP10fopAc_ac_c */
static BOOL CheckCreateHeap(fopAc_ac_c*) {
/* Nonmatching */
static BOOL CheckCreateHeap(fopAc_ac_c* i_this) {
return ((daNpc_Jb1_c*)i_this)->CreateHeap();
}
/* 00001074-000011B8 .text _create__11daNpc_Jb1_cFv */
cPhs_State daNpc_Jb1_c::_create() {
/* Nonmatching */
static u32 a_size_tbl[] = {
0x000272E0
};
#if VERSION > VERSION_DEMO
fopAcM_SetupActor(this, daNpc_Jb1_c);
#endif
cPhs_State phase_state = dComIfG_resLoad(&mPhs, "Jb");
switch(phase_state) {
case cPhs_COMPLEATE_e:
u8 param = fopAcM_GetParam(this);
if (!charDecide(param)) {
return cPhs_ERROR_e;
}
if(l_HIO.field_0x8 < 0) {
l_HIO.mNo = mDoHIO_createChild("ジャブ−", &l_HIO);
}
l_HIO.field_0x8++;
#if VERSION == VERSION_DEMO
fopAcM_SetupActor(this, daNpc_Jb1_c);
#endif
if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, a_size_tbl[field_0x920])) {
return cPhs_ERROR_e;
}
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
if(createInit() == 0) {
return cPhs_ERROR_e;
}
return phase_state;
}
return phase_state;
}
daNpc_Jb1_c::daNpc_Jb1_c() {}
/* 00001780-00001A0C .text create_Anm__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::create_Anm() {
/* Nonmatching */
J3DModelData* daNpc_Jb1_c::create_Anm() {
J3DModelData* a_mdl_dat = (J3DModelData*)dComIfG_getObjectIDRes("Jb", JB_BDL_JB);
JUT_ASSERT(VERSION_SELECT(0x450, 0x45A, 0x45F, 0x45F), a_mdl_dat != NULL);
mpMorf = new mDoExt_McaMorf(
a_mdl_dat,
NULL, NULL,
(J3DAnmTransformKey*)dComIfG_getObjectIDRes("Jb", JB_BCK_JB_WAIT01),
J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, 1,
NULL,
0x80000,
0x11020022
);
if(mpMorf == NULL) {
return NULL;
} else if(mpMorf->getModel() == NULL) {
mpMorf = NULL;
return NULL;
} else {
m_lmp_brk = (J3DAnmTevRegKey*)dComIfG_getObjectIDRes("Jb", JB_BRK_JB_LAMP);
JUT_ASSERT(VERSION_SELECT(0x464, 0x46E, 0x473, 0x473), m_lmp_brk != NULL);
bool temp = mBrkAnm.init(mpMorf->getModel()->getModelData(), m_lmp_brk, true, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false, 0);
if(temp == false) {
mpMorf = NULL;
return NULL;
} else {
field_0x834 = 0;
m_cse_jnt_num = mpMorf->getModel()->getModelData()->getJointName()->getIndex("jb_case");
JUT_ASSERT(VERSION_SELECT(0x46F, 0x479, 0x47E, 0x47E), m_cse_jnt_num >= 0);
}
}
return a_mdl_dat;
}
// Probably unused JUT_ASSERTS
static void dummy() {
OSReport("m_app_mdl != 0");
OSReport("m_app_bck != 0");
OSReport("m_app_btk != 0");
OSReport("m_app_brk != 0");
OSReport("splash");
OSReport("m_spl_jnt_num >= 0");
}
/* 00001A0C-00001B78 .text create_lgt__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::create_lgt() {
/* Nonmatching */
bool daNpc_Jb1_c::create_lgt() {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectIDRes("Jb", JB_BMD_LF);
m_lgt_mdl = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
JUT_ASSERT(VERSION_SELECT(0x4B6, 0x4C0, 0x4C5, 0x4C5), m_lgt_mdl != NULL);
m_lgt_brk = (J3DAnmTevRegKey*)dComIfG_getObjectIDRes("Jb", JB_BRK_LF);
JUT_ASSERT(VERSION_SELECT(0x4BB, 0x4C5, 0x4CA, 0x4CA), m_lgt_brk != NULL);
bool temp = mBrkAnm2.init(m_lgt_mdl->getModelData(), m_lgt_brk, true, J3DFrameCtrl::EMode_LOOP);
if (!temp) {
return temp;
}
field_0x858 = 0;
return temp;
}
/* 00001B78-00001C20 .text CreateHeap__11daNpc_Jb1_cFv */
void daNpc_Jb1_c::CreateHeap() {
/* Nonmatching */
BOOL daNpc_Jb1_c::CreateHeap() {
if(create_Anm() == NULL) {
return false;
}
if(!create_lgt()) {
return false;
}
mpMorf->getModel()->setUserArea(NULL);
mAcchCir.SetWall(0.0f, 0.0f);
mObjAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this));
return true;
}
/* 00001C20-00001C40 .text daNpc_Jb1_Create__FP10fopAc_ac_c */