tp/src/d/actor/d_a_npc_passer.cpp

1267 lines
39 KiB
C++

/**
* @file d_a_npc_passer.cpp
*
*/
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_npc_passer.h"
#include "d/d_s_play.h"
/* 80AA2C18-80AA2C9C 000078 0084+00 1/0 0/0 0/0 .text __dt__13daNpcPasser_cFv */
daNpcPasser_c::~daNpcPasser_c() {
removeResrc(m_type, m_objNum);
if (heap != NULL) {
mpMorf->stopZelAnime();
}
#if DEBUG
l_Cd2_HIO.removeHIO(this);
#endif
}
/* 80AA2C9C-80AA2D20 0000FC 0084+00 1/1 0/0 0/0 .text createHeap__13daNpcPasser_cFv */
int daNpcPasser_c::createHeap() {
int rv = NpcCreate(m_type);
if (rv != 0) {
if (m_objNum != 0) {
rv = NULL != (mpModel = ObjCreate(m_objNum));
if (!rv) {
mpMorf->stopZelAnime();
}
} else {
mpModel = NULL;
rv = 1;
}
}
return rv;
}
/* 80AA2D20-80AA2D40 000180 0020+00 1/1 0/0 0/0 .text createHeapCallBack__FP10fopAc_ac_c */
static int createHeapCallBack(fopAc_ac_c* i_this) {
daNpcPasser_c* actor = (daNpcPasser_c*)i_this;
return actor->createHeap();
}
/* 80AA2D40-80AA2FD4 0001A0 0294+00 1/1 0/0 0/0 .text create__13daNpcPasser_cFv */
cPhs__Step daNpcPasser_c::create() {
fopAcM_ct(this, daNpcPasser_c);
mIsDarkWorld = dKy_darkworld_check();
m_type = getType();
if (getEndTime() < 0xFF) {
m_endTime = getEndTime();
m_dayOfWeek = getDayOfWeek();
if (getTime() > m_endTime) {
m_dayOfWeek = (m_dayOfWeek + 1) % 7;
}
} else {
m_endTime = 0xFFFF;
}
current.angle.x = 0;
if (m_type < 0 || m_type > 30) {
// Failed to generate high-poly pedestrian actor! ---> m_type = %d
OS_REPORT("ハイポリ通行人アクター生成失敗しました!---> m_type = %d\n", m_type);
return cPhs_ERROR_e;
}
m_objNum = getObjNum();
if (m_objNum < 0 || m_objNum > 13) {
// Failed to generate high-poly pedestrian actor! ---> m_objNum = %d
OS_REPORT("ハイポリ通行人アクター生成失敗しました!---> m_objNum = %d\n", m_objNum);
return cPhs_ERROR_e;
}
cPhs__Step phase = (cPhs__Step)loadResrc(m_type, m_objNum);
if (phase == cPhs_COMPLEATE_e) {
u32 i_size = 0;
#if DEBUG
i_size = 0x2300;
#else
i_size = 0x80002300;
#endif
if (!fopAcM_entrySolidHeap(this, createHeapCallBack, i_size)) {
// Failed to create actor!
OS_REPORT("アクター生成失敗しました!\n");
return cPhs_ERROR_e;
}
create_init();
}
return phase;
}
/* 80AA2FD4-80AA315C 000434 0188+00 1/1 0/0 0/0 .text execute__13daNpcPasser_cFv */
int daNpcPasser_c::execute() {
mAcchCir.SetWallH(Cd2_HIO_chkWallH(m_type));
mAcchCir.SetWallR(Cd2_HIO_chkWallR(m_type));
callExecute();
cLib_addCalc2(&mPosY, current.pos.y, 0.4f, 25.0f);
animation(-1);
setCollision();
setBaseMtx();
if (fopAcM_CheckCondition(this, fopAcCnd_NODRAW_e) && m_endTime != 0xFFFF && m_dayOfWeek == getDayOfWeek()) {
int time = getTime();
if (time >= m_endTime) {
fopAcM_delete(this);
}
}
return 1;
}
/* 80AA315C-80AA31EC 0005BC 0090+00 1/1 0/0 0/0 .text draw__13daNpcPasser_cFv */
int daNpcPasser_c::draw() {
drawNpc();
drawObj(m_objNum, mpModel, Cd2_HIO_objScale(m_type));
drawShadow(40.0f);
#if DEBUG
mAcch.DrawWall(dComIfG_Bgsp());
#endif
mLookat.dbView();
return 1;
}
/* 80AA31EC-80AA3230 00064C 0044+00 4/4 0/0 0/0 .text setAction__13daNpcPasser_cFQ213daNpcPasser_c6Mode_e */
void daNpcPasser_c::setAction(daNpcPasser_c::Mode_e i_action) {
JUT_ASSERT(328, i_action < MODE_MAX_e);
mPrevActionIdx = mActionIdx;
mActionIdx = i_action;
mAction = ActionTable[mActionIdx];
callInit();
}
/* 80AA3230-80AA3258 000690 0028+00 1/1 0/0 0/0 .text callInit__13daNpcPasser_cFv */
void daNpcPasser_c::callInit() {
JUT_ASSERT(346, mAction != NULL);
(this->*mAction[0])();
}
/* 80AA3258-80AA3284 0006B8 002C+00 1/1 0/0 0/0 .text callExecute__13daNpcPasser_cFv */
void daNpcPasser_c::callExecute() {
JUT_ASSERT(359, mAction != NULL);
(this->*mAction[1])();
}
enum Rnd_Values {
/* 0x0 */ ZERO,
/* 0x1 */ ONE,
/* 0x2 */ TWO,
/* 0x3 */ THREE,
/* 0x4 */ FOUR,
/* 0x5 */ FIVE,
};
/* 80AA3284-80AA33F0 0006E4 016C+00 1/0 0/0 0/0 .text initPath__13daNpcPasser_cFv */
void daNpcPasser_c::initPath() {
if (getMoveType() == 1) {
field_0xb1c = 2;
} else if (getMoveType() == 2) {
field_0xb1c = 1;
} else {
field_0xb1c = cLib_getRndValue(0, 2) != 0 ? TWO : ONE;
}
int idx = 2;
if (field_0xb1c == 2) {
if (getWalkMotionType() == 1) {
idx = 2;
} else if (getWalkMotionType() == 2) {
idx = 3;
} else {
idx = cLib_getRndValue(0, 2) != 0 ? TWO : THREE;
}
} else if (field_0xb1c == 1) {
if (getRunMotionType() == 1) {
idx = 4;
} else if (getRunMotionType() == 2) {
idx = 5;
} else {
idx = cLib_getRndValue(0, 2) != 0 ? FOUR : FIVE;
}
}
setAnm((J3DAnmTransformKey*)getAnmP(idx, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xb23 = 0;
field_0xb22 = 1;
mPathMode = 0;
}
/* 80AA33F0-80AA387C 000850 048C+00 1/0 0/0 0/0 .text executePath__13daNpcPasser_cFv */
void daNpcPasser_c::executePath() {
switch (mPathMode) {
case 0:
if (m_path.checkPoint(current.pos, speedF)) {
arg0 = m_path.getArg0();
if (arg0 >= 0 && arg0 < 28) {
field_0xb1c = 0;
mPathMode = 1;
} else {
mPathMode = 2;
}
}
break;
case 1:
if ((this->*m_funcTbl[arg0][field_0xb23])(NULL)) {
if (m_funcTbl[arg0][field_0xb23 + 1] == NULL) {
field_0xb23 = 0;
mPathMode = 2;
} else {
field_0xb23++;
field_0xb22 = 1;
}
}
break;
case 2:
if (m_path.checkPathEnd(current.pos, speedF)) {
fopAcM_delete(this);
} else {
if (field_0xb1c == 0) {
setAnm((J3DAnmTransformKey*)getAnmP(2, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xb1c = 2;
}
m_path.setNextPoint(current.pos);
mPathMode = 0;
}
break;
default:
JUT_ASSERT(433, FALSE);
break;
}
if (field_0xb1c == 2 || field_0xb1c == 1) {
m_path.checkObstacle(this);
cXyz targetPnt;
m_path.getTargetPoint(&targetPnt);
cLib_addCalcAngleS2(&current.angle.y, cLib_targetAngleY(&current.pos, &targetPnt), MREG_S(0) + 13, MREG_S(1) + 0x600);
if (current.pos.y != old.pos.y) {
s16 sVar1 = 0;
cM3dGPla plane;
bool isTriPla = dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &plane);
if (isTriPla) {
sVar1 = fopAcM_getPolygonAngle(&plane, shape_angle.y);
}
if (sVar1 != 0) {
mPosY = current.pos.y;
}
}
if (mAcch.ChkWallHit() && current.pos.abs(old.pos) < 2.0f) {
field_0xb25++;
if (field_0xb25 > 30) {
setAction(MODE_4);
}
} else {
field_0xb25 = 0;
}
}
setAngle();
pathMoveF();
mAcch.CrrPos(dComIfG_Bgsp());
if (checkFearSituation()) {
if (m_objNum == 2 && (m_type == 0 || m_type == 1)) {
setAction(MODE_3);
} else {
setAction(MODE_1);
}
fopAc_ac_c* actor_p = fopAcM_SearchByID(parentActorID);
if (actor_p != NULL) {
fopAcM_delete(actor_p);
}
}
}
/* 80AA38C4-80AA39DC 000D24 0118+00 1/0 0/0 0/0 .text initEscape__13daNpcPasser_cFv */
void daNpcPasser_c::initEscape() {
mEscapeTag = getEscapeTag();
JUT_ASSERT(491, mEscapeTag != NULL);
JUT_ASSERT(492, mEscapeTag->getPathID() != 0xff);
m_path.setPath(mEscapeTag->getPathID(), fopAcM_GetRoomNo(this), 1, &current.pos, true);
JUT_ASSERT(494, m_path.isPath());
m_path.setNextPoint(current.pos);
if (m_objNum == 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0x29, m_objNum), 1.0f, 0.0f, J3DFrameCtrl::EMode_NONE, 0, -1);
mCitizen.playVoice(1);
field_0xb1c = 0;
} else {
setAnm((J3DAnmTransformKey*)getAnmP(4, m_objNum),1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
mCitizen.playVoice(0);
field_0xb1c = 1;
}
dComIfGs_onSaveDunSwitch(60);
}
/* 80AA39DC-80AA3D4C 000E3C 0370+00 1/0 0/0 0/0 .text executeEscape__13daNpcPasser_cFv */
void daNpcPasser_c::executeEscape() {
if (field_0xb1c == 0) {
if (mpMorf->isStop()) {
setAnm((J3DAnmTransformKey*)getAnmP(4, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
mCitizen.playVoice(0);
field_0xb1c = 1;
}
cLib_addCalcAngleS2(&current.angle.y, fopAcM_searchPlayerAngleY(this), MREG_S(0) + 3, MREG_S(1) + 0x600);
} else if (field_0xb1c == 1) {
if (fopAcM_CheckCondition(this, fopAcCnd_NODRAW_e)) {
fopAcM_delete(this);
}
if (m_path.checkPoint(current.pos, speedF)) {
if (m_path.checkPathEnd(current.pos, speedF)) {
fopAcM_delete(this);
}
m_path.setNextPoint(current.pos);
}
m_path.checkObstacle(this);
cXyz targetPnt;
m_path.getTargetPoint(&targetPnt);
cLib_addCalcAngleS2(&current.angle.y, cLib_targetAngleY(&current.pos, &targetPnt), MREG_S(0) + 3, MREG_S(1) + 0x600);
if (current.pos.y != old.pos.y) {
s16 sVar1 = 0;
cM3dGPla plane;
bool isTriPla = dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &plane);
if (isTriPla) {
sVar1 = fopAcM_getPolygonAngle(&plane, shape_angle.y);
}
if (sVar1 != 0) {
mPosY = current.pos.y;
}
}
setAngle();
pathMoveF();
mAcch.CrrPos(dComIfG_Bgsp());
if (mAcch.ChkWallHit() && current.pos.abs(old.pos) < 2.0f) {
field_0xb25++;
if (field_0xb25 > 30) {
setAction(MODE_2);
}
} else {
field_0xb25 = 0;
}
}
}
/* 80AA3D4C-80AA3DE4 0011AC 0098+00 1/0 0/0 0/0 .text initFear__13daNpcPasser_cFv */
void daNpcPasser_c::initFear() {
m_objNum = 0;
setAnm((J3DAnmTransformKey*)getAnmP(0x26, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
mTargetAngleY = cLib_targetAngleY(fopAcM_GetPosition_p(daPy_getPlayerActorClass()), &current.pos);
speedF = 0.0f;
field_0xb1c = 0;
}
/* 80AA3DE4-80AA3E5C 001244 0078+00 1/0 0/0 0/0 .text executeFear__13daNpcPasser_cFv */
void daNpcPasser_c::executeFear() {
if (mpMorf->checkFrame(1.0f)) {
mCitizen.playVoice(2);
}
if (fopAcM_CheckCondition(this, fopAcCnd_NODRAW_e)) {
fopAcM_delete(this);
}
cLib_addCalcAngleS2(&shape_angle.y, mTargetAngleY, MREG_S(0) + 3, MREG_S(1) + 0x600);
}
/* 80AA3E5C-80AA3F10 0012BC 00B4+00 1/0 0/0 0/0 .text initFight__13daNpcPasser_cFv */
void daNpcPasser_c::initFight() {
setAnm((J3DAnmTransformKey*)getAnmP(0x29, m_objNum), 1.0f, 0.0f, J3DFrameCtrl::EMode_NONE, 0, -1);
mCitizen.playVoice(1);
speedF = 0.0f;
fopAcM_setCullSizeBox(this, -40.0f, -10.0f, -80.0f, 40.0f, 190.0f, 200.0f);
dComIfGs_onSaveDunSwitch(60);
field_0xb1c = 0;
}
/* 80AA3F10-80AA40A4 001370 0194+00 1/0 0/0 0/0 .text executeFight__13daNpcPasser_cFv */
void daNpcPasser_c::executeFight() {
if (mpMorf->isStop()) {
setAnm((J3DAnmTransformKey*)getAnmP(0x2A, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
}
mTargetAngleY = fopAcM_searchPlayerAngleY(this);
if (mpMorf->getAnm() != getAnmP(0x29, m_objNum)) {
if (mpMorf->checkFrame(1.0f)) {
mCitizen.playVoice(2);
}
if (cLib_distanceAngleS(shape_angle.y, mTargetAngleY) > 0x600) {
setAnm((J3DAnmTransformKey*)getAnmP(0x2C, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
} else {
setAnm((J3DAnmTransformKey*)getAnmP(0x2A, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
}
}
if (fopAcM_CheckCondition(this, fopAcCnd_NODRAW_e)) {
fopAcM_delete(this);
}
cLib_addCalcAngleS2(&shape_angle.y, mTargetAngleY, MREG_S(0) + 3, MREG_S(1) + 0x600);
}
/* 80AA40A4-80AA4128 001504 0084+00 1/0 0/0 0/0 .text initRelief__13daNpcPasser_cFv */
void daNpcPasser_c::initRelief() {
setAnm((J3DAnmTransformKey*)getAnmP(0, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
speedF = 0.0f;
mTargetAngleY = shape_angle.y + 0x8000;
field_0xb1c = 0;
}
/* 80AA4128-80AA41E4 001588 00BC+00 1/0 0/0 0/0 .text executeRelief__13daNpcPasser_cFv */
void daNpcPasser_c::executeRelief() {
if (fopAcM_CheckCondition(this, fopAcCnd_NODRAW_e)) {
fopAcM_delete(this);
}
if (checkFearSituation()) {
if (m_objNum == 2 && (m_type == 0 || m_type == 1)) {
setAction(MODE_3);
} else {
setAction(MODE_1);
}
fopAc_ac_c* actor_p = fopAcM_SearchByID(parentActorID);
if (actor_p != NULL) {
fopAcM_delete(actor_p);
}
}
cLib_addCalcAngleS2(&shape_angle.y, mTargetAngleY, MREG_S(0) + 3, MREG_S(1) + 0x600);
}
/* 80AA41E4-80AA43A4 001644 01C0+00 1/1 0/0 0/0 .text create_init__13daNpcPasser_cFv */
void daNpcPasser_c::create_init() {
#if DEBUG
// NPC (C-class, D-class) Pedestrian High
l_Cd2_HIO.entryHIO("NPC(C級,D級)通行人 High");
#endif
gravity = -3.0f;
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
fopAcM_setCullSizeBox(this, -40.0f, -10.0f, -30.0f, 30.0f, 190.0f, 40.0f);
mAcchCir.SetWall(Cd2_HIO_chkWallH(m_type), Cd2_HIO_chkWallR(m_type));
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this),
fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
mAcch.SetRoofNone();
mAcch.SetWaterNone();
mAcch.CrrPos(dComIfG_Bgsp());
setEnvTevCol();
setRoomNo();
initCollision();
attention_info.flags = 0;
if (m_path.setPath(getPathID(), fopAcM_GetRoomNo(this), 1, &current.pos, true)) {
setAction(MODE_0);
}
mpMorf->setMorf(0.0f);
mAcch.CrrPos(dComIfG_Bgsp());
mPosY = current.pos.y = mAcch.GetGroundH();
setBaseMtx();
}
/* 80AA6A9C-80AA6B14 000098 0078+00 1/2 0/0 0/0 .data ActionTable__13daNpcPasser_c */
daNpcPasser_c::actionFunc daNpcPasser_c::ActionTable[5][2] = {
{&daNpcPasser_c::initPath, &daNpcPasser_c::executePath},
{&daNpcPasser_c::initEscape, &daNpcPasser_c::executeEscape},
{&daNpcPasser_c::initFear, &daNpcPasser_c::executeFear},
{&daNpcPasser_c::initFight, &daNpcPasser_c::executeFight},
{&daNpcPasser_c::initRelief, &daNpcPasser_c::executeRelief},
};
/* 80AA6B14-80AA6B84 -00001 0070+00 1/1 0/0 0/0 .data m_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc* daNpcPasser_c::m_funcTbl[28] = {
daNpcPasser_c::m_seq00_funcTbl, daNpcPasser_c::m_seq01_funcTbl,
daNpcPasser_c::m_seq02_funcTbl, daNpcPasser_c::m_seq03_funcTbl,
daNpcPasser_c::m_seq04_funcTbl, daNpcPasser_c::m_seq05_funcTbl,
daNpcPasser_c::m_seq06_funcTbl, daNpcPasser_c::m_seq07_funcTbl,
daNpcPasser_c::m_seq08_funcTbl, daNpcPasser_c::m_seq09_funcTbl,
daNpcPasser_c::m_seq10_funcTbl, daNpcPasser_c::m_seq11_funcTbl,
daNpcPasser_c::m_seq12_funcTbl, daNpcPasser_c::m_seq13_funcTbl,
daNpcPasser_c::m_seq14_funcTbl, daNpcPasser_c::m_seq15_funcTbl,
daNpcPasser_c::m_seq16_funcTbl, daNpcPasser_c::m_seq17_funcTbl,
daNpcPasser_c::m_seq18_funcTbl, daNpcPasser_c::m_seq19_funcTbl,
daNpcPasser_c::m_seq20_funcTbl, daNpcPasser_c::m_seq21_funcTbl,
daNpcPasser_c::m_seq22_funcTbl, daNpcPasser_c::m_seq23_funcTbl,
daNpcPasser_c::m_seq24_funcTbl, daNpcPasser_c::m_seq25_funcTbl,
daNpcPasser_c::m_seq26_funcTbl, daNpcPasser_c::m_seq27_funcTbl,
};
/* 80AA6B90-80AA6BA8 00018C 0018+00 1/1 0/0 0/0 .data m_seq00_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq00_funcTbl[2] = {
&daNpcPasser_c::walka,
NULL,
};
/* 80AA6BB4-80AA6BCC 0001B0 0018+00 1/1 0/0 0/0 .data m_seq01_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq01_funcTbl[2] = {
&daNpcPasser_c::runa,
NULL,
};
/* 80AA6BD8-80AA6BF0 0001D4 0018+00 1/1 0/0 0/0 .data m_seq02_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq02_funcTbl[2] = {
&daNpcPasser_c::waita,
NULL,
};
/* 80AA6BFC-80AA6C14 0001F8 0018+00 1/1 0/0 0/0 .data m_seq03_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq03_funcTbl[2] = {
&daNpcPasser_c::talka,
NULL,
};
/* 80AA6C20-80AA6C38 00021C 0018+00 1/1 0/0 0/0 .data m_seq04_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq04_funcTbl[2] = {
&daNpcPasser_c::runb,
NULL,
};
/* 80AA6C5C-80AA6C8C 000258 0030+00 1/1 0/0 0/0 .data m_seq05_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq05_funcTbl[4] = {
&daNpcPasser_c::turnr,
&daNpcPasser_c::waita,
&daNpcPasser_c::talka,
NULL,
};
/* 80AA6CB0-80AA6CE0 0002AC 0030+00 1/1 0/0 0/0 .data m_seq06_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq06_funcTbl[4] = {
&daNpcPasser_c::turnl,
&daNpcPasser_c::waita,
&daNpcPasser_c::talka,
NULL,
};
/* 80AA6CEC-80AA6D04 0002E8 0018+00 1/1 0/0 0/0 .data m_seq07_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq07_funcTbl[2] = {
&daNpcPasser_c::waitwall,
NULL,
};
/* 80AA6D4C-80AA6DA0 000348 0054+00 1/1 0/0 0/0 .data m_seq08_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq08_funcTbl[7] = {
&daNpcPasser_c::talkwall,
&daNpcPasser_c::waitwall,
&daNpcPasser_c::talkbwall,
&daNpcPasser_c::waitwall,
&daNpcPasser_c::talkwall,
&daNpcPasser_c::talkbwall,
NULL,
};
/* 80AA6DAC-80AA6DC4 0003A8 0018+00 1/1 0/0 0/0 .data m_seq09_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq09_funcTbl[2] = {
&daNpcPasser_c::talkb,
NULL,
};
/* 80AA6DD0-80AA6DE8 0003CC 0018+00 1/1 0/0 0/0 .data m_seq10_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq10_funcTbl[2] = {
&daNpcPasser_c::talkc,
NULL,
};
/* 80AA6E24-80AA6E6C 000420 0048+00 1/1 0/0 0/0 .data m_seq11_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq11_funcTbl[6] = {
&daNpcPasser_c::talka,
&daNpcPasser_c::waita,
&daNpcPasser_c::talkb,
&daNpcPasser_c::waitb,
&daNpcPasser_c::talkc,
NULL,
};
/* 80AA6E78-80AA6E90 000474 0018+00 1/1 0/0 0/0 .data m_seq12_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq12_funcTbl[2] = {
&daNpcPasser_c::waitb,
NULL,
};
/* 80AA6ECC-80AA6F14 0004C8 0048+00 1/1 0/0 0/0 .data m_seq13_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq13_funcTbl[6] = {
&daNpcPasser_c::browsea,
&daNpcPasser_c::browseb,
&daNpcPasser_c::talka,
&daNpcPasser_c::talkb,
&daNpcPasser_c::waita,
NULL,
};
/* 80AA6F20-80AA6F38 00051C 0018+00 1/1 0/0 0/0 .data m_seq14_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq14_funcTbl[2] = {
&daNpcPasser_c::walkb,
NULL,
};
/* 80AA6F44-80AA6F5C 000540 0018+00 1/1 0/0 0/0 .data m_seq15_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq15_funcTbl[2] = {
&daNpcPasser_c::sitwaita,
NULL,
};
/* 80AA6FA4-80AA6FF8 0005A0 0054+00 1/1 0/0 0/0 .data m_seq16_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq16_funcTbl[7] = {
&daNpcPasser_c::sittalka,
&daNpcPasser_c::sitwaita,
&daNpcPasser_c::sittalkab,
&daNpcPasser_c::sitwaita,
&daNpcPasser_c::sittalka,
&daNpcPasser_c::sittalkab,
NULL,
};
/* 80AA7004-80AA701C 000600 0018+00 1/1 0/0 0/0 .data m_seq17_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq17_funcTbl[2] = {
&daNpcPasser_c::playm,
NULL,
};
/* 80AA7028-80AA7040 000624 0018+00 1/1 0/0 0/0 .data m_seq18_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq18_funcTbl[2] = {
&daNpcPasser_c::sitwaitb,
NULL,
};
/* 80AA7088-80AA70DC 000684 0054+00 1/1 0/0 0/0 .data m_seq19_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq19_funcTbl[7] = {
&daNpcPasser_c::sittalkb,
&daNpcPasser_c::sitwaitb,
&daNpcPasser_c::sittalkbb,
&daNpcPasser_c::sitwaitb,
&daNpcPasser_c::sittalkb,
&daNpcPasser_c::sittalkbb,
NULL,
};
/* 80AA70E8-80AA7100 0006E4 0018+00 1/1 0/0 0/0 .data m_seq20_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq20_funcTbl[2] = {
&daNpcPasser_c::looka,
NULL,
};
/* 80AA710C-80AA7124 000708 0018+00 1/1 0/0 0/0 .data m_seq21_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq21_funcTbl[2] = {
&daNpcPasser_c::lookb,
NULL,
};
/* 80AA7148-80AA7178 000744 0030+00 1/1 0/0 0/0 .data m_seq22_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq22_funcTbl[4] = {
&daNpcPasser_c::looka,
&daNpcPasser_c::lookb,
&daNpcPasser_c::waita,
NULL,
};
/* 80AA71C0-80AA7214 0007BC 0054+00 1/1 0/0 0/0 .data m_seq23_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq23_funcTbl[7] = {
&daNpcPasser_c::talka,
&daNpcPasser_c::waita,
&daNpcPasser_c::talkb,
&daNpcPasser_c::waita,
&daNpcPasser_c::talka,
&daNpcPasser_c::talkb,
NULL,
};
/* 80AA7244-80AA7280 000840 003C+00 1/1 0/0 0/0 .data m_seq24_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq24_funcTbl[5] = {
&daNpcPasser_c::talkb,
&daNpcPasser_c::talka,
&daNpcPasser_c::talkc,
&daNpcPasser_c::waita,
NULL,
};
/* 80AA72C8-80AA731C 0008C4 0054+00 1/1 0/0 0/0 .data m_seq25_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq25_funcTbl[7] = {
&daNpcPasser_c::browsea,
&daNpcPasser_c::browseb,
&daNpcPasser_c::talka,
&daNpcPasser_c::talkb,
&daNpcPasser_c::talkc,
&daNpcPasser_c::waita,
NULL,
};
/* 80AA7334-80AA7358 000930 0024+00 1/1 0/0 0/0 .data m_seq26_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq26_funcTbl[3] = {
&daNpcPasser_c::browsea,
&daNpcPasser_c::browseb,
NULL,
};
/* 80AA7364-80AA7370 000960 000C+00 1/1 0/0 0/0 .data m_seq27_funcTbl__13daNpcPasser_c */
daNpcPasser_c::seqFunc daNpcPasser_c::m_seq27_funcTbl[1] = {
&daNpcPasser_c::waitTime,
};
/* 80AA43A4-80AA43B0 001804 000C+00 2/2 0/0 0/0 .text setAngle__13daNpcPasser_cFv */
void daNpcPasser_c::setAngle() {
shape_angle.y = current.angle.y;
}
/* 80AA43B0-80AA44A4 001810 00F4+00 1/1 0/0 0/0 .text setSpeed__13daNpcPasser_cFffPfi */
void daNpcPasser_c::setSpeed(f32 param_1, f32 param_2, f32* i_speed, int param_4) {
f32 target = field_0xb10 * (param_2 * field_0xb10);
f32 step = field_0xb10 * (param_1 * field_0xb10);
if (param_4 != 0 && mAcch.ChkWallHit()) {
s16 sVar1 = current.angle.y + 0x8000 - mAcchCir.GetWallAngleY();
if (abs(sVar1) < 0x4000) {
target *= 1.0f - cM_scos(sVar1);
}
}
if (param_2 < target) {
target = param_2;
}
cLib_chaseF(i_speed, target, step);
}
/* 80AA44A4-80AA4780 001904 02DC+00 2/2 0/0 0/0 .text pathMoveF__13daNpcPasser_cFv */
void daNpcPasser_c::pathMoveF() {
f32 fVar1 = 0.0f;
f32 speed = 0.0f;
f32 fVar2 = 0.0f;
cXyz* ccMoveP = mStts.GetCCMoveP();
if (field_0xb1c == 2) {
fVar1 = Cd2_HIO_walkMaxSpeed(m_type);
fVar2 = Cd2_HIO_walkAnmPlaySpeed(m_type);
cLib_chaseF(&field_0xb10, 0.8f, 0.05f);
setSpeed(MREG_F(0) + 0.7f, fVar1, &field_0xb14, 0);
setSpeed(MREG_F(0) + 0.7f, fVar1, &speedF, 1);
} else if (field_0xb1c == 1) {
fVar1 = Cd2_HIO_maxSpeed(m_type);
fVar2 = Cd2_HIO_anmPlaySpeed(m_type);
if (mActionIdx == 1) {
fVar1 *= 1.5f;
fVar2 *= 1.5f;
}
cLib_chaseF(&field_0xb10, 1.0f, 0.05f);
setSpeed(MREG_F(0) + 0.7f, fVar1, &field_0xb14, 0);
setSpeed(MREG_F(0) + 0.7f, fVar1, &speedF, 1);
} else if (field_0xb1c == 0) {
cLib_chaseF(&field_0xb10, 0.0f, 0.05f);
cLib_chaseF(&field_0xb14, 0.0f, 1.5f);
cLib_chaseF(&speedF, 0.0f, 1.5f);
}
cXyz targetPnt;
m_path.getTargetPoint(&targetPnt);
s32 angleS = cLib_distanceAngleS(current.angle.y, cLib_targetAngleY(&current.pos, &targetPnt));
if (angleS >= 0x2000) {
cLib_chaseF(&field_0xb10, 0.0f, 0.05f);
cLib_chaseF(&field_0xb14, 0.0f, 1.2f);
cLib_chaseF(&speedF, 0.0f, 1.2f);
}
fopAcM_posMoveF(this, ccMoveP);
if (field_0xb1c != 0) {
fVar1 = field_0xb14 / fVar1;
if (fVar1 > 1.0f) {
fVar1 = 1.0f;
}
speed = fVar2 * fVar1;
if (speed < 0.6f) {
speed = 0.6f;
}
mpMorf->setPlaySpeed(speed);
}
}
/* 80AA4780-80AA47FC 001BE0 007C+00 2/2 0/0 0/0 .text setBaseMtx__13daNpcPasser_cFv */
void daNpcPasser_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos.x, mPosY, current.pos.z);
mDoMtx_stack_c::YrotM(shape_angle.y);
mpMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
mpMorf->modelCalc();
setAttention(m_type);
}
/* 80AA47FC-80AA48D8 001C5C 00DC+00 1/1 0/0 0/0 .text initCollision__13daNpcPasser_cFv */
void daNpcPasser_c::initCollision() {
mStts.Init(0xD9, 0xFF, this);
mStts.SetRoomId(fopAcM_GetRoomNo(this));
mCyl.SetStts(&mStts);
mCyl.Set(m_cylDat);
mCyl.SetR(Cd2_HIO_cylR(m_type));
mCyl.SetH(Cd2_HIO_cylH(m_type));
}
/* 80AA48D8-80AA492C 001D38 0054+00 1/1 0/0 0/0 .text setCollision__13daNpcPasser_cFv */
void daNpcPasser_c::setCollision() {
#if DEBUG
mCyl.SetR(Cd2_HIO_cylR(m_type));
mCyl.SetH(Cd2_HIO_cylH(m_type));
#endif
mCyl.SetC(current.pos);
if (!fopAcM_CheckCondition(this, fopAcCnd_NODRAW_e)) {
dComIfG_Ccsp()->Set(&mCyl);
}
}
/* 80AA492C-80AA49D4 001D8C 00A8+00 10/0 0/0 0/0 .text waita__13daNpcPasser_cFPv */
BOOL daNpcPasser_c::waita(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA49D4-80AA4A7C 001E34 00A8+00 9/0 0/0 0/0 .text talka__13daNpcPasser_cFPv */
int daNpcPasser_c::talka(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(6, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA4A7C-80AA4B24 001EDC 00A8+00 3/0 0/0 0/0 .text waitwall__13daNpcPasser_cFPv */
int daNpcPasser_c::waitwall(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0xB, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA4B24-80AA4BCC 001F84 00A8+00 2/0 0/0 0/0 .text talkwall__13daNpcPasser_cFPv */
int daNpcPasser_c::talkwall(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0xC, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA4BCC-80AA4C74 00202C 00A8+00 2/0 0/0 0/0 .text talkbwall__13daNpcPasser_cFPv */
int daNpcPasser_c::talkbwall(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0xD, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA4C74-80AA4D1C 0020D4 00A8+00 7/0 0/0 0/0 .text talkb__13daNpcPasser_cFPv */
int daNpcPasser_c::talkb(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(7, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA4D1C-80AA4DC4 00217C 00A8+00 4/0 0/0 0/0 .text talkc__13daNpcPasser_cFPv */
int daNpcPasser_c::talkc(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(8, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA4DC4-80AA4E6C 002224 00A8+00 2/0 0/0 0/0 .text waitb__13daNpcPasser_cFPv */
int daNpcPasser_c::waitb(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(1, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA4E6C-80AA4F14 0022CC 00A8+00 3/0 0/0 0/0 .text sitwaita__13daNpcPasser_cFPv */
int daNpcPasser_c::sitwaita(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0xE, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA4F14-80AA4FBC 002374 00A8+00 2/0 0/0 0/0 .text sittalka__13daNpcPasser_cFPv */
int daNpcPasser_c::sittalka(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0xF, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA4FBC-80AA5064 00241C 00A8+00 2/0 0/0 0/0 .text sittalkab__13daNpcPasser_cFPv */
int daNpcPasser_c::sittalkab(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0x10, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA5064-80AA510C 0024C4 00A8+00 3/0 0/0 0/0 .text sitwaitb__13daNpcPasser_cFPv */
int daNpcPasser_c::sitwaitb(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0x11, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA510C-80AA51B4 00256C 00A8+00 2/0 0/0 0/0 .text sittalkb__13daNpcPasser_cFPv */
int daNpcPasser_c::sittalkb(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0x12, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA51B4-80AA525C 002614 00A8+00 2/0 0/0 0/0 .text sittalkbb__13daNpcPasser_cFPv */
int daNpcPasser_c::sittalkbb(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0x13, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA525C-80AA5304 0026BC 00A8+00 2/0 0/0 0/0 .text looka__13daNpcPasser_cFPv */
int daNpcPasser_c::looka(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(9, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA5304-80AA53AC 002764 00A8+00 2/0 0/0 0/0 .text lookb__13daNpcPasser_cFPv */
int daNpcPasser_c::lookb(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0xA, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA53AC-80AA5454 00280C 00A8+00 1/0 0/0 0/0 .text playm__13daNpcPasser_cFPv */
int daNpcPasser_c::playm(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0x22, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA5454-80AA5510 0028B4 00BC+00 1/0 0/0 0/0 .text turnr__13daNpcPasser_cFPv */
int daNpcPasser_c::turnr(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
mTargetAngleY = current.angle.y - 0x4000;
field_0xb22 = 0;
}
cLib_addCalcAngleS2(&current.angle.y, mTargetAngleY, 4, 0x2000);
if (abs(mTargetAngleY - current.angle.y) <= 4) {
current.angle.y = mTargetAngleY;
return TRUE;
}
return FALSE;
}
/* 80AA5510-80AA55CC 002970 00BC+00 1/0 0/0 0/0 .text turnl__13daNpcPasser_cFPv */
int daNpcPasser_c::turnl(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
mTargetAngleY = current.angle.y + 0x4000;
field_0xb22 = 0;
}
cLib_addCalcAngleS2(&current.angle.y, mTargetAngleY, 4, 0x2000);
if (abs(mTargetAngleY - current.angle.y) <= 4) {
current.angle.y = mTargetAngleY;
return TRUE;
}
return FALSE;
}
/* 80AA55CC-80AA5634 002A2C 0068+00 1/0 0/0 0/0 .text walka__13daNpcPasser_cFPv */
int daNpcPasser_c::walka(void* param_1) {
setAnm((J3DAnmTransformKey*)getAnmP(2, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xb1c = 2;
return TRUE;
}
/* 80AA5634-80AA569C 002A94 0068+00 1/0 0/0 0/0 .text runa__13daNpcPasser_cFPv */
int daNpcPasser_c::runa(void* param_1) {
setAnm((J3DAnmTransformKey*)getAnmP(4, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xb1c = 1;
return TRUE;
}
/* 80AA569C-80AA5704 002AFC 0068+00 1/0 0/0 0/0 .text runb__13daNpcPasser_cFPv */
int daNpcPasser_c::runb(void* param_1) {
setAnm((J3DAnmTransformKey*)getAnmP(5, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xb1c = 1;
return TRUE;
}
/* 80AA5704-80AA576C 002B64 0068+00 1/0 0/0 0/0 .text walkb__13daNpcPasser_cFPv */
int daNpcPasser_c::walkb(void* param_1) {
setAnm((J3DAnmTransformKey*)getAnmP(3, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xb1c = 2;
return TRUE;
}
/* 80AA576C-80AA5814 002BCC 00A8+00 3/0 0/0 0/0 .text browsea__13daNpcPasser_cFPv */
int daNpcPasser_c::browsea(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0x14, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA5814-80AA58BC 002C74 00A8+00 3/0 0/0 0/0 .text browseb__13daNpcPasser_cFPv */
int daNpcPasser_c::browseb(void* param_1) {
if (!isStop()) {
return FALSE;
}
if (field_0xb22 != 0) {
setAnm((J3DAnmTransformKey*)getAnmP(0x15, m_objNum), 1.0f, 12.0f, J3DFrameCtrl::EMode_LOOP, 0, -1);
field_0xaa0 = cLib_getRndValue(2.0f, 2.0f) + 0.1f;
field_0xb22 = 0;
}
return field_0xaa0 == 0;
}
/* 80AA58BC-80AA58D8 002D1C 001C+00 1/0 0/0 0/0 .text waitTime__13daNpcPasser_cFPv */
int daNpcPasser_c::waitTime(void* param_1) {
if (field_0xb22 != 0) {
field_0xb22 = 0;
}
return FALSE;
}
/* 80AA58D8-80AA58F8 002D38 0020+00 1/0 0/0 0/0 .text daNpcPasser_Create__FPv */
static int daNpcPasser_Create(void* i_this) {
return static_cast<daNpcPasser_c*>(i_this)->create();
}
/* 80AA58F8-80AA592C 002D58 0034+00 1/0 0/0 0/0 .text daNpcPasser_Delete__FPv */
static int daNpcPasser_Delete(void* i_this) {
static_cast<daNpcPasser_c*>(i_this)->~daNpcPasser_c();
return 1;
}
/* 80AA592C-80AA594C 002D8C 0020+00 1/0 0/0 0/0 .text daNpcPasser_Execute__FPv */
static int daNpcPasser_Execute(void* i_this) {
return static_cast<daNpcPasser_c*>(i_this)->execute();
}
/* 80AA594C-80AA596C 002DAC 0020+00 1/0 0/0 0/0 .text daNpcPasser_Draw__FPv */
static int daNpcPasser_Draw(void* i_this) {
return static_cast<daNpcPasser_c*>(i_this)->draw();
}
/* 80AA596C-80AA5974 002DCC 0008+00 1/0 0/0 0/0 .text daNpcPasser_IsDelete__FPv */
static int daNpcPasser_IsDelete(void* i_this) {
return 1;
}
/* 80AA7370-80AA7390 -00001 0020+00 1/0 0/0 0/0 .data daNpcPasser_METHODS */
static actor_method_class daNpcPasser_METHODS = {
(process_method_func)daNpcPasser_Create,
(process_method_func)daNpcPasser_Delete,
(process_method_func)daNpcPasser_Execute,
(process_method_func)daNpcPasser_IsDelete,
(process_method_func)daNpcPasser_Draw,
};
/* 80AA7390-80AA73C0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_PASSER */
extern actor_process_profile_definition g_profile_NPC_PASSER = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_NPC_PASSER, // mProcName
&g_fpcLf_Method.base, // sub_method
sizeof(daNpcPasser_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
401, // mPriority
&daNpcPasser_METHODS, // sub_method
0x02040107, // mStatus
fopAc_NPC_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};