mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-02 18:18:29 -04:00
d_a_npc_btsw2 100%, weak order not matching
This commit is contained in:
@@ -827,7 +827,7 @@ public:
|
||||
}
|
||||
s16 getEnd() const { return mEnd; }
|
||||
void setEnd(s16 end) { mEnd = end; }
|
||||
s32 getLoop() { return mLoop; }
|
||||
s32 getLoop() const { return mLoop; }
|
||||
void setLoop(s16 loop) { mLoop = loop; }
|
||||
f32 getRate() const { return mRate; }
|
||||
void setRate(f32 rate) { mRate = rate; }
|
||||
|
||||
@@ -24,7 +24,7 @@ public:
|
||||
BOOL initTexPatternAnm(bool);
|
||||
void playTexPatternAnm();
|
||||
void setAnm(s8);
|
||||
void chkAttention(cXyz, s16);
|
||||
bool chkAttention(cXyz, s16);
|
||||
void eventOrder();
|
||||
void checkOrder();
|
||||
virtual void anmAtr(u16);
|
||||
@@ -52,38 +52,34 @@ public:
|
||||
/* 0x6D4 */ J3DModel* m6D4;
|
||||
/* 0x6D8 */ J3DAnmTexPattern* m_btp;
|
||||
/* 0x6DC */ mDoExt_btpAnm mBtpAnm;
|
||||
/* 0x6F0 */ s8 m6F0;
|
||||
/* 0x6F0 */ u8 m6F0;
|
||||
/* 0x6F1 */ s8 m6F1;
|
||||
/* 0x6F2 */ s8 m6F2;
|
||||
/* 0x6F3 */ u8 m6F3[0x6F4 - 0x6F3];
|
||||
/* 0x6F4 */ s16 m6F4;
|
||||
/* 0x6F6 */ u8 m6F6[0x704 - 0x6F6];
|
||||
/* 0x704 */ cXyz m704;
|
||||
/* 0x710 */ u8 m710[0x714 - 0x710];
|
||||
/* 0x714 */ csXyz m714;
|
||||
/* 0x71A */ u8 m71A[0x71D - 0x71A];
|
||||
/* 0x71D */ u8 m71D;
|
||||
/* 0x71D */ bool m71D;
|
||||
/* 0x71E */ bool m71E;
|
||||
/* 0x71F */ u8 m71F[0x724 - 0x71F];
|
||||
/* 0x724 */ u8 m724;
|
||||
/* 0x725 */ u8 m725[0x728 - 0x725];
|
||||
/* 0x728 */ ActionFunc mCurrActionFunc;
|
||||
/* 0x734 */ s8 mPathNo;
|
||||
/* 0x735 */ u8 m735;
|
||||
/* 0x736 */ u8 m736;
|
||||
/* 0x737 */ u8 m737[0x738 - 0x737];
|
||||
/* 0x738 */ dPath* mpPath;
|
||||
/* 0x73C */ s16 m73C;
|
||||
/* 0x73E */ s16 m73E;
|
||||
/* 0x740 */ s16 m740;
|
||||
/* 0x742 */ s16 m742;
|
||||
/* 0x744 */ s8 m744;
|
||||
/* 0x745 */ u8 m745;
|
||||
/* 0x746 */ u8 m746;
|
||||
/* 0x747 */ u8 m747;
|
||||
/* 0x745 */ s8 m745;
|
||||
/* 0x746 */ s8 m746;
|
||||
/* 0x747 */ s8 m747;
|
||||
/* 0x748 */ u8 m748[0x74A - 0x748];
|
||||
/* 0x74A */ s8 m74A;
|
||||
/* 0x74B */ u8 m74B[0x74C - 0x74B];
|
||||
};
|
||||
|
||||
class daNpc_Btsw2_HIO_c {
|
||||
|
||||
@@ -560,6 +560,11 @@ public:
|
||||
u8 getMelodyNum() { return mMelodyNum; }
|
||||
void setMelodyNum(u8 melody) { mMelodyNum = melody; }
|
||||
|
||||
u8 getBaseAnimeID() { return mMesgAnime; }
|
||||
void clearBaseAnimeID() { mMesgAnime = 0xFF; }
|
||||
u8 getNowAnimeID() { return mMesgAnimeTagInfo; }
|
||||
void clearNowAnimeID() { mMesgAnimeTagInfo = 0xFF; }
|
||||
|
||||
/* 0x0000 */ dBgS mBgS;
|
||||
/* 0x1404 */ dCcS mCcS;
|
||||
/* 0x3DF8 */ dADM mADM;
|
||||
@@ -2358,6 +2363,22 @@ inline void dComIfGp_setMelodyNum(u8 melody) {
|
||||
g_dComIfG_gameInfo.play.setMelodyNum(melody);
|
||||
}
|
||||
|
||||
inline u8 dComIfGp_getMesgAnimeAttrInfo() {
|
||||
return g_dComIfG_gameInfo.play.getBaseAnimeID();
|
||||
}
|
||||
|
||||
inline void dComIfGp_clearMesgAnimeAttrInfo() {
|
||||
g_dComIfG_gameInfo.play.clearBaseAnimeID();
|
||||
}
|
||||
|
||||
inline u8 dComIfGp_getMesgAnimeTagInfo() {
|
||||
return g_dComIfG_gameInfo.play.getNowAnimeID();
|
||||
}
|
||||
|
||||
inline void dComIfGp_clearMesgAnimeTagInfo() {
|
||||
g_dComIfG_gameInfo.play.clearNowAnimeID();
|
||||
}
|
||||
|
||||
/**
|
||||
* === EVENT ===
|
||||
*/
|
||||
|
||||
+1
-1
@@ -157,7 +157,7 @@ enum {
|
||||
/* 0x95 */ DSNAP_TYPE_UNK95,
|
||||
/* 0x96 */ DSNAP_TYPE_UNK96,
|
||||
/* 0x97 */ DSNAP_TYPE_UNK97,
|
||||
/* 0x98 */ DSNAP_TYPE_UNK98,
|
||||
/* 0x98 */ DSNAP_TYPE_BTSW,
|
||||
/* 0x99 */ DSNAP_TYPE_DR,
|
||||
/* 0x9A */ DSNAP_TYPE_UNK9A,
|
||||
/* 0x9B */ DSNAP_TYPE_UNK9B,
|
||||
|
||||
+328
-21
@@ -7,8 +7,10 @@
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_item.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/d_snap.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
|
||||
enum BTSW_RES_FILE_ID {
|
||||
/* BCKS */
|
||||
@@ -163,8 +165,39 @@ static const int l_btp_ix_tbl[] = {
|
||||
};
|
||||
|
||||
/* 000001A8-000003E0 .text nodeCallBack__FP7J3DNodei */
|
||||
static BOOL nodeCallBack(J3DNode*, int) {
|
||||
/* Nonmatching */
|
||||
static BOOL nodeCallBack(J3DNode* node, int param_1) {
|
||||
if (!param_1) {
|
||||
J3DModel* model = j3dSys.getModel();
|
||||
J3DJoint* joint = (J3DJoint*)node;
|
||||
daNpc_Btsw2_c* i_this = (daNpc_Btsw2_c*)model->getUserArea();
|
||||
if (i_this) {
|
||||
static cXyz a_att_pos_offst(0.0f, 0.0f, 0.0f);
|
||||
static cXyz a_eye_pos_offst(10.0f, 20.0f, 0.0f);
|
||||
u16 jointNo = joint->getJntNo();
|
||||
mDoMtx_stack_c::copy(model->getAnmMtx(jointNo));
|
||||
if (jointNo == i_this->m_jnt.getHeadJntNum()) {
|
||||
mDoMtx_stack_c::multVec(&a_att_pos_offst, &i_this->m704);
|
||||
Mtx sp14;
|
||||
cMtx_copy(mDoMtx_stack_c::get(), sp14);
|
||||
cXyz sp8;
|
||||
mDoMtx_multVecZero(sp14, &sp8);
|
||||
sp14[0][3] = sp14[1][3] = sp14[2][3] = 0.0f;
|
||||
mDoMtx_stack_c::transS(sp8);
|
||||
mDoMtx_stack_c::YrotM(i_this->current.angle.y + i_this->m_jnt.getHead_y());
|
||||
mDoMtx_stack_c::XrotM(-i_this->m_jnt.getHead_x());
|
||||
mDoMtx_stack_c::YrotM(-i_this->current.angle.y);
|
||||
mDoMtx_stack_c::concat(sp14);
|
||||
mDoMtx_stack_c::multVec(&a_eye_pos_offst, &i_this->mEyePos);
|
||||
} else if (jointNo == i_this->m_jnt.getBackboneJntNum()) {
|
||||
int backboneY = i_this->m_jnt.getBackbone_y();
|
||||
mDoMtx_stack_c::XrotM(backboneY);
|
||||
mDoMtx_stack_c::ZrotM(-i_this->m_jnt.getBackbone_x());
|
||||
}
|
||||
cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
|
||||
model->setAnmMtx(jointNo, mDoMtx_stack_c::get());
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 0000041C-00000524 .text initTexPatternAnm__13daNpc_Btsw2_cFb */
|
||||
@@ -182,42 +215,155 @@ BOOL daNpc_Btsw2_c::initTexPatternAnm(bool r31) {
|
||||
|
||||
/* 00000524-000005B0 .text playTexPatternAnm__13daNpc_Btsw2_cFv */
|
||||
void daNpc_Btsw2_c::playTexPatternAnm() {
|
||||
/* Nonmatching */
|
||||
if (cLib_calcTimer(&m6F4) == 0) {
|
||||
if (m6F0 >= m_btp->getFrameMax()) {
|
||||
m6F0 -= m_btp->getFrameMax();
|
||||
m6F4 = 30 + cM_rndF(100.0f);
|
||||
} else {
|
||||
m6F0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 000005B0-0000067C .text setAnm__13daNpc_Btsw2_cFSc */
|
||||
void daNpc_Btsw2_c::setAnm(s8) {
|
||||
/* Nonmatching */
|
||||
void daNpc_Btsw2_c::setAnm(s8 param_0) {
|
||||
static int a_play_mode_tbl[] = {
|
||||
J3DFrameCtrl::LOOP_REPEAT_e,
|
||||
J3DFrameCtrl::LOOP_REPEAT_e,
|
||||
J3DFrameCtrl::LOOP_REPEAT_e,
|
||||
J3DFrameCtrl::LOOP_REPEAT_e,
|
||||
J3DFrameCtrl::LOOP_ONCE_e,
|
||||
J3DFrameCtrl::LOOP_REPEAT_e,
|
||||
J3DFrameCtrl::LOOP_REPEAT_e,
|
||||
J3DFrameCtrl::LOOP_REPEAT_e,
|
||||
J3DFrameCtrl::LOOP_ONCE_e,
|
||||
J3DFrameCtrl::LOOP_REPEAT_e,
|
||||
J3DFrameCtrl::LOOP_ONCE_e,
|
||||
};
|
||||
static f32 a_morf_frame_tbl[] = {
|
||||
8.0f, 8.0f, 8.0f, 8.0f, 8.0f, 8.0f, 8.0f, 8.0f, 8.0f, 8.0f, 8.0f,
|
||||
};
|
||||
static f32 a_play_speed_tbl[] = {
|
||||
1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
|
||||
};
|
||||
|
||||
if (param_0 == m745) {
|
||||
return;
|
||||
}
|
||||
if (m745 == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
m745 = param_0;
|
||||
|
||||
dNpc_setAnm(
|
||||
mpMcaMorf, a_play_mode_tbl[m747],
|
||||
a_morf_frame_tbl[m747], a_play_speed_tbl[m747],
|
||||
l_bck_ix_tbl[m745], -1,
|
||||
m_arc_name
|
||||
);
|
||||
|
||||
if (m745 == 7 || m745 == 8) {
|
||||
m_jnt.onHeadLock();
|
||||
} else {
|
||||
m_jnt.offHeadLock();
|
||||
}
|
||||
}
|
||||
|
||||
/* 0000067C-000007D0 .text chkAttention__13daNpc_Btsw2_cF4cXyzs */
|
||||
void daNpc_Btsw2_c::chkAttention(cXyz, s16) {
|
||||
/* Nonmatching */
|
||||
bool daNpc_Btsw2_c::chkAttention(cXyz pos, s16 r29) {
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
f32 f30 = l_HIO.mNpc.m24;
|
||||
int r30 = l_HIO.mNpc.m20;
|
||||
cXyz delta;
|
||||
delta.x = player->current.pos.x - pos.x;
|
||||
delta.z = player->current.pos.z - pos.z;
|
||||
f32 f31 = sqrtf(delta.x*delta.x + delta.z*delta.z);
|
||||
s16 r3 = cM_atan2s(delta.x, delta.z);
|
||||
if (m71D) {
|
||||
f30 += 40.0f;
|
||||
r30 += 0x071C;
|
||||
}
|
||||
r3 -= r29;
|
||||
return r30 > abs(r3) && f30 > f31;
|
||||
}
|
||||
|
||||
/* 000007D0-00000820 .text eventOrder__13daNpc_Btsw2_cFv */
|
||||
void daNpc_Btsw2_c::eventOrder() {
|
||||
/* Nonmatching */
|
||||
if (m746 == 1 || m746 == 2) {
|
||||
mEvtInfo.onCondition(dEvtCmd_INTALK_e);
|
||||
if (m746 == 1) {
|
||||
fopAcM_orderSpeakEvent(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000820-00000860 .text checkOrder__13daNpc_Btsw2_cFv */
|
||||
void daNpc_Btsw2_c::checkOrder() {
|
||||
/* Nonmatching */
|
||||
if (mEvtInfo.checkCommandDemoAccrpt()) {
|
||||
return;
|
||||
}
|
||||
if (mEvtInfo.checkCommandTalk()) {
|
||||
if (m746 == 1 || m746 == 2) {
|
||||
m746 = 0;
|
||||
m71E = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000860-0000097C .text anmAtr__13daNpc_Btsw2_cFUs */
|
||||
void daNpc_Btsw2_c::anmAtr(u16) {
|
||||
/* Nonmatching */
|
||||
switch (dComIfGp_getMesgAnimeAttrInfo()) {
|
||||
case 0:
|
||||
setAnm(0);
|
||||
break;
|
||||
case 1:
|
||||
setAnm(1);
|
||||
break;
|
||||
case 2:
|
||||
setAnm(2);
|
||||
break;
|
||||
case 3:
|
||||
setAnm(3);
|
||||
break;
|
||||
case 4:
|
||||
setAnm(4);
|
||||
break;
|
||||
case 5:
|
||||
setAnm(5);
|
||||
break;
|
||||
case 6:
|
||||
setAnm(6);
|
||||
break;
|
||||
}
|
||||
|
||||
if (mpMcaMorf->checkFrame(mpMcaMorf->getEndFrame()-1.0f)) {
|
||||
if (m745 == 4 || m745 == 6) {
|
||||
setAnm(1);
|
||||
}
|
||||
}
|
||||
|
||||
dComIfGp_clearMesgAnimeAttrInfo();
|
||||
}
|
||||
|
||||
/* 0000097C-000009EC .text getMsg__13daNpc_Btsw2_cFv */
|
||||
u32 daNpc_Btsw2_c::getMsg() {
|
||||
/* Nonmatching */
|
||||
if (!dComIfGs_isEventBit(0x3102)) {
|
||||
dComIfGs_onEventBit(0x3102);
|
||||
return 0x1AB0;
|
||||
}
|
||||
|
||||
// Fakematch? Need to force the compiler to use a branch here, but it optimizes an if statement away.
|
||||
switch (dKy_daynight_check()) {
|
||||
default:
|
||||
return 0x1AB2;
|
||||
case FALSE:
|
||||
return 0x1AB1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 000009EC-000009F4 .text next_msgStatus__13daNpc_Btsw2_cFPUl */
|
||||
u16 daNpc_Btsw2_c::next_msgStatus(u32*) {
|
||||
/* Nonmatching */
|
||||
return fopMsgStts_MSG_ENDS_e;
|
||||
}
|
||||
|
||||
@@ -228,7 +374,35 @@ void daNpc_Btsw2_c::setAttention() {
|
||||
|
||||
/* 00000A20-00000B94 .text lookBack__13daNpc_Btsw2_cFv */
|
||||
void daNpc_Btsw2_c::lookBack() {
|
||||
/* Nonmatching */
|
||||
cXyz sp38;
|
||||
cXyz sp2c;
|
||||
sp2c.setall(0.0f);
|
||||
cXyz* r31 = NULL;
|
||||
s16 r30 = current.angle.y;
|
||||
bool r29 = true;
|
||||
|
||||
switch (m747) {
|
||||
case 1:
|
||||
case 2:
|
||||
if (m747 == 2) {
|
||||
r29 = false;
|
||||
m_jnt.setTrn();
|
||||
if (m71D == 0) {
|
||||
sp38 = dNpc_playerEyePos(l_HIO.mNpc.m04);
|
||||
s16 r4 = cLib_targetAngleY(¤t.pos, &sp38);
|
||||
cLib_addCalcAngleS2(¤t.angle.y, r4, 4, 0x1800);
|
||||
}
|
||||
}
|
||||
if (m71D) {
|
||||
sp38 = dNpc_playerEyePos(l_HIO.mNpc.m04);
|
||||
r31 = &sp38;
|
||||
sp2c = current.pos;
|
||||
sp2c.y = mEyePos.y;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
m_jnt.lookAtTarget(¤t.angle.y, r31, sp2c, r30, l_HIO.mNpc.mMaxHeadTurnVel, r29);
|
||||
}
|
||||
|
||||
/* 00000B94-00000BB4 .text CallbackCreateHeap__FP10fopAc_ac_c */
|
||||
@@ -238,7 +412,6 @@ static BOOL CallbackCreateHeap(fopAc_ac_c* i_this) {
|
||||
|
||||
/* 00000BB4-00000EFC .text CreateHeap__13daNpc_Btsw2_cFv */
|
||||
BOOL daNpc_Btsw2_c::CreateHeap() {
|
||||
/* Nonmatching */
|
||||
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(m_arc_name, BTSW_INDEX_BDL_BN));
|
||||
JUT_ASSERT(616, modelData != 0);
|
||||
mpMcaMorf = new mDoExt_McaMorf(
|
||||
@@ -258,12 +431,12 @@ BOOL daNpc_Btsw2_c::CreateHeap() {
|
||||
m6F1 = modelData->getJointName()->getIndex("handL");
|
||||
m6F2 = modelData->getJointName()->getIndex("handR");
|
||||
|
||||
modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(m_arc_name, BTSW_INDEX_BDL_BN_KABAN));
|
||||
modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes("Btsw", BTSW_INDEX_BDL_BN_KABAN));
|
||||
m6D0 = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
|
||||
if (m6D0 == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(m_arc_name, BTSW_INDEX_BDL_BN_TIRASI));
|
||||
modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes("Btsw", BTSW_INDEX_BDL_BN_TIRASI));
|
||||
m6D4 = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
|
||||
if (m6D4 == NULL) {
|
||||
return FALSE;
|
||||
@@ -321,17 +494,103 @@ void daNpc_Btsw2_c::wait01() {
|
||||
|
||||
/* 0000111C-000011A8 .text talk01__13daNpc_Btsw2_cFv */
|
||||
void daNpc_Btsw2_c::talk01() {
|
||||
/* Nonmatching */
|
||||
if (talk(1) == fopMsgStts_BOX_CLOSED_e) {
|
||||
m747 = 1;
|
||||
dComIfGp_event_reset();
|
||||
m71E = false;
|
||||
if (m742 == 0) {
|
||||
m736 = 1;
|
||||
setAnm(0);
|
||||
} else {
|
||||
setAnm(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 000011A8-00001574 .text pathMove__13daNpc_Btsw2_cFv */
|
||||
void daNpc_Btsw2_c::pathMove() {
|
||||
/* Nonmatching */
|
||||
if (m742 > 0) {
|
||||
m742--;
|
||||
if (m742 == 0) {
|
||||
setAnm(7);
|
||||
m73E = 1.0f + cM_rndF(3.0f);
|
||||
}
|
||||
if (m745 == 8 && mpMcaMorf->checkFrame(mpMcaMorf->getEndFrame()-1.0f)) {
|
||||
setAnm(0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
cXyz sp54;
|
||||
int r30 = m740 < m73C ? (s16)(m740+1) : 0; // fakematch?
|
||||
dPath__Point* pnt = &mpPath->mpPnt[(s16)r30];
|
||||
sp54.set(pnt->mPos.x, pnt->mPos.y, pnt->mPos.z);
|
||||
s16 r29 = cLib_targetAngleY(¤t.pos, &sp54);
|
||||
cLib_addCalcAngleS2(¤t.angle.y, r29, l_HIO.m32, l_HIO.m30);
|
||||
cXyz sp48 = sp54 - current.pos;
|
||||
speedF = l_HIO.m34;
|
||||
if (sp48.normalizeRS()) {
|
||||
cXyz sp3c(
|
||||
cM_ssin(current.angle.y),
|
||||
0.0f,
|
||||
cM_scos(current.angle.y)
|
||||
);
|
||||
speedF += l_HIO.m38 * sp48.inprod(sp3c);
|
||||
}
|
||||
|
||||
if (m736 != 0) {
|
||||
speedF = 0.0f;
|
||||
s16 r27 = cLib_distanceAngleS(current.angle.y, r29);
|
||||
cLib_addCalcAngleS2(¤t.angle.y, r29, 4, 0x1800);
|
||||
if (r27 < 0x10) {
|
||||
m736 = 0;
|
||||
setAnm(7);
|
||||
}
|
||||
}
|
||||
|
||||
fopAcM_posMoveF(this, mStts.GetCCMoveP());
|
||||
|
||||
cXyz sp30 = sp54 - current.pos;
|
||||
if (sp30.absXZ() < 10.0f) {
|
||||
m740 = r30;
|
||||
if (m73E > 0) {
|
||||
m73E--;
|
||||
return;
|
||||
}
|
||||
if (cM_rndF(1.0f) < 0.5f) {
|
||||
setAnm(0);
|
||||
} else {
|
||||
setAnm(8);
|
||||
}
|
||||
m742 = l_HIO.m3C + cM_rndF(l_HIO.m3E);
|
||||
}
|
||||
}
|
||||
|
||||
/* 00001574-00001660 .text wait_action__13daNpc_Btsw2_cFPv */
|
||||
BOOL daNpc_Btsw2_c::wait_action(void*) {
|
||||
/* Nonmatching */
|
||||
if (m74A == 0) {
|
||||
m747 = 1;
|
||||
m74A++;
|
||||
} else if (m74A != -1) {
|
||||
s16 angleY = current.angle.y + m_jnt.getHead_y() + m_jnt.getBackbone_y();
|
||||
m71D = chkAttention(current.pos, angleY);
|
||||
m746 = 0;
|
||||
|
||||
switch (m747) {
|
||||
case 1:
|
||||
wait01();
|
||||
pathMove();
|
||||
break;
|
||||
case 2:
|
||||
talk01();
|
||||
break;
|
||||
}
|
||||
|
||||
lookBack();
|
||||
setAttention();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00001660-00001884 .text _create__13daNpc_Btsw2_cFv */
|
||||
@@ -370,12 +629,60 @@ BOOL daNpc_Btsw2_c::_delete() {
|
||||
|
||||
/* 00001C8C-00001DDC .text _execute__13daNpc_Btsw2_cFv */
|
||||
BOOL daNpc_Btsw2_c::_execute() {
|
||||
/* Nonmatching */
|
||||
m_jnt.setParam(
|
||||
l_HIO.mNpc.m0A, l_HIO.mNpc.mMaxBackBoneRot, l_HIO.mNpc.m12, l_HIO.mNpc.mMinBackBoneRot,
|
||||
l_HIO.mNpc.m08, l_HIO.mNpc.mMaxHeadRot, l_HIO.mNpc.m10, l_HIO.mNpc.mMinHeadRot,
|
||||
l_HIO.mNpc.m18
|
||||
);
|
||||
playTexPatternAnm();
|
||||
mpMcaMorf->play(&mEyePos, 0, 0);
|
||||
checkOrder();
|
||||
if (!mEventCut.cutProc()) {
|
||||
(this->*mCurrActionFunc)(NULL);
|
||||
}
|
||||
eventOrder();
|
||||
mObjAcch.CrrPos(*dComIfG_Bgsp());
|
||||
mTevStr.mRoomNo = dComIfG_Bgsp()->GetRoomId(mObjAcch.m_gnd);
|
||||
mTevStr.mEnvrIdxOverride = dComIfG_Bgsp()->GetPolyColor(mObjAcch.m_gnd);
|
||||
|
||||
J3DModel* model = mpMcaMorf->getModel();
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::YrotM(current.angle.y);
|
||||
model->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
|
||||
setCollision(60.0f, 150.0f);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00001DDC-00001F6C .text _draw__13daNpc_Btsw2_cFv */
|
||||
BOOL daNpc_Btsw2_c::_draw() {
|
||||
/* Nonmatching */
|
||||
J3DModel* model = mpMcaMorf->getModel();
|
||||
J3DModelData* modelData = model->getModelData();
|
||||
|
||||
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &mTevStr);
|
||||
g_env_light.setLightTevColorType(model, &mTevStr);
|
||||
g_env_light.setLightTevColorType(m6D0, &mTevStr);
|
||||
g_env_light.setLightTevColorType(m6D4, &mTevStr);
|
||||
|
||||
mBtpAnm.entry(modelData, m6F0);
|
||||
mpMcaMorf->updateDL();
|
||||
m6D0->setBaseTRMtx(model->getAnmMtx(m6F1));
|
||||
m6D4->setBaseTRMtx(model->getAnmMtx(m6F2));
|
||||
mDoExt_modelUpdateDL(m6D0);
|
||||
mDoExt_modelUpdateDL(m6D4);
|
||||
mBtpAnm.remove(modelData);
|
||||
|
||||
cXyz sp8(current.pos.x, current.pos.y + 130.0f, current.pos.z);
|
||||
mShadowId = dComIfGd_setShadow(
|
||||
mShadowId, 1, mpMcaMorf->getModel(), &sp8, 800.0f, 20.0f,
|
||||
current.pos.y, mObjAcch.GetGroundH(), mObjAcch.m_gnd, &mTevStr,
|
||||
0, 1.0f, dDlst_shadowControl_c::getSimpleTex()
|
||||
);
|
||||
|
||||
dSnap_RegistFig(DSNAP_TYPE_BTSW, this, current.pos, current.angle.y, 1.0f, 1.0f, 1.0f);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00001F6C-00001F8C .text daNpc_Btsw2_Create__FP10fopAc_ac_c */
|
||||
|
||||
+6
-6
@@ -649,7 +649,7 @@ void fopNpc_npc_c::setCollision(f32 radius, f32 height) {
|
||||
}
|
||||
|
||||
u16 fopNpc_npc_c::talk(int param_1) {
|
||||
u16 mode = 0xFF;
|
||||
u16 status = 0xFF;
|
||||
|
||||
if(mCurrMsgBsPcId == fpcM_ERROR_PROCESS_ID_e) {
|
||||
if(param_1 == 1) {
|
||||
@@ -661,26 +661,26 @@ u16 fopNpc_npc_c::talk(int param_1) {
|
||||
}
|
||||
else {
|
||||
if(mpCurrMsg) {
|
||||
mode = mpCurrMsg->mStatus;
|
||||
if(mode == fopMsgStts_MSG_DISPLAYED_e) {
|
||||
status = mpCurrMsg->mStatus;
|
||||
if(status == fopMsgStts_MSG_DISPLAYED_e) {
|
||||
mpCurrMsg->mStatus = next_msgStatus(&mCurrMsgNo);
|
||||
if(mpCurrMsg->mStatus == fopMsgStts_MSG_CONTINUES_e) {
|
||||
fopMsgM_messageSet(mCurrMsgNo);
|
||||
}
|
||||
}
|
||||
else if (mode == fopMsgStts_BOX_CLOSED_e) {
|
||||
else if (status == fopMsgStts_BOX_CLOSED_e) {
|
||||
mpCurrMsg->mStatus = fopMsgStts_MSG_DESTROYED_e;
|
||||
mCurrMsgBsPcId = fpcM_ERROR_PROCESS_ID_e;
|
||||
}
|
||||
|
||||
anmAtr(mode);
|
||||
anmAtr(status);
|
||||
}
|
||||
else {
|
||||
mpCurrMsg = fopMsgM_SearchByID(mCurrMsgBsPcId);
|
||||
}
|
||||
}
|
||||
|
||||
return mode;
|
||||
return status;
|
||||
}
|
||||
|
||||
bool dNpc_setAnm_2(mDoExt_McaMorf* pMorf, int loopMode, f32 morf, f32 speed, int animFileIdx, int soundFileIdx, const char* arcName) {
|
||||
|
||||
Reference in New Issue
Block a user