mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-07 13:23:27 -04:00
d_a_npc_fa1 100% with weak order, add inlines
This commit is contained in:
+1
-1
@@ -545,7 +545,7 @@ config.libs = [
|
||||
Object(NonMatching, "d/actor/d_a_item.cpp"),
|
||||
Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_itembase.cpp"),
|
||||
Object(Matching, "d/actor/d_a_nh.cpp"),
|
||||
Object(NonMatching, "d/actor/d_a_npc_fa1.cpp"),
|
||||
Object(Equivalent, "d/actor/d_a_npc_fa1.cpp"), # weak func order
|
||||
Object(NonMatching, "d/actor/d_a_obj_search.cpp"),
|
||||
Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_player.cpp"),
|
||||
Object(NonMatching, "d/actor/d_a_player_main.cpp"),
|
||||
|
||||
@@ -15,7 +15,7 @@ public:
|
||||
virtual void init(const Vec&, const Mtx&) {}
|
||||
virtual void recursiveCalc(J3DNode*) {}
|
||||
virtual void calcTransform(u16, const J3DTransformInfo&) {}
|
||||
virtual void calc(u16) {}
|
||||
virtual void calc(u16 jnt_no) {}
|
||||
|
||||
void initAnm() {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
@@ -68,7 +68,7 @@ public:
|
||||
}
|
||||
virtual void recursiveCalc(J3DNode*);
|
||||
virtual void calcTransform(u16, const J3DTransformInfo&);
|
||||
virtual void calc(u16);
|
||||
virtual void calc(u16 jnt_no);
|
||||
|
||||
Mtx& getBackupMtx() { return mBackupMtx; }
|
||||
Vec& getBackupS() { return mBackupS; }
|
||||
|
||||
@@ -6,74 +6,105 @@
|
||||
#include "d/d_bg_s_gnd_chk.h"
|
||||
#include "d/d_particle.h"
|
||||
#include "m_Do/m_Do_hostIO.h"
|
||||
#include "SSystem/SComponent/c_lib.h"
|
||||
|
||||
class daNpc_Fa1_McaMorfCallBack1_c : public mDoExt_McaMorfCallBack1_c {
|
||||
public:
|
||||
daNpc_Fa1_McaMorfCallBack1_c();
|
||||
bool execute(unsigned short, J3DTransformInfo*);
|
||||
bool execute(u16 jnt_no, J3DTransformInfo*);
|
||||
|
||||
s16 getNeckAngle() { return mNeckAngle;}
|
||||
void setNeckAngle(s16 angle) { mNeckAngle = angle; }
|
||||
u16 getNeckJoint() { return mNeckJoint; }
|
||||
void setNeckJoint(u16 joint) { mNeckJoint = joint; }
|
||||
|
||||
public:
|
||||
/* 0x04 */ s16 m04;
|
||||
/* 0x06 */ u16 m06;
|
||||
/* 0x04 */ s16 mNeckAngle;
|
||||
/* 0x06 */ u16 mNeckJoint;
|
||||
};
|
||||
|
||||
class daNpc_Fa1_c : public fopNpc_npc_c {
|
||||
public:
|
||||
|
||||
enum ActionType_e {
|
||||
ActionType_NORMAL_MOVE_e = 0,
|
||||
ActionType_PLAYER_MOVE_e = 1,
|
||||
ActionType_ESCAPE_MOVE_e = 2,
|
||||
ActionType_BOTTLE_APPEAR_MOVE_e = 3,
|
||||
ActionType_BOTTLE_BABA_WAIT_e = 4,
|
||||
ActionType_BOTTLE_BABA_MOVE_e = 5,
|
||||
ActionType_BOTTLE_BABA_MOVE2_e = 6,
|
||||
ActionType_BIGELF_CHANGE_e = 7,
|
||||
ActionType_HOVER_MOVE_e = 8,
|
||||
enum Type_e {
|
||||
Type_NORMAL_e = 0,
|
||||
Type_TIMER_e = 1,
|
||||
Type_LINK_e = 2,
|
||||
Type_BABA_e = 3,
|
||||
Type_AREA_e = 4,
|
||||
Type_LINK_DOWN_e = 5,
|
||||
Type_HOVER_e = 6,
|
||||
};
|
||||
|
||||
enum MoveType_e {
|
||||
MoveType_STRAIGHT_e = 0,
|
||||
MoveType_TURN_e = 1,
|
||||
MoveType_UP_e = 2,
|
||||
MoveType_AREAOUTMOVE_e = 3,
|
||||
enum Mode_e {
|
||||
Mode_NORMAL_MOVE_e = 0,
|
||||
Mode_PLAYER_MOVE_e = 1,
|
||||
Mode_ESCAPE_MOVE_e = 2,
|
||||
Mode_BOTTLE_APPEAR_MOVE_e = 3,
|
||||
Mode_BOTTLE_BABA_WAIT_e = 4,
|
||||
Mode_BOTTLE_BABA_MOVE_e = 5,
|
||||
Mode_BOTTLE_BABA_MOVE2_e = 6,
|
||||
Mode_BIGELF_CHANGE_e = 7,
|
||||
Mode_HOVER_MOVE_e = 8,
|
||||
};
|
||||
|
||||
void checkStatus(unsigned char) {}
|
||||
void countTime2() {}
|
||||
void countTimer() {}
|
||||
void getAngSpeed() {}
|
||||
void getGroundY() {}
|
||||
void getMode() {}
|
||||
void getPlayerR() {}
|
||||
void getSubMode() {}
|
||||
void getTimer() {}
|
||||
void getpLocalPos() {}
|
||||
enum Normal_SubMode_e {
|
||||
NormalSubMode_STRAIGHT_e = 0,
|
||||
NormalSubMode_TURN_e = 1,
|
||||
NormalSubMode_AREAMOVE_e = 2,
|
||||
NormalSubMode_AREAOUTMOVE_e = 3,
|
||||
};
|
||||
|
||||
enum Bottle_SubMode_e {
|
||||
BottleSubMode_UP1_e = 0,
|
||||
BottleSubMode_DOWN_e = 1,
|
||||
BottleSubMode_UP2_e = 2,
|
||||
};
|
||||
|
||||
enum BottleBaba_SubMode_e {
|
||||
BottleBabaSubMode_BABADOWN_e = 0,
|
||||
BottleBabaSubMode_UP2_e = 1,
|
||||
};
|
||||
|
||||
u8 getMode() { return mMode; }
|
||||
void setMode(u8 mode) { mMode = mode; }
|
||||
bool isLinkMode() { return mMode == Mode_PLAYER_MOVE_e; }
|
||||
void isBabaMode() {}
|
||||
void isLinkMode() {}
|
||||
void isTypeArea() {}
|
||||
void isTypeBaba() {}
|
||||
void isTypeHover() {}
|
||||
void isTypeLink() {}
|
||||
void isTypeLinkDown() {}
|
||||
void isTypeTimer() {}
|
||||
void setAngSpeed(short) {}
|
||||
void setGroundY(float) {}
|
||||
void setLocalPos(float) {}
|
||||
void setMode(unsigned char) {}
|
||||
void setPlayerR(float) {}
|
||||
void setStatus(unsigned char) {}
|
||||
void setSubMode(unsigned char) {}
|
||||
void setTime2(unsigned char) {}
|
||||
void setTimer(unsigned short) {}
|
||||
void setTypeNormal() {}
|
||||
u8 getSubMode() { return mSubMode; }
|
||||
void setSubMode(u8 submode) { mSubMode = submode; }
|
||||
|
||||
bool isTypeTimer() { return mType == Type_TIMER_e; }
|
||||
bool isTypeLink() { return mType == Type_LINK_e; }
|
||||
bool isTypeBaba() { return mType == Type_BABA_e; }
|
||||
bool isTypeArea() { return mType == Type_AREA_e; }
|
||||
bool isTypeLinkDown() { return mType == Type_LINK_DOWN_e; }
|
||||
bool isTypeHover() { return mType == Type_HOVER_e; }
|
||||
void setTypeNormal() { mType = Type_NORMAL_e; }
|
||||
|
||||
f32 getGroundY() { return mGroundY; }
|
||||
void setGroundY(f32 y) { mGroundY = y; }
|
||||
|
||||
bool checkStatus(u8 bit) { return cLib_checkBit(mStatus, bit); }
|
||||
void setStatus(u8 status) { cLib_setBit(mStatus, status); }
|
||||
|
||||
void getTimer() {}
|
||||
void setTimer(u16) {}
|
||||
void countTimer() {}
|
||||
void setTime2(u8) {}
|
||||
void countTime2() {}
|
||||
|
||||
void getAngSpeed() {}
|
||||
void setAngSpeed(s16) {}
|
||||
f32 getPlayerR() { return mPlayerR; }
|
||||
void setPlayerR(f32 radius) { mPlayerR = radius; }
|
||||
void getpLocalPos() {}
|
||||
void setLocalPos(f32) {}
|
||||
|
||||
void setPointLightParam();
|
||||
int createInit();
|
||||
BOOL _draw();
|
||||
BOOL _execute();
|
||||
BOOL checkBinCatch();
|
||||
void position_move(float, float);
|
||||
void position_move(f32, f32);
|
||||
void BGCheck();
|
||||
void init_normal_move();
|
||||
void normal_move();
|
||||
@@ -133,17 +164,17 @@ public:
|
||||
/* 0x764 */ fopAc_ac_c* m764;
|
||||
/* 0x768 */ cXyz m768;
|
||||
/* 0x774 */ cXyz m774;
|
||||
/* 0x780 */ f32 m780;
|
||||
/* 0x784 */ f32 mGroundYPos;
|
||||
/* 0x780 */ f32 mPlayerR;
|
||||
/* 0x784 */ f32 mGroundY;
|
||||
/* 0x788 */ u16 mTimer;
|
||||
/* 0x78A */ s16 m78A;
|
||||
/* 0x78C */ s16 m78C;
|
||||
/* 0x78E */ s16 m78E;
|
||||
/* 0x790 */ u8 mActionType;
|
||||
/* 0x790 */ u8 mMode;
|
||||
/* 0x791 */ u8 mMoveTimer;
|
||||
/* 0x792 */ u8 mMoveType;
|
||||
/* 0x793 */ s8 m793;
|
||||
/* 0x794 */ s8 m794;
|
||||
/* 0x792 */ u8 mSubMode;
|
||||
/* 0x793 */ u8 mStatus;
|
||||
/* 0x794 */ s8 mType;
|
||||
/* 0x795 */ u8 m795[0x798 - 0x795];
|
||||
/* 0x798 */ s16 m798;
|
||||
/* 0x79A */ s16 m79A;
|
||||
|
||||
@@ -308,7 +308,7 @@ struct mDoExt_MtxCalcAnmBlendTblOld : public mDoExt_MtxCalcAnmBlendTbl {
|
||||
class mDoExt_McaMorfCallBack1_c {
|
||||
public:
|
||||
virtual ~mDoExt_McaMorfCallBack1_c() {}
|
||||
virtual bool execute(u16, J3DTransformInfo*) = 0;
|
||||
virtual bool execute(u16 jnt_no, J3DTransformInfo*) = 0;
|
||||
};
|
||||
|
||||
class mDoExt_McaMorfCallBack2_c {
|
||||
@@ -334,7 +334,7 @@ public:
|
||||
virtual ~mDoExt_McaMorf();
|
||||
|
||||
void calc();
|
||||
void calc(u16);
|
||||
void calc(u16 jnt_no);
|
||||
void setAnm(J3DAnmTransform* bckAnm, int loopMode, f32 morf, f32 playSpeed, f32 startFrame, f32 endFrame, void* basAnm);
|
||||
void setMorf(f32);
|
||||
void update();
|
||||
|
||||
+109
-147
@@ -12,7 +12,7 @@
|
||||
#include "d/d_snap.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
#include "weak_data_1811.h" // IWYU pragma: keep
|
||||
#include "weak_data_2100_2080.h" // IWYU pragma: keep
|
||||
|
||||
|
||||
/* 800FAFC0-800FB004 .text __ct__16daNpc_Fa1_HIO3_cFv */
|
||||
@@ -139,26 +139,16 @@ daNpc_Fa1_c::BottleBabaSubFunc_t bottleBabaSubProc[] = {
|
||||
&daNpc_Fa1_c::up2,
|
||||
};
|
||||
|
||||
/* 800FB174-800FB1BC .text __dt__16daNpc_Fa1_HIO3_cFv */
|
||||
//daNpc_Fa1_HIO3_c::~daNpc_Fa1_HIO3_c() {
|
||||
// /* Nonmatching */
|
||||
//}
|
||||
//
|
||||
///* 800FB1BC-800FB204 .text __dt__16daNpc_Fa1_HIO2_cFv */
|
||||
//daNpc_Fa1_HIO2_c::~daNpc_Fa1_HIO2_c() {
|
||||
// /* Nonmatching */
|
||||
//}
|
||||
|
||||
/* 800FB204-800FB22C .text __ct__28daNpc_Fa1_McaMorfCallBack1_cFv */
|
||||
daNpc_Fa1_McaMorfCallBack1_c::daNpc_Fa1_McaMorfCallBack1_c() {
|
||||
m04 = 0;
|
||||
m06 = 0;
|
||||
mNeckAngle = 0;
|
||||
mNeckJoint = 0;
|
||||
}
|
||||
|
||||
/* 800FB22C-800FB24C .text execute__28daNpc_Fa1_McaMorfCallBack1_cFUsP16J3DTransformInfo */
|
||||
bool daNpc_Fa1_McaMorfCallBack1_c::execute(unsigned short param_1, J3DTransformInfo* param_2) {
|
||||
if (param_1 == m06) {
|
||||
param_2->mRotation.x = m04;
|
||||
bool daNpc_Fa1_McaMorfCallBack1_c::execute(u16 jnt_no, J3DTransformInfo* param_2) {
|
||||
if (jnt_no == getNeckJoint()) {
|
||||
param_2->mRotation.x = mNeckAngle;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@@ -176,50 +166,49 @@ void daNpc_Fa1_c::setPointLightParam() {
|
||||
|
||||
/* 800FB2B8-800FB514 .text createInit__11daNpc_Fa1_cFv */
|
||||
int daNpc_Fa1_c::createInit() {
|
||||
m794 = fopAcM_GetParam(this);
|
||||
mType = fopAcM_GetParam(this);
|
||||
m764 = NULL;
|
||||
// zero() doesn't match.
|
||||
m768.setall(0.0f);
|
||||
m793 = 0;
|
||||
if (m794 == 3) {
|
||||
setStatus(0);
|
||||
if (isTypeBaba()) {
|
||||
init_bottle_baba_wait();
|
||||
fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e);
|
||||
fopAcM_OnStatus(this, fopAcStts_UNK4000_e);
|
||||
} else if ((m794 == 2) || (m794 == 5)) {
|
||||
} else if (isTypeLink() || isTypeLinkDown()) {
|
||||
init_bottle_appear_move();
|
||||
fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e);
|
||||
fopAcM_OnStatus(this, fopAcStts_UNK4000_e);
|
||||
} else if (m794 == 6) {
|
||||
} else if (isTypeHover()) {
|
||||
init_hover_move();
|
||||
fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e);
|
||||
} else {
|
||||
if (m794 == 4) {
|
||||
if (isTypeArea()) {
|
||||
fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e);
|
||||
scale.x = 500.0f;
|
||||
} else {
|
||||
scale.x = l_HIO.prm.m10;
|
||||
}
|
||||
if (m794 == 1) {
|
||||
m793 = 1;
|
||||
if (isTypeTimer()) {
|
||||
setStatus(1);
|
||||
fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e);
|
||||
current.angle.y += (s16)(cLib_getRndValue((u16)0, (u16)0xFF) * 0x100);
|
||||
} else {
|
||||
m794 = 0;
|
||||
setTypeNormal();
|
||||
}
|
||||
init_normal_move();
|
||||
}
|
||||
cXyz local_18(current.pos);
|
||||
local_18.y += 60.0f;
|
||||
mGndChk.SetPos(&local_18);
|
||||
mGroundYPos = dComIfG_Bgsp()->GroundCross(&mGndChk);
|
||||
if ((m794 != 6) && (mGroundYPos != -G_CM3D_F_INF)) {
|
||||
home.pos.y = mGroundYPos + 50.0f;
|
||||
setGroundY(dComIfG_Bgsp()->GroundCross(&mGndChk));
|
||||
if (!isTypeHover() && getGroundY() != -G_CM3D_F_INF) {
|
||||
home.pos.y = mGroundY + 50.0f;
|
||||
}
|
||||
mStts.Init(0xFF, 0xFF, this);
|
||||
mCyl.SetStts(&mStts);
|
||||
mCyl.Set(l_cyl_src);
|
||||
setMtx();
|
||||
if (m794 == 3) {
|
||||
if (isTypeBaba()) {
|
||||
setPointLightParam();
|
||||
dKy_efplight_set(&mPointLight);
|
||||
}
|
||||
@@ -235,10 +224,9 @@ BOOL daNpc_Fa1_c::_draw() {
|
||||
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &tevStr);
|
||||
g_env_light.setLightTevColorType(pJVar1, &tevStr);
|
||||
mpDoExt_McaMorf->entryDL();
|
||||
f32 fVar1 = mGroundYPos;
|
||||
if (fVar1 != -G_CM3D_F_INF) {
|
||||
dComIfGd_setSimpleShadow(¤t.pos, fVar1, 10.0f, &m774, 0, 1.0f,
|
||||
&dDlst_shadowControl_c::mSimpleTexObj);
|
||||
if (mGroundY != -G_CM3D_F_INF) {
|
||||
dComIfGd_setSimpleShadow(¤t.pos, mGroundY, 10.0f, &m774, 0, 1.0f,
|
||||
dDlst_shadowControl_c::getSimpleTex());
|
||||
}
|
||||
dSnap_RegistFig(DSNAP_TYPE_FA, this, 1.0f, 1.0f, 1.0f);
|
||||
return TRUE;
|
||||
@@ -247,14 +235,14 @@ BOOL daNpc_Fa1_c::_draw() {
|
||||
/* 800FB5D8-800FB6AC .text _execute__11daNpc_Fa1_cFv */
|
||||
BOOL daNpc_Fa1_c::_execute() {
|
||||
cLib_calcTimer(&mTimer);
|
||||
(this->*moveProc[mActionType])();
|
||||
(this->*moveProc[getMode()])();
|
||||
shape_angle.y = current.angle.y;
|
||||
mpDoExt_McaMorf->play(NULL, 0, 0);
|
||||
setMtx();
|
||||
if (m794 == 3) {
|
||||
if (isTypeBaba()) {
|
||||
setPointLightParam();
|
||||
}
|
||||
if ((mActionType == ActionType_PLAYER_MOVE_e) && (mpEmitter != NULL)) {
|
||||
if (isLinkMode() && mpEmitter != NULL) {
|
||||
mpEmitter->mRate = 1.0f;
|
||||
}
|
||||
dComIfGp_att_LookRequest(this, 400.0f, 300.0f, -300.0f, 0x6000, 1);
|
||||
@@ -280,7 +268,7 @@ BOOL daNpc_Fa1_c::checkBinCatch() {
|
||||
}
|
||||
|
||||
/* 800FB730-800FB830 .text position_move__11daNpc_Fa1_cFff */
|
||||
void daNpc_Fa1_c::position_move(float param_1, float param_2) {
|
||||
void daNpc_Fa1_c::position_move(f32 param_1, f32 param_2) {
|
||||
f32 fVar1;
|
||||
|
||||
fVar1 = current.pos.y - home.pos.y;
|
||||
@@ -307,21 +295,14 @@ void daNpc_Fa1_c::position_move(float param_1, float param_2) {
|
||||
|
||||
/* 800FB830-800FB904 .text BGCheck__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::BGCheck() {
|
||||
cM3dGPla* pcVar1;
|
||||
s32 bVar2;
|
||||
f32 fVar3;
|
||||
|
||||
mGndChk.SetPos(¤t.pos);
|
||||
fVar3 = dComIfG_Bgsp()->GroundCross(&mGndChk);
|
||||
mGroundYPos = fVar3;
|
||||
if (fVar3 != -G_CM3D_F_INF) {
|
||||
pcVar1 = dComIfG_Bgsp()->GetTriPla(mGndChk);
|
||||
m774.set(pcVar1->mNormal);
|
||||
bVar2 = dComIfG_Bgsp()->GetRoomId(mGndChk);
|
||||
current.roomNo = bVar2;
|
||||
tevStr.mRoomNo = bVar2;
|
||||
bVar2 = dComIfG_Bgsp()->GetPolyColor(mGndChk);
|
||||
tevStr.mEnvrIdxOverride = bVar2;
|
||||
f32 ground_y = dComIfG_Bgsp()->GroundCross(&mGndChk);
|
||||
setGroundY(ground_y);
|
||||
if (ground_y != -G_CM3D_F_INF) {
|
||||
cM3dGPla* pcVar1 = dComIfG_Bgsp()->GetTriPla(mGndChk);
|
||||
m774.set(*pcVar1->GetNP());
|
||||
tevStr.mRoomNo = current.roomNo = dComIfG_Bgsp()->GetRoomId(mGndChk);
|
||||
tevStr.mEnvrIdxOverride = dComIfG_Bgsp()->GetPolyColor(mGndChk);
|
||||
} else {
|
||||
m774.set(0.0f, 1.0f, 0.0f);
|
||||
}
|
||||
@@ -329,12 +310,12 @@ void daNpc_Fa1_c::BGCheck() {
|
||||
|
||||
/* 800FB904-800FB988 .text init_normal_move__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_normal_move() {
|
||||
mActionType = ActionType_NORMAL_MOVE_e;
|
||||
setMode(Mode_NORMAL_MOVE_e);
|
||||
speedF = l_HIO.prm.m08;
|
||||
gravity = 0.1f;
|
||||
maxFallSpeed = -1.0f;
|
||||
mTimer = cLib_getRndValue((u16)l_HIO.prm.m44, (u16)60);
|
||||
if (m794 == 4) {
|
||||
if (isTypeArea()) {
|
||||
init_areaMove();
|
||||
} else {
|
||||
init_straight2();
|
||||
@@ -344,7 +325,7 @@ void daNpc_Fa1_c::init_normal_move() {
|
||||
/* 800FB988-800FBA68 .text normal_move__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::normal_move() {
|
||||
speedF = l_HIO.prm.m08;
|
||||
(this->*moveSubProc[mMoveType])();
|
||||
(this->*moveSubProc[getSubMode()])();
|
||||
position_move(10.0f, 1.0f);
|
||||
BGCheck();
|
||||
findPlayer();
|
||||
@@ -352,21 +333,21 @@ void daNpc_Fa1_c::normal_move() {
|
||||
dComIfG_Ccsp()->Set(&mCyl);
|
||||
if (mCyl.ChkCoHit()) {
|
||||
init_get_player_move();
|
||||
} else if ((!checkBinCatch() && (m793 & 1) != 0) && (mTimer == 0)) {
|
||||
} else if (!checkBinCatch() && checkStatus(1) && mTimer == 0) {
|
||||
init_escape_move();
|
||||
}
|
||||
}
|
||||
|
||||
/* 800FBA68-800FBAB0 .text init_straight__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_straight() {
|
||||
mMoveType = MoveType_STRAIGHT_e;
|
||||
setSubMode(NormalSubMode_STRAIGHT_e);
|
||||
mMoveTimer = cLib_getRndValue((u8)60, (u8)60);
|
||||
gravity = 0.1f;
|
||||
}
|
||||
|
||||
/* 800FBAB0-800FBAC8 .text init_straight2__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_straight2() {
|
||||
mMoveType = MoveType_STRAIGHT_e;
|
||||
setSubMode(NormalSubMode_STRAIGHT_e);
|
||||
mMoveTimer = 0;
|
||||
gravity = 1.0f;
|
||||
}
|
||||
@@ -384,7 +365,7 @@ void daNpc_Fa1_c::straight() {
|
||||
|
||||
/* 800FBBC8-800FBC10 .text init_turn__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_turn() {
|
||||
mMoveType = MoveType_TURN_e;
|
||||
setSubMode(NormalSubMode_TURN_e);
|
||||
mMoveTimer = cLib_getRndValue((u8)60, (u8)60);
|
||||
gravity = 0.1f;
|
||||
}
|
||||
@@ -401,7 +382,7 @@ void daNpc_Fa1_c::turn() {
|
||||
|
||||
/* 800FBCA0-800FBCC0 .text init_areaMove__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_areaMove() {
|
||||
mMoveType = MoveType_UP_e;
|
||||
setSubMode(NormalSubMode_AREAMOVE_e);
|
||||
gravity = 1.0f;
|
||||
m798 = 0;
|
||||
m79A = 0;
|
||||
@@ -409,13 +390,11 @@ void daNpc_Fa1_c::init_areaMove() {
|
||||
|
||||
/* 800FBCC0-800FBE14 .text areaMove__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::areaMove() {
|
||||
s16 sVar1;
|
||||
|
||||
cXyz local_28 = current.pos - home.pos;
|
||||
if (local_28.absXZ() > scale.x) {
|
||||
init_areaOutMove();
|
||||
} else {
|
||||
sVar1 = current.angle.y;
|
||||
s16 sVar1 = current.angle.y;
|
||||
if (!cLib_calcTimer(&m798)) {
|
||||
m79A ^= 1;
|
||||
m798 = cLib_getRndValue(0xF, 0x14) & 0xFF;
|
||||
@@ -427,7 +406,7 @@ void daNpc_Fa1_c::areaMove() {
|
||||
|
||||
/* 800FBE14-800FBE34 .text init_areaOutMove__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_areaOutMove() {
|
||||
mMoveType = MoveType_AREAOUTMOVE_e;
|
||||
setSubMode(NormalSubMode_AREAOUTMOVE_e);
|
||||
gravity = 0.1f;
|
||||
m798 = 0;
|
||||
m79A = 0;
|
||||
@@ -453,15 +432,14 @@ void daNpc_Fa1_c::areaOutMove() {
|
||||
|
||||
/* 800FBF94-800FC03C .text init_get_player_move__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_get_player_move() {
|
||||
mActionType = ActionType_PLAYER_MOVE_e;
|
||||
setMode(Mode_PLAYER_MOVE_e);
|
||||
mTimer = l_HIO.prm.m42;
|
||||
m78A = l_HIO.prm.m3C;
|
||||
m780 = 60.0f;
|
||||
setPlayerR(60.0f);
|
||||
current.angle.y = 0;
|
||||
mMcaMorfCallback1.m04 = 0;
|
||||
mMcaMorfCallback1.setNeckAngle(0);
|
||||
current.pos.y = dComIfGp_getPlayer(0)->current.pos.y;
|
||||
mDoAud_seStart(JA_SE_OBJ_FAILY_GET, ¤t.pos, 0,
|
||||
dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
|
||||
fopAcM_seStartCurrent(this, JA_SE_OBJ_FAILY_GET, 0);
|
||||
}
|
||||
|
||||
/* 800FC03C-800FC178 .text get_player_move__11daNpc_Fa1_cFv */
|
||||
@@ -481,12 +459,12 @@ void daNpc_Fa1_c::get_player_move() {
|
||||
m78A = sVar4;
|
||||
cXyz* local_18 = &m768;
|
||||
s16 uVar2 = current.angle.y + 0x4000;
|
||||
fopAc_ac_c* apdVar3 = dComIfGp_getPlayer(0);
|
||||
fVar1 = m780;
|
||||
local_18->x = fVar1 * cM_ssin(uVar2);
|
||||
local_18->z = fVar1 * cM_scos(uVar2);
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
f32 radius = getPlayerR();
|
||||
local_18->x = radius * cM_ssin(uVar2);
|
||||
local_18->z = radius * cM_scos(uVar2);
|
||||
local_18->y += l_HIO.prm.m0C;
|
||||
current.pos = apdVar3->current.pos + *local_18;
|
||||
current.pos = player->current.pos + *local_18;
|
||||
BGCheck();
|
||||
if (mTimer == 0) {
|
||||
execItemGet(dItem_RECOVER_FAIRY_e);
|
||||
@@ -496,7 +474,7 @@ void daNpc_Fa1_c::get_player_move() {
|
||||
|
||||
/* 800FC178-800FC1A4 .text init_escape_move__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_escape_move() {
|
||||
mActionType = ActionType_ESCAPE_MOVE_e;
|
||||
setMode(Mode_ESCAPE_MOVE_e);
|
||||
gravity = l_HIO.prm.m18;
|
||||
maxFallSpeed = l_HIO.prm.m14;
|
||||
mTimer = l_HIO.prm.m46;
|
||||
@@ -504,8 +482,6 @@ void daNpc_Fa1_c::init_escape_move() {
|
||||
|
||||
/* 800FC1A4-800FC2E0 .text escape_move__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::escape_move() {
|
||||
s16 sVar2;
|
||||
|
||||
speed.y += gravity;
|
||||
if (speed.y > maxFallSpeed) {
|
||||
speed.y = maxFallSpeed;
|
||||
@@ -514,7 +490,7 @@ void daNpc_Fa1_c::escape_move() {
|
||||
speed.z = speedF * cM_scos(current.angle.y);
|
||||
fopAcM_posMove(this, NULL);
|
||||
BGCheck();
|
||||
sVar2 = mMcaMorfCallback1.m04;
|
||||
s16 sVar2 = mMcaMorfCallback1.getNeckAngle();
|
||||
if (sVar2 < 0) {
|
||||
sVar2 += 0x800;
|
||||
if (sVar2 > 0) {
|
||||
@@ -526,7 +502,7 @@ void daNpc_Fa1_c::escape_move() {
|
||||
sVar2 = 0;
|
||||
}
|
||||
}
|
||||
mMcaMorfCallback1.m04 = sVar2;
|
||||
mMcaMorfCallback1.setNeckAngle(sVar2);
|
||||
mCyl.SetC(current.pos);
|
||||
dComIfG_Ccsp()->Set(&mCyl);
|
||||
if (mCyl.ChkCoHit()) {
|
||||
@@ -538,7 +514,7 @@ void daNpc_Fa1_c::escape_move() {
|
||||
|
||||
/* 800FC2E0-800FC310 .text init_hover_move__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_hover_move() {
|
||||
mActionType = ActionType_HOVER_MOVE_e;
|
||||
setMode(Mode_HOVER_MOVE_e);
|
||||
gravity = l_HIO.m78.prm.m0C;
|
||||
maxFallSpeed = -l_HIO.m78.prm.m08;
|
||||
speedF = 0.0f;
|
||||
@@ -554,9 +530,9 @@ void daNpc_Fa1_c::hover_move() {
|
||||
|
||||
/* 800FC380-800FC3C8 .text init_bottle_appear_move__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_bottle_appear_move() {
|
||||
mActionType = ActionType_BOTTLE_APPEAR_MOVE_e;
|
||||
setMode(Mode_BOTTLE_APPEAR_MOVE_e);
|
||||
init_up1();
|
||||
if (m794 == 5) {
|
||||
if (isTypeLinkDown()) {
|
||||
execItemGet(dItem_RECOVER_FAIRY_e);
|
||||
}
|
||||
}
|
||||
@@ -576,8 +552,8 @@ void daNpc_Fa1_c::bottle_appear_move() {
|
||||
}
|
||||
s16 uVar2 = current.angle.y + 0x4000;
|
||||
fopAc_ac_c* apdVar3 = dComIfGp_getPlayer(0);
|
||||
m768.x = m780 * cM_ssin(uVar2);
|
||||
m768.z = m780 * cM_scos(uVar2);
|
||||
m768.x = mPlayerR * cM_ssin(uVar2);
|
||||
m768.z = mPlayerR * cM_scos(uVar2);
|
||||
m768.y += speed.y;
|
||||
current.pos = apdVar3->current.pos + m768;
|
||||
if (maxFallSpeed < 0.0f) {
|
||||
@@ -591,14 +567,14 @@ void daNpc_Fa1_c::bottle_appear_move() {
|
||||
speed.y = maxFallSpeed;
|
||||
}
|
||||
}
|
||||
m780 += 2.0f;
|
||||
if (m780 > 60.0f) {
|
||||
m780 = 60.0f;
|
||||
mPlayerR += 2.0f;
|
||||
if (mPlayerR > 60.0f) {
|
||||
setPlayerR(60.0f);
|
||||
}
|
||||
BGCheck();
|
||||
(this->*bottleMoveSubProc[mMoveType])();
|
||||
(this->*bottleMoveSubProc[getSubMode()])();
|
||||
if (mTimer == 0) {
|
||||
if (m794 != 5) {
|
||||
if (!isTypeLinkDown()) {
|
||||
execItemGet(dItem_RECOVER_FAIRY_e);
|
||||
}
|
||||
fopAcM_delete(this);
|
||||
@@ -607,7 +583,7 @@ void daNpc_Fa1_c::bottle_appear_move() {
|
||||
|
||||
/* 800FC5A8-800FC6DC .text init_up1__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_up1() {
|
||||
mMoveType = MoveType_STRAIGHT_e;
|
||||
setSubMode(BottleSubMode_UP1_e);
|
||||
mTimer = l_HIO.prm.m4A;
|
||||
maxFallSpeed = l_HIO.prm.m30;
|
||||
speed.y = l_HIO.prm.m28;
|
||||
@@ -617,7 +593,7 @@ void daNpc_Fa1_c::init_up1() {
|
||||
m78E = 0;
|
||||
fopAc_ac_c* apdVar3 = dComIfGp_getPlayer(0);
|
||||
m768 = current.pos - apdVar3->current.pos;
|
||||
m780 = m768.absXZ();
|
||||
setPlayerR(m768.absXZ());
|
||||
current.angle.y = cM_atan2s(m768.x, m768.z) + -0x4000;
|
||||
}
|
||||
|
||||
@@ -630,7 +606,7 @@ void daNpc_Fa1_c::up1() {
|
||||
|
||||
/* 800FC70C-800FC730 .text init_down__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_down() {
|
||||
mMoveType = MoveType_TURN_e;
|
||||
setSubMode(BottleSubMode_DOWN_e);
|
||||
m78C = l_HIO.prm.m4C;
|
||||
m78E = l_HIO.prm.m4E;
|
||||
}
|
||||
@@ -644,10 +620,9 @@ void daNpc_Fa1_c::down() {
|
||||
|
||||
/* 800FC768-800FC7E0 .text init_up2__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_up2() {
|
||||
mMoveType = MoveType_UP_e;
|
||||
setSubMode(BottleSubMode_UP2_e);
|
||||
maxFallSpeed = l_HIO.prm.m2C;
|
||||
mDoAud_seStart(JA_SE_OBJ_BOTTLE_FAILY, ¤t.pos, 0,
|
||||
dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
|
||||
fopAcM_seStartCurrent(this, JA_SE_OBJ_BOTTLE_FAILY, 0);
|
||||
}
|
||||
|
||||
/* 800FC7E0-800FC7E4 .text up2__11daNpc_Fa1_cFv */
|
||||
@@ -657,7 +632,7 @@ void daNpc_Fa1_c::up2() {
|
||||
|
||||
/* 800FC7E4-800FC81C .text init_bottle_baba_wait__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_bottle_baba_wait() {
|
||||
mActionType = ActionType_BOTTLE_BABA_WAIT_e;
|
||||
setMode(Mode_BOTTLE_BABA_WAIT_e);
|
||||
speed.setall(0.0f);
|
||||
speedF = 0.0f;
|
||||
maxFallSpeed = 0.0f;
|
||||
@@ -674,7 +649,7 @@ void daNpc_Fa1_c::bottle_baba_wait() {
|
||||
|
||||
/* 800FC848-800FC8E4 .text init_bottle_baba_move__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_bottle_baba_move() {
|
||||
mActionType = ActionType_BOTTLE_BABA_MOVE_e;
|
||||
setMode(Mode_BOTTLE_BABA_MOVE_e);
|
||||
fopAcM_SearchByName(PROC_NPC_BA1, &m764);
|
||||
mTimer = l_HIO.m50.prm.m22;
|
||||
speedF = l_HIO.m50.prm.m08;
|
||||
@@ -713,7 +688,7 @@ void daNpc_Fa1_c::bottle_baba_move() {
|
||||
}
|
||||
current.pos += speed;
|
||||
BGCheck();
|
||||
u8 dVar1 = mMoveType;
|
||||
u8 dVar1 = getSubMode();
|
||||
(this->*bottleBabaSubProc[dVar1])();
|
||||
if ((dVar1 == 1) && (current.pos.y > m764->current.pos.y + 150.0f)) {
|
||||
fopAcM_delete(this);
|
||||
@@ -723,7 +698,7 @@ void daNpc_Fa1_c::bottle_baba_move() {
|
||||
|
||||
/* 800FCA94-800FCAF4 .text init_bottle_baba_move2__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_bottle_baba_move2() {
|
||||
mActionType = ActionType_BOTTLE_BABA_MOVE2_e;
|
||||
setMode(Mode_BOTTLE_BABA_MOVE2_e);
|
||||
m764 = dComIfGp_getPlayer(0);
|
||||
speedF = l_HIO.m50.prm.m08;
|
||||
m798 = 0;
|
||||
@@ -757,7 +732,7 @@ void daNpc_Fa1_c::bottle_baba_move2() {
|
||||
}
|
||||
current.pos += speed;
|
||||
BGCheck();
|
||||
(this->*bottleBabaSubProc[mMoveType])();
|
||||
(this->*bottleBabaSubProc[getSubMode()])();
|
||||
if ((current.pos.y > m764->current.pos.y + 180.0f)) {
|
||||
init_bottle_baba_move();
|
||||
}
|
||||
@@ -766,13 +741,12 @@ void daNpc_Fa1_c::bottle_baba_move2() {
|
||||
|
||||
/* 800FCC94-800FCD28 .text init_baba_down__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_baba_down() {
|
||||
mMoveType = MoveType_STRAIGHT_e;
|
||||
setSubMode(BottleBabaSubMode_BABADOWN_e);
|
||||
speed.y = 0.0f;
|
||||
maxFallSpeed = m79C;
|
||||
gravity = l_HIO.m50.prm.m1C;
|
||||
if (mActionType == ActionType_BOTTLE_BABA_MOVE_e) {
|
||||
mDoAud_seStart(JA_SE_OBJ_BA_FAILY_2, ¤t.pos, 0,
|
||||
dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
|
||||
if (getMode() == Mode_BOTTLE_BABA_MOVE_e) {
|
||||
fopAcM_seStartCurrent(this, JA_SE_OBJ_BA_FAILY_2, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -785,17 +759,16 @@ void daNpc_Fa1_c::baba_down() {
|
||||
|
||||
/* 800FCD5C-800FCDD8 .text init_baba_up__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_baba_up() {
|
||||
mMoveType = MoveType_TURN_e;
|
||||
setSubMode(BottleBabaSubMode_UP2_e);
|
||||
maxFallSpeed = m7A0;
|
||||
if (mActionType == ActionType_BOTTLE_BABA_MOVE2_e) {
|
||||
mDoAud_seStart(JA_SE_OBJ_BA_FAILY_1, ¤t.pos, 0,
|
||||
dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
|
||||
if (getMode() == Mode_BOTTLE_BABA_MOVE2_e) {
|
||||
fopAcM_seStartCurrent(this, JA_SE_OBJ_BA_FAILY_1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* 800FCDD8-800FCE7C .text init_bigelf_change__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::init_bigelf_change() {
|
||||
mActionType = ActionType_BIGELF_CHANGE_e;
|
||||
setMode(Mode_BIGELF_CHANGE_e);
|
||||
fopAcM_OnStatus(this, fopAcStts_UNK4000_e);
|
||||
speedF = l_HIO.m78.prm.m14;
|
||||
speed.x = speedF * cM_ssin(current.angle.y);
|
||||
@@ -816,49 +789,43 @@ void daNpc_Fa1_c::bigelf_change() {
|
||||
|
||||
/* 800FCF4C-800FD050 .text findPlayer__11daNpc_Fa1_cFv */
|
||||
void daNpc_Fa1_c::findPlayer() {
|
||||
/* Nonmatching */
|
||||
s16 sVar1;
|
||||
s16 sVar2;
|
||||
s16 sVar4;
|
||||
s16 sVar6;
|
||||
cXyz local_28;
|
||||
fopAc_ac_c* apdVar3 = dComIfGp_getPlayer(0);
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
|
||||
local_28 = apdVar3->current.pos - current.pos;
|
||||
sVar2 = cM_atan2s(local_28.x, local_28.z) - current.angle.y;
|
||||
sVar1 = mMcaMorfCallback1.m04;
|
||||
if (sVar2 < 0) {
|
||||
if (sVar2 < -0x4000) {
|
||||
sVar2 = -0x4000;
|
||||
cXyz local_28 = player->current.pos - current.pos;
|
||||
s16 r4 = cM_atan2s(local_28.x, local_28.z) - current.angle.y;
|
||||
s16 r3 = mMcaMorfCallback1.getNeckAngle();
|
||||
if (r4 < 0) {
|
||||
if (r4 < -0x4000) {
|
||||
r4 = -0x4000;
|
||||
}
|
||||
sVar4 = ((sVar2 - sVar1) >> 2);
|
||||
if (sVar4 < -0x800) {
|
||||
sVar4 = -0x800;
|
||||
s16 r0 = ((s16)(r4 - r3) / 4);
|
||||
if (r0 < -0x800) {
|
||||
r0 = -0x800;
|
||||
}
|
||||
sVar6 = sVar1 + sVar4;
|
||||
if (sVar6 < sVar2) {
|
||||
sVar6 = sVar2;
|
||||
r3 += r0;
|
||||
if (r3 < r4) {
|
||||
r3 = r4;
|
||||
}
|
||||
} else {
|
||||
if (sVar2 > 0x4000) {
|
||||
sVar2 = 0x4000;
|
||||
if (r4 > 0x4000) {
|
||||
r4 = 0x4000;
|
||||
}
|
||||
sVar4 = ((sVar2 - sVar1) >> 2);
|
||||
if (sVar4 > 0x800) {
|
||||
sVar4 = 0x800;
|
||||
s16 r0 = ((s16)(r4 - r3) / 4);
|
||||
if (r0 > 0x800) {
|
||||
r0 = 0x800;
|
||||
}
|
||||
sVar6 = sVar1 + sVar4;
|
||||
if (sVar6 > sVar2) {
|
||||
sVar6 = sVar2;
|
||||
r3 += r0;
|
||||
if (r3 > r4) {
|
||||
r3 = r4;
|
||||
}
|
||||
}
|
||||
mMcaMorfCallback1.m04 = sVar6;
|
||||
mMcaMorfCallback1.setNeckAngle(r3);
|
||||
}
|
||||
|
||||
/* 800FD050-800FD0F0 .text _delete__11daNpc_Fa1_cFv */
|
||||
BOOL daNpc_Fa1_c::_delete() {
|
||||
mSparklePtclCallback.end();
|
||||
if (m794 == 3) {
|
||||
if (isTypeBaba()) {
|
||||
dKy_efplight_cut(&mPointLight);
|
||||
}
|
||||
if (l_hio_counter != 0) {
|
||||
@@ -915,8 +882,8 @@ int daNpc_Fa1_c::CreateHeap() {
|
||||
mpDoExt_McaMorf = NULL;
|
||||
return false;
|
||||
} else {
|
||||
mMcaMorfCallback1.m06 = pModelData->getJointName()->getIndex("neck");
|
||||
mMcaMorfCallback1.m04 = 0;
|
||||
mMcaMorfCallback1.setNeckJoint(pModelData->getJointName()->getIndex("neck"));
|
||||
mMcaMorfCallback1.setNeckAngle(0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -925,10 +892,10 @@ int daNpc_Fa1_c::CreateHeap() {
|
||||
void daNpc_Fa1_c::setMtx() {
|
||||
J3DModel* pJVar5 = mpDoExt_McaMorf->getModel();
|
||||
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
|
||||
mDoMtx_YrotM(mDoMtx_stack_c::get(), shape_angle.y);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
pJVar5->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mpDoExt_McaMorf->calc();
|
||||
MtxP pMVar4 = mpDoExt_McaMorf->getModel()->getAnmMtx(mMcaMorfCallback1.m06);
|
||||
MtxP pMVar4 = mpDoExt_McaMorf->getModel()->getAnmMtx(mMcaMorfCallback1.getNeckJoint());
|
||||
attention_info.position.set(pMVar4[0][3], pMVar4[1][3], pMVar4[2][3]);
|
||||
eyePos = attention_info.position;
|
||||
}
|
||||
@@ -958,11 +925,6 @@ BOOL daNpc_Fa1_IsDelete(daNpc_Fa1_c*) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800FD764-800FD7D8 .text __dt__15daNpc_Fa1_HIO_cFv */
|
||||
//daNpc_Fa1_HIO_c::~daNpc_Fa1_HIO_c() {
|
||||
// /* Nonmatching */
|
||||
//}
|
||||
|
||||
static actor_method_class l_daNpc_Fa1_Method = {
|
||||
(process_method_func)daNpc_Fa1_Create,
|
||||
(process_method_func)daNpc_Fa1_Delete,
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "d/actor/d_a_boko.h"
|
||||
#include "d/actor/d_a_demo_item.h"
|
||||
#include "d/actor/d_a_itembase.h"
|
||||
#include "d/actor/d_a_npc_fa1.h"
|
||||
#include "d/actor/d_a_player_HIO.h"
|
||||
#include "d/actor/d_a_player_main.h"
|
||||
#include "d/actor/d_a_player_main_data.h"
|
||||
@@ -2002,11 +2003,9 @@ BOOL daPy_lk_c::dProcBottleOpenFairy() {
|
||||
daPy_HIO_bottle_c0::m.field_0xA,
|
||||
daPy_HIO_bottle_c0::m.field_0x54
|
||||
);
|
||||
} else {
|
||||
if (frameCtrl.checkPass(32.0f)) {
|
||||
m355E = 0;
|
||||
mRightHandIdx = 8;
|
||||
}
|
||||
} else if (frameCtrl.checkPass(32.0f)) {
|
||||
m355E = 0;
|
||||
mRightHandIdx = 8;
|
||||
}
|
||||
} else if (frameCtrl.getRate() < 0.01f) {
|
||||
dComIfGp_evmng_cutEnd(mStaffIdx);
|
||||
@@ -2021,7 +2020,7 @@ BOOL daPy_lk_c::dProcBottleOpenFairy() {
|
||||
} else {
|
||||
dComIfGs_setEquipBottleItemEmpty(dItemBtn_Z_e);
|
||||
}
|
||||
fopAcM_fastCreate(PROC_NPC_FA1, 3, &mLeftHandPos, fopAcM_GetRoomNo(this), &shape_angle);
|
||||
fopAcM_fastCreate(PROC_NPC_FA1, daNpc_Fa1_c::Type_BABA_e, &mLeftHandPos, fopAcM_GetRoomNo(this), &shape_angle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "d/actor/d_a_player_main.h"
|
||||
#include "d/actor/d_a_demo_item.h"
|
||||
#include "d/actor/d_a_npc_fa1.h"
|
||||
#include "d/actor/d_a_obj_movebox.h"
|
||||
#include "d/actor/d_a_player_HIO.h"
|
||||
#include "d/actor/d_a_sea.h"
|
||||
@@ -5517,7 +5518,7 @@ BOOL daPy_lk_c::changeDeadProc() {
|
||||
(!checkModeFlg(ModeFlg_DAMAGE)))
|
||||
{
|
||||
if (dComIfGs_checkBottle(dItem_FAIRY_BOTTLE_e)) {
|
||||
makeFairy(¤t.pos, 5);
|
||||
makeFairy(¤t.pos, daNpc_Fa1_c::Type_LINK_DOWN_e);
|
||||
dComIfGs_setBottleItemIn(dItem_FAIRY_BOTTLE_e, dItem_EMPTY_BOTTLE_e);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
//
|
||||
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/actor/d_a_npc_fa1.h"
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "f_op/f_op_scene_mng.h"
|
||||
#include "f_op/f_op_camera.h"
|
||||
@@ -986,7 +987,7 @@ fpc_ProcID fopAcM_createItem(cXyz* pos, int i_itemNo, int i_itemBitNo, int roomN
|
||||
|
||||
switch (i_itemNo) {
|
||||
case dItem_RECOVER_FAIRY_e:
|
||||
return fopAcM_create(PROC_NPC_FA1, 1, pos, roomNo, angle, scale);
|
||||
return fopAcM_create(PROC_NPC_FA1, daNpc_Fa1_c::Type_TIMER_e, pos, roomNo, angle, scale);
|
||||
case dItem_TRIPLE_HEART_e:
|
||||
// Make the two extra hearts first, then fall-through to make the third heart as normal.
|
||||
for (int i = 0; i < 2; i++) {
|
||||
@@ -1025,7 +1026,7 @@ void* fopAcM_fastCreateItem2(cXyz* pos, int i_itemNo, int i_itemBitNo, int roomN
|
||||
|
||||
switch (i_itemNo) {
|
||||
case dItem_RECOVER_FAIRY_e:
|
||||
return fopAcM_fastCreate(PROC_NPC_FA1, 1, pos, roomNo, angle, scale);
|
||||
return fopAcM_fastCreate(PROC_NPC_FA1, daNpc_Fa1_c::Type_TIMER_e, pos, roomNo, angle, scale);
|
||||
case dItem_TRIPLE_HEART_e:
|
||||
// Make the two extra hearts first, then fall-through to make the third heart as normal.
|
||||
for (i = 0; i < 2; i++) {
|
||||
@@ -1086,7 +1087,7 @@ void* fopAcM_fastCreateItem(cXyz* pos, int i_itemNo, int roomNo, csXyz* angle, c
|
||||
csXyz prmAngle;
|
||||
switch (i_itemNo) {
|
||||
case dItem_RECOVER_FAIRY_e:
|
||||
item = (daItem_c*)fopAcM_fastCreate(PROC_NPC_FA1, 1, pos, roomNo, angle, scale);
|
||||
item = (daItem_c*)fopAcM_fastCreate(PROC_NPC_FA1, daNpc_Fa1_c::Type_TIMER_e, pos, roomNo, angle, scale);
|
||||
return item;
|
||||
case dItem_TRIPLE_HEART_e:
|
||||
// Make the two extra hearts first, then fall-through to make the third heart as normal.
|
||||
|
||||
+31
-31
@@ -1233,7 +1233,7 @@ ERROR_EXIT:
|
||||
}
|
||||
|
||||
/* 80012A2C-80012D78 .text calc__14mDoExt_McaMorfFUs */
|
||||
void mDoExt_McaMorf::calc(u16 param_0) {
|
||||
void mDoExt_McaMorf::calc(u16 jnt_no) {
|
||||
if (!mpModel) {
|
||||
return;
|
||||
}
|
||||
@@ -1243,37 +1243,37 @@ void mDoExt_McaMorf::calc(u16 param_0) {
|
||||
if (mpTransformInfo == NULL) {
|
||||
infoPtr = &info1;
|
||||
} else {
|
||||
infoPtr = &mpTransformInfo[param_0];
|
||||
infoPtr = &mpTransformInfo[jnt_no];
|
||||
}
|
||||
Quaternion quat1;
|
||||
Quaternion* quatPtr;
|
||||
if (mpQuat == NULL) {
|
||||
quatPtr = &quat1;
|
||||
} else {
|
||||
quatPtr = &mpQuat[param_0];
|
||||
quatPtr = &mpQuat[jnt_no];
|
||||
}
|
||||
if (!mpAnm) {
|
||||
*infoPtr = mpModel->getModelData()->getJointNodePointer(param_0)->getTransformInfo();
|
||||
*infoPtr = mpModel->getModelData()->getJointNodePointer(jnt_no)->getTransformInfo();
|
||||
if (mpCallback1) {
|
||||
mpCallback1->execute(param_0, infoPtr);
|
||||
mpCallback1->execute(jnt_no, infoPtr);
|
||||
}
|
||||
JMAEulerToQuat(infoPtr->mRotation.x, infoPtr->mRotation.y, infoPtr->mRotation.z, quatPtr);
|
||||
calcTransform(param_0, *infoPtr);
|
||||
calcTransform(jnt_no, *infoPtr);
|
||||
} else if (mCurMorf >= 1.0f || !mpTransformInfo || !mpQuat) {
|
||||
mpAnm->getTransform(param_0, infoPtr);
|
||||
mpAnm->getTransform(jnt_no, infoPtr);
|
||||
if (mpCallback1) {
|
||||
mpCallback1->execute(param_0, infoPtr);
|
||||
mpCallback1->execute(jnt_no, infoPtr);
|
||||
}
|
||||
JMAEulerToQuat(infoPtr->mRotation.x, infoPtr->mRotation.y, infoPtr->mRotation.z, quatPtr);
|
||||
calcTransform(param_0, *infoPtr);
|
||||
calcTransform(jnt_no, *infoPtr);
|
||||
} else {
|
||||
f32 f31 = (mCurMorf - mPrevMorf) / (1.0f - mPrevMorf);
|
||||
f32 f30 = 1.0f - f31;
|
||||
J3DTransformInfo info2;
|
||||
Quaternion quat2;
|
||||
mpAnm->getTransform(param_0, &info2);
|
||||
mpAnm->getTransform(jnt_no, &info2);
|
||||
if (mpCallback1) {
|
||||
mpCallback1->execute(param_0, &info2);
|
||||
mpCallback1->execute(jnt_no, &info2);
|
||||
}
|
||||
JMAEulerToQuat(info2.mRotation.x, info2.mRotation.y, info2.mRotation.z, &quat2);
|
||||
JMAQuatLerp(quatPtr, &quat2, f31, quatPtr);
|
||||
@@ -1285,10 +1285,10 @@ void mDoExt_McaMorf::calc(u16 param_0) {
|
||||
infoPtr->mScale.x = infoPtr->mScale.x * f30 + info2.mScale.x * f31;
|
||||
infoPtr->mScale.y = infoPtr->mScale.y * f30 + info2.mScale.y * f31;
|
||||
infoPtr->mScale.z = infoPtr->mScale.z * f30 + info2.mScale.z * f31;
|
||||
mDoExt_setJ3DData(mtx, infoPtr, param_0);
|
||||
mDoExt_setJ3DData(mtx, infoPtr, jnt_no);
|
||||
}
|
||||
if (mpCallback2) {
|
||||
mpCallback2->execute(param_0);
|
||||
mpCallback2->execute(jnt_no);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1521,7 +1521,7 @@ void mDoExt_McaMorf2::ERROR_EXIT() {
|
||||
}
|
||||
|
||||
/* 80013770-80013E50 .text calc__15mDoExt_McaMorf2FUs */
|
||||
void mDoExt_McaMorf2::calc(u16 param_0) {
|
||||
void mDoExt_McaMorf2::calc(u16 jnt_no) {
|
||||
/* Nonmatching - regalloc (fixing the regalloc causes an instruction swap on f30 = mAnmRate) */
|
||||
if (!mpModel) {
|
||||
return;
|
||||
@@ -1534,7 +1534,7 @@ void mDoExt_McaMorf2::calc(u16 param_0) {
|
||||
if (mpTransformInfo == NULL) {
|
||||
infoPtr = &sp88;
|
||||
} else {
|
||||
infoPtr = &mpTransformInfo[param_0];
|
||||
infoPtr = &mpTransformInfo[jnt_no];
|
||||
}
|
||||
Quaternion sp48[2];
|
||||
Quaternion sp28[2];
|
||||
@@ -1544,29 +1544,29 @@ void mDoExt_McaMorf2::calc(u16 param_0) {
|
||||
if (mpQuat == NULL) {
|
||||
quatPtr = &sp18;
|
||||
} else {
|
||||
quatPtr = &mpQuat[param_0];
|
||||
quatPtr = &mpQuat[jnt_no];
|
||||
}
|
||||
Mtx mtx;
|
||||
f32 f31;
|
||||
f32 f30;
|
||||
if (!mpAnm1) {
|
||||
*infoPtr = mpModel->getModelData()->getJointNodePointer(param_0)->getTransformInfo();
|
||||
*infoPtr = mpModel->getModelData()->getJointNodePointer(jnt_no)->getTransformInfo();
|
||||
if (mpCallback1) {
|
||||
mpCallback1->execute(param_0, infoPtr);
|
||||
mpCallback1->execute(jnt_no, infoPtr);
|
||||
}
|
||||
JMAEulerToQuat(infoPtr->mRotation.x, infoPtr->mRotation.y, infoPtr->mRotation.z, quatPtr);
|
||||
calcTransform(param_0, *infoPtr);
|
||||
calcTransform(jnt_no, *infoPtr);
|
||||
} else if (mCurMorf >= 1.0f || !mpTransformInfo || !mpQuat) {
|
||||
mpAnm1->getTransform(param_0, &spD8[0]);
|
||||
mpAnm1->getTransform(jnt_no, &spD8[0]);
|
||||
if (!mpAnm2) {
|
||||
if (mpCallback1) {
|
||||
mpCallback1->execute(param_0, &spD8[0]);
|
||||
mpCallback1->execute(jnt_no, &spD8[0]);
|
||||
}
|
||||
JMAEulerToQuat(spD8[0].mRotation.x, spD8[0].mRotation.y, spD8[0].mRotation.z, quatPtr);
|
||||
calcTransform(param_0, spD8[0]);
|
||||
calcTransform(jnt_no, spD8[0]);
|
||||
*infoPtr = spD8[0];
|
||||
} else {
|
||||
mpAnm2->getTransform(param_0, &spD8[1]);
|
||||
mpAnm2->getTransform(jnt_no, &spD8[1]);
|
||||
f31 = 1.0f - mAnmRate;
|
||||
f30 = mAnmRate;
|
||||
infoPtr->mScale.x = spD8[0].mScale.x * f31 + spD8[1].mScale.x * f30;
|
||||
@@ -1580,14 +1580,14 @@ void mDoExt_McaMorf2::calc(u16 param_0) {
|
||||
}
|
||||
JMAQuatLerp(&sp48[0], &sp48[1], f30 / (f31 + f30), quatPtr);
|
||||
mDoMtx_quat(mtx, quatPtr);
|
||||
mDoExt_setJ3DData(mtx, infoPtr, param_0);
|
||||
mDoExt_setJ3DData(mtx, infoPtr, jnt_no);
|
||||
}
|
||||
} else if (!mpAnm2) {
|
||||
f30 = (mCurMorf - mPrevMorf) / (1.0f - mPrevMorf);
|
||||
f31 = 1.0f - f30;
|
||||
mpAnm1->getTransform(param_0, &sp68);
|
||||
mpAnm1->getTransform(jnt_no, &sp68);
|
||||
if (mpCallback1) {
|
||||
mpCallback1->execute(param_0, &sp68);
|
||||
mpCallback1->execute(jnt_no, &sp68);
|
||||
}
|
||||
JMAEulerToQuat(sp68.mRotation.x, sp68.mRotation.y, sp68.mRotation.z, &sp08);
|
||||
JMAQuatLerp(quatPtr, &sp08, f30, quatPtr);
|
||||
@@ -1598,10 +1598,10 @@ void mDoExt_McaMorf2::calc(u16 param_0) {
|
||||
infoPtr->mScale.x = infoPtr->mScale.x * f31 + sp68.mScale.x * f30;
|
||||
infoPtr->mScale.y = infoPtr->mScale.y * f31 + sp68.mScale.y * f30;
|
||||
infoPtr->mScale.z = infoPtr->mScale.z * f31 + sp68.mScale.z * f30;
|
||||
mDoExt_setJ3DData(mtx, infoPtr, param_0);
|
||||
mDoExt_setJ3DData(mtx, infoPtr, jnt_no);
|
||||
} else {
|
||||
mpAnm1->getTransform(param_0, &spD8[0]);
|
||||
mpAnm2->getTransform(param_0, &spD8[1]);
|
||||
mpAnm1->getTransform(jnt_no, &spD8[0]);
|
||||
mpAnm2->getTransform(jnt_no, &spD8[1]);
|
||||
f31 = 1.0f - mAnmRate;
|
||||
f30 = mAnmRate;
|
||||
sp68.mScale.x = spD8[0].mScale.x * f31 + spD8[1].mScale.x * f30;
|
||||
@@ -1626,10 +1626,10 @@ void mDoExt_McaMorf2::calc(u16 param_0) {
|
||||
infoPtr->mScale.y = infoPtr->mScale.y * f30 + sp68.mScale.y * f31;
|
||||
infoPtr->mScale.z = infoPtr->mScale.z * f30 + sp68.mScale.z * f31;
|
||||
mDoMtx_quat(mtx, quatPtr);
|
||||
mDoExt_setJ3DData(mtx, infoPtr, param_0);
|
||||
mDoExt_setJ3DData(mtx, infoPtr, jnt_no);
|
||||
}
|
||||
if (mpCallback2) {
|
||||
mpCallback2->execute(param_0);
|
||||
mpCallback2->execute(jnt_no);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user