mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-21 22:10:59 -04:00
d_a_player OK
This commit is contained in:
+1
-1
@@ -432,7 +432,7 @@ config.libs = [
|
||||
Object(Matching, "d/actor/d_a_nh.cpp"),
|
||||
Object(NonMatching, "d/actor/d_a_npc_fa1.cpp"),
|
||||
Object(NonMatching, "d/actor/d_a_obj_search.cpp"),
|
||||
Object(NonMatching, "d/actor/d_a_player.cpp"),
|
||||
Object(Matching, "d/actor/d_a_player.cpp"),
|
||||
Object(NonMatching, "d/actor/d_a_player_main.cpp"),
|
||||
Object(NonMatching, "d/actor/d_a_player_npc.cpp"),
|
||||
Object(NonMatching, "d/actor/d_a_sea.cpp"),
|
||||
|
||||
@@ -78,6 +78,9 @@ public:
|
||||
void getPivotY();
|
||||
|
||||
void setStatus(u32 status) { mFlags |= status; }
|
||||
void clearStatus(u32 status) { mFlags &= ~status; }
|
||||
bool checkStatus(u32 status) { return mFlags & status; }
|
||||
void initStatus(u32 status);
|
||||
|
||||
u8 getGlobalAlpha() { return mGlobalPrmColor.a; }
|
||||
void setGlobalAlpha(u8 alpha) { mGlobalPrmColor.a = alpha; }
|
||||
@@ -102,12 +105,21 @@ public:
|
||||
void setRate(float i_rate) { mRate = i_rate; }
|
||||
|
||||
void stopCreateParticle() { setStatus(JPAEmtrStts_StopEmit); }
|
||||
void becomeImmortalEmitter() { setStatus(JPAEmtrStts_Immortal); }
|
||||
void quitImmortalEmitter() { clearStatus(JPAEmtrStts_Immortal); }
|
||||
|
||||
void becomeInvalidEmitter() {
|
||||
mMaxFrame = -1;
|
||||
stopCreateParticle();
|
||||
}
|
||||
|
||||
void setEmitterCallBackPtr(JPACallBackBase<JPABaseEmitter*>* callback) {
|
||||
mpEmitterCallBack = callback;
|
||||
}
|
||||
void setParticleCallBackPtr(JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*>* callback) {
|
||||
mpParticleCallBack = callback;
|
||||
}
|
||||
|
||||
/* 0x000 */ VolumeFunc mVolumeFunc;
|
||||
/* 0x00C */ cXyz mEmitterScale;
|
||||
/* 0x018 */ cXyz mEmitterTranslation;
|
||||
@@ -148,8 +160,8 @@ public:
|
||||
/* 0x188 */ JSUPtrList mChildParticles;
|
||||
/* 0x194 */ JSUPtrList* mpPtclVacList;
|
||||
/* 0x198 */ JPADataBlockLinkInfo* mpDataLinkInfo;
|
||||
/* 0x19C */ JPACallBackBase<JPABaseEmitter>* mpEmitterCallBack;
|
||||
/* 0x1A0 */ JPACallBackBase2<JPABaseEmitter,JPABaseParticle>* mpParticleCallBack;
|
||||
/* 0x19C */ JPACallBackBase<JPABaseEmitter*>* mpEmitterCallBack;
|
||||
/* 0x1A0 */ JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*>* mpParticleCallBack;
|
||||
/* 0x1A4 */ JMath::TRandom_fast_ mRandomSeed;
|
||||
/* 0x1A8 */ Mtx mGlobalRotation;
|
||||
/* 0x1D8 */ JGeometry::TVec3<f32> mGlobalScale;
|
||||
|
||||
@@ -63,7 +63,7 @@ public:
|
||||
/* 0xC2 */ s16 mRotateSpeed;
|
||||
/* 0xC4 */ u8 field_0xC4[0xC6 - 0xC4];
|
||||
/* 0xC6 */ u16 mTexIdx;
|
||||
/* 0xC8 */ JPACallBackBase2<JPABaseEmitter,JPABaseParticle>* mpCallBack2;
|
||||
/* 0xC8 */ JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*>* mpCallBack2;
|
||||
/* 0xCC */ u32 mFlags;
|
||||
};
|
||||
|
||||
|
||||
@@ -16,15 +16,16 @@ public:
|
||||
virtual void calc(J3DMaterial*) const;
|
||||
};
|
||||
|
||||
class daPy_mtxFollowEcallBack_c {
|
||||
class daPy_mtxFollowEcallBack_c : public dPa_levelEcallBack {
|
||||
public:
|
||||
void execute(JPABaseEmitter*);
|
||||
void end();
|
||||
void makeEmitter(unsigned short, float(*)[4], const cXyz*, const cXyz*);
|
||||
void makeEmitterColor(unsigned short, float(*)[4], const cXyz*, const _GXColor*, const _GXColor*);
|
||||
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char);
|
||||
void makeEmitter(u16, MtxP, const cXyz*, const cXyz*);
|
||||
void makeEmitterColor(u16, MtxP, const cXyz*, const _GXColor*, const _GXColor*);
|
||||
void setup(JPABaseEmitter* emitter, const cXyz*, const csXyz*, s8) { mpEmitter = emitter; }
|
||||
|
||||
/* 0x0 */ u8 field_0x0[0xC];
|
||||
/* 0x04 */ JPABaseEmitter* mpEmitter;
|
||||
/* 0x08 */ MtxP mpMtx;
|
||||
};
|
||||
|
||||
class daPy_HIO_c {
|
||||
@@ -66,15 +67,41 @@ private:
|
||||
class daPy_py_c : public fopAc_ac_c {
|
||||
public:
|
||||
enum daPy_PROC {};
|
||||
|
||||
|
||||
enum daPy_FLG0 {
|
||||
daPyFlg0_CUT_AT_FLG = 0x00000040,
|
||||
daPyFlg0_PUSH_PULL_KEEP = 0x00000800,
|
||||
daPyFlg0_UNK1000 = 0x00001000,
|
||||
daPyFlg0_UNK200000 = 0x00200000,
|
||||
daPyFlg0_EQUIP_HEAVY_BOOTS = 0x02000000,
|
||||
daPyFlg0_NO_DRAW = 0x08000000,
|
||||
daPyFlg0_HEAVY_STATE = 0x40000000,
|
||||
};
|
||||
|
||||
enum daPy_FLG1 {
|
||||
daPy_FLG1_EQUIP_DRAGON_SHIELD = 0x00000001,
|
||||
daPy_FLG1_NPC_CALL_COMMAND = 0x00000002,
|
||||
daPy_FLG1_FORCE_VOMIT_JUMP = 0x00000010,
|
||||
daPy_FLG1_NPC_NOT_CHANGE = 0x00000040,
|
||||
daPy_FLG1_CONFUSE = 0x00000100,
|
||||
daPy_FLG1_SHIP_TACT = 0x00001000,
|
||||
daPy_FLG1_USE_ARROW_EFFECT = 0x00002000,
|
||||
daPy_FLG1_LETTER_READ_EYE_MOVE = 0x00004000,
|
||||
daPy_FLG1_UNK8000 = 0x00008000,
|
||||
daPy_FLG1_FOREST_WATER_USE = 0x00020000,
|
||||
daPy_FLG1_WATER_DROP = 0x00080000,
|
||||
daPy_FLG1_VINE_CATCH = 0x02000000,
|
||||
daPy_FLG1_LAST_COMBO_WAIT = 0x20000000,
|
||||
};
|
||||
|
||||
/* 0x290 */ u8 mAttackState;
|
||||
/* 0x291 */ u8 field_0x291;
|
||||
/* 0x292 */ u8 field_0x292[0x294 - 0x292];
|
||||
/* 0x294 */ s16 mDamageWaitTimer;
|
||||
/* 0x296 */ s16 mQuakeTimer;
|
||||
/* 0x298 */ int field_0x298;
|
||||
/* 0x29C */ u32 field_0x29c;
|
||||
/* 0x2A0 */ u32 field_0x2a0;
|
||||
/* 0x29C */ u32 mNoResetFlg0;
|
||||
/* 0x2A0 */ u32 mNoResetFlg1;
|
||||
/* 0x2A4 */ u32 field_0x2a4;
|
||||
/* 0x2A8 */ f32 field_0x2a8;
|
||||
/* 0x2AC */ u8 field_0x2AC[0x2B0 - 0x2AC];
|
||||
@@ -86,9 +113,7 @@ public:
|
||||
/* 0x2D4 */ cXyz field_0x2d4;
|
||||
/* 0x2E0 */ cXyz field_0x2e0;
|
||||
/* 0x2EC */ cXyz mRopePos;
|
||||
/* 0x2F8 */ f32 field_0x2f8;
|
||||
/* 0x2FC */ u8 field_0x2FC[0x300 - 0x2FC];
|
||||
/* 0x300 */ f32 field_0x300;
|
||||
/* 0x2F8 */ cXyz field_0x2f8;
|
||||
/* 0x304 */ daPy_demo_c mDemo;
|
||||
|
||||
u8 getCutType() const { return mAttackState; }
|
||||
@@ -97,9 +122,41 @@ public:
|
||||
s16 getBodyAngleY() { return mBodyAngle.y; }
|
||||
void changeDemoMoveAngle(s16 angle) { mDemo.setMoveAngle(angle); }
|
||||
|
||||
void onPlayerNoDraw() { field_0x29c |= 0x8000000; }
|
||||
void offPlayerNoDraw() { field_0x29c &= ~0x8000000; }
|
||||
|
||||
void onNoResetFlg0(daPy_FLG0 flag) { mNoResetFlg0 |= flag; }
|
||||
void offNoResetFlg0(daPy_FLG0 flag) { mNoResetFlg0 &= ~flag; }
|
||||
bool checkNoResetFlg0(daPy_FLG0 flag) const { return mNoResetFlg0 & flag; }
|
||||
bool getCutAtFlg() const { return checkNoResetFlg0(daPyFlg0_CUT_AT_FLG); }
|
||||
void onPushPullKeep() { onNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP); }
|
||||
void offPushPullKeep() { offNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP); }
|
||||
bool checkEquipHeavyBoots() const { return checkNoResetFlg0(daPyFlg0_EQUIP_HEAVY_BOOTS); }
|
||||
void onPlayerNoDraw() { onNoResetFlg0(daPyFlg0_NO_DRAW); }
|
||||
void offPlayerNoDraw() { offNoResetFlg0(daPyFlg0_NO_DRAW); }
|
||||
void onHeavyState() { onNoResetFlg0(daPyFlg0_HEAVY_STATE); }
|
||||
void offHeavyState() { offNoResetFlg0(daPyFlg0_HEAVY_STATE); }
|
||||
|
||||
void onNoResetFlg1(daPy_FLG1 flag) { mNoResetFlg1 |= flag; }
|
||||
void offNoResetFlg1(daPy_FLG1 flag) { mNoResetFlg1 &= ~flag; }
|
||||
bool checkNoResetFlg1(daPy_FLG1 flag) const { return mNoResetFlg1 & flag; }
|
||||
bool checkEquipDragonShield() const { return checkNoResetFlg1(daPy_FLG1_EQUIP_DRAGON_SHIELD); }
|
||||
void onNpcCall() { onNoResetFlg1(daPy_FLG1_NPC_CALL_COMMAND); }
|
||||
void offNpcCallCommand() { offNoResetFlg1(daPy_FLG1_NPC_CALL_COMMAND); }
|
||||
bool checkNpcCallCommand() const { return checkNoResetFlg1(daPy_FLG1_NPC_CALL_COMMAND); }
|
||||
void onForceVomitJump() { onNoResetFlg1(daPy_FLG1_FORCE_VOMIT_JUMP); }
|
||||
void onNpcNotChange() { onNoResetFlg1(daPy_FLG1_NPC_NOT_CHANGE); }
|
||||
void offNpcNotChange() { offNoResetFlg1(daPy_FLG1_NPC_NOT_CHANGE); }
|
||||
void onConfuse() { onNoResetFlg1(daPy_FLG1_CONFUSE); }
|
||||
void offConfuse() { offNoResetFlg1(daPy_FLG1_CONFUSE); }
|
||||
bool checkConfuse() const { return checkNoResetFlg1(daPy_FLG1_CONFUSE); }
|
||||
void onShipTact() { onNoResetFlg1(daPy_FLG1_SHIP_TACT); }
|
||||
void offShipTact() { offNoResetFlg1(daPy_FLG1_SHIP_TACT); }
|
||||
void onUseArrowEffect() { onNoResetFlg1(daPy_FLG1_USE_ARROW_EFFECT); }
|
||||
void offUseArrowEffect() { offNoResetFlg1(daPy_FLG1_USE_ARROW_EFFECT); }
|
||||
void onLetterReadEyeMove() { onNoResetFlg1(daPy_FLG1_LETTER_READ_EYE_MOVE); }
|
||||
bool checkForestWaterUse() const { return checkNoResetFlg1(daPy_FLG1_FOREST_WATER_USE); }
|
||||
void onWaterDrop() { onNoResetFlg1(daPy_FLG1_WATER_DROP); }
|
||||
void onVineCatch() { onNoResetFlg1(daPy_FLG1_VINE_CATCH); }
|
||||
bool checkLastComboWait() const { return checkNoResetFlg1(daPy_FLG1_LAST_COMBO_WAIT); }
|
||||
|
||||
virtual MtxP getLeftHandMatrix() = 0;
|
||||
virtual MtxP getRightHandMatrix() = 0;
|
||||
virtual void getGroundY() = 0;
|
||||
@@ -133,7 +190,7 @@ public:
|
||||
virtual void setHookshotCarryOffset(unsigned int, const cXyz*);
|
||||
virtual void setPlayerPosAndAngle(cXyz*, s16);
|
||||
virtual void setPlayerPosAndAngle(cXyz*, csXyz*);
|
||||
virtual void setPlayerPosAndAngle(float (*)[4]);
|
||||
virtual void setPlayerPosAndAngle(MtxP);
|
||||
virtual void setThrowDamage(cXyz*, s16, f32, f32, int);
|
||||
virtual void changeTextureAnime(u16, u16, int);
|
||||
virtual void cancelChangeTextureAnime();
|
||||
@@ -148,8 +205,6 @@ public:
|
||||
void setDoButtonQuake();
|
||||
void stopDoButtonQuake(int);
|
||||
void getRopePos() const;
|
||||
|
||||
BOOL checkConfuse() { return field_0x2a0 & 0x100; }
|
||||
};
|
||||
|
||||
#endif /* D_A_PLAYER */
|
||||
|
||||
@@ -220,6 +220,7 @@ public:
|
||||
u8 GetHitMark() { return mHitMark; }
|
||||
void SetRVec(cXyz& vec) { mRVec = vec; }
|
||||
cXyz* GetVecP() { return &mVec; }
|
||||
cXyz* GetRVecP() { return &mRVec; }
|
||||
void SetHitPos(cXyz& pos) { mHitPos = pos; }
|
||||
cXyz* GetHitPosP() { return &mHitPos; }
|
||||
inline void ClrHit() { ClrActorInfo(); }
|
||||
@@ -294,6 +295,7 @@ public:
|
||||
bool ChkAtShieldHit() { return mGObjAt.ChkRPrm(1); }
|
||||
cXyz* GetAtVecP() { return mGObjAt.GetVecP(); }
|
||||
cXyz* GetTgVecP() { return mGObjTg.GetVecP(); }
|
||||
cXyz* GetTgRVecP() { return mGObjTg.GetRVecP(); }
|
||||
void SetAtSpl(dCcG_At_Spl spl) { mGObjAt.SetAtSpl(spl); }
|
||||
void SetAtHitCallback(dCcD_HitCallback callback) { mGObjAt.SetHitCallback(callback); }
|
||||
void SetTgHitCallback(dCcD_HitCallback callback) { mGObjTg.SetHitCallback(callback); }
|
||||
|
||||
@@ -330,6 +330,7 @@ public:
|
||||
|
||||
fopAc_ac_c* getPlayerPtr(int idx) { return (fopAc_ac_c*)mpPlayerPtr[idx]; }
|
||||
fopAc_ac_c* getPlayer(int idx) { return (fopAc_ac_c*)mpPlayer[idx]; }
|
||||
void setPlayer(int idx, fopAc_ac_c* player) { mpPlayer[idx] = (daPy_py_c*)player; }
|
||||
s8 getPlayerCameraID(int idx) { return mCurCamera[idx]; }
|
||||
|
||||
int getItemRupeeCount() { return mItemRupeeCount; }
|
||||
@@ -1041,6 +1042,10 @@ inline fopAc_ac_c* dComIfGp_getPlayer(int idx) {
|
||||
return g_dComIfG_gameInfo.play.getPlayer(idx);
|
||||
}
|
||||
|
||||
inline void dComIfGp_setPlayer(int idx, fopAc_ac_c* player) {
|
||||
g_dComIfG_gameInfo.play.setPlayer(idx, player);
|
||||
}
|
||||
|
||||
inline fopAc_ac_c* dComIfGp_getCb1Player() {
|
||||
return g_dComIfG_gameInfo.play.getPlayerPtr(1);
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ public:
|
||||
virtual void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
|
||||
};
|
||||
|
||||
class dPa_windPcallBack : JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*> {
|
||||
class dPa_windPcallBack : public JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*> {
|
||||
public:
|
||||
dPa_windPcallBack();
|
||||
virtual ~dPa_windPcallBack() {}
|
||||
@@ -240,7 +240,7 @@ public:
|
||||
virtual void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
|
||||
};
|
||||
|
||||
class dPa_ripplePcallBack : JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*> {
|
||||
class dPa_ripplePcallBack : public JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*> {
|
||||
public:
|
||||
dPa_ripplePcallBack();
|
||||
virtual ~dPa_ripplePcallBack() {}
|
||||
|
||||
+16
-16
@@ -53,15 +53,15 @@ u8 daAgb_c::mShop;
|
||||
|
||||
/* 800CF5EC-800CF6B8 .text __ct__11daAgb_HIO_cFv */
|
||||
daAgb_HIO_c::daAgb_HIO_c() {
|
||||
field_0x04[0].r = 0;
|
||||
field_0x04[0].g = 255;
|
||||
field_0x04[0].b = 0;
|
||||
field_0x04[0].a = 255;
|
||||
field_0x04[0].mColor.r = 0;
|
||||
field_0x04[0].mColor.g = 255;
|
||||
field_0x04[0].mColor.b = 0;
|
||||
field_0x04[0].mColor.a = 255;
|
||||
|
||||
field_0x04[1].r = 0;
|
||||
field_0x04[1].g = 30;
|
||||
field_0x04[1].b = 0;
|
||||
field_0x04[1].a = 0;
|
||||
field_0x04[1].mColor.r = 0;
|
||||
field_0x04[1].mColor.g = 30;
|
||||
field_0x04[1].mColor.b = 0;
|
||||
field_0x04[1].mColor.a = 0;
|
||||
|
||||
field_0x14 = 24.0f;
|
||||
field_0x18 = 50.0f;
|
||||
@@ -678,7 +678,7 @@ void daAgb_c::GbaItemUse() {
|
||||
}
|
||||
|
||||
if ((var_r28 == 0xC || var_r28 == 0xD) &&
|
||||
(daPy_getPlayerLinkActorClass()->field_0x2a0 & 1))
|
||||
(daPy_getPlayerLinkActorClass()->checkEquipDragonShield()))
|
||||
{
|
||||
var_r28 = 0xA;
|
||||
}
|
||||
@@ -760,14 +760,14 @@ void daAgb_c::GbaItemUse() {
|
||||
return;
|
||||
case 3:
|
||||
daPy_lk_c* temp_r3 = daPy_getPlayerLinkActorClass();
|
||||
temp_r3->field_0x29c |= 0x1000;
|
||||
temp_r3->onNoResetFlg0(daPy_py_c::daPyFlg0_UNK1000);
|
||||
temp_r3->field_0x354c = 0x96;
|
||||
resetCursor(false);
|
||||
field_0x65c = 0x96;
|
||||
mBrk.setPlaySpeed(6.0f);
|
||||
break;
|
||||
case 0x12:
|
||||
if (daPy_getPlayerLinkActorClass()->field_0x2a0 & 1) {
|
||||
if (daPy_getPlayerLinkActorClass()->checkEquipDragonShield()) {
|
||||
mEffect = 0;
|
||||
return;
|
||||
} else {
|
||||
@@ -776,7 +776,7 @@ void daAgb_c::GbaItemUse() {
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (daPy_getPlayerLinkActorClass()->field_0x2a0 & 1) {
|
||||
if (daPy_getPlayerLinkActorClass()->checkEquipDragonShield()) {
|
||||
mEffect = 0;
|
||||
return;
|
||||
} else {
|
||||
@@ -792,9 +792,9 @@ void daAgb_c::GbaItemUse() {
|
||||
return;
|
||||
} else {
|
||||
daPy_lk_c* temp_r4 = daPy_getPlayerLinkActorClass();
|
||||
temp_r4->field_0x29c |= 0x1000;
|
||||
temp_r4->onNoResetFlg0(daPy_py_c::daPyFlg0_UNK1000);
|
||||
temp_r4->field_0x354c = 300;
|
||||
if (!(daPy_getPlayerLinkActorClass()->field_0x2a0 & 1)) {
|
||||
if (!(daPy_getPlayerLinkActorClass()->checkEquipDragonShield())) {
|
||||
temp_r4->field_0x354e = 300;
|
||||
}
|
||||
|
||||
@@ -808,7 +808,7 @@ void daAgb_c::GbaItemUse() {
|
||||
mEffect = BigLittleChange((field_0x660 << 0x10) | 0x300);
|
||||
return;
|
||||
} else {
|
||||
if ((daPy_getPlayerLinkActorClass()->field_0x2a0 & 1)) {
|
||||
if ((daPy_getPlayerLinkActorClass()->checkEquipDragonShield())) {
|
||||
mEffect = 0;
|
||||
return;
|
||||
}
|
||||
@@ -953,7 +953,7 @@ int daAgb_Execute(daAgb_c* i_this) {
|
||||
if (i_this->field_0x65c != 0) {
|
||||
if (i_this->field_0x66b == 3 || i_this->field_0x66b == 12) {
|
||||
daPy_lk_c* player_p = daPy_getPlayerLinkActorClass();
|
||||
player_p->field_0x29c |= 0x1000;
|
||||
player_p->onNoResetFlg0(daPy_py_c::daPyFlg0_UNK1000);
|
||||
player_p->field_0x354c = 10;
|
||||
} else if (i_this->field_0x66b == 4 || i_this->field_0x66b == 13 ||
|
||||
i_this->field_0x66b == 12)
|
||||
|
||||
@@ -321,7 +321,7 @@ void daObjTpost_c::cutDispLetterStart(int staffIdx) {
|
||||
void daObjTpost_c::cutDispLetterProc(int staffIdx) {
|
||||
u16 mode = talk(0);
|
||||
if(mode == 5) {
|
||||
daPy_getPlayerActorClass()->field_0x2a0 |= 0x4000; // may be a onLetterReadEyeMove__9daPy_py_cFv inline based on debug map
|
||||
daPy_getPlayerActorClass()->onLetterReadEyeMove();
|
||||
}
|
||||
if(mode == dNpcMsgStts_BOX_CLOSED_e) {
|
||||
dComIfGp_evmng_cutEnd(staffIdx);
|
||||
|
||||
+73
-25
@@ -5,54 +5,102 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
#include "f_op/f_op_camera_mng.h"
|
||||
|
||||
/* 801028FC-80102940 .text changePlayer__9daPy_py_cFP10fopAc_ac_c */
|
||||
void daPy_py_c::changePlayer(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
void daPy_py_c::changePlayer(fopAc_ac_c* newPlayer) {
|
||||
if (!newPlayer) {
|
||||
return;
|
||||
}
|
||||
if (dComIfGp_roomControl_getStayNo() != newPlayer->getRoomNo()) {
|
||||
return;
|
||||
}
|
||||
dComIfGp_setPlayer(0, newPlayer);
|
||||
dComIfGp_getCamera(0)->mCamera.mpPlayerActor = newPlayer;
|
||||
dComIfGp_getAttention().mFlags |= 0x80;
|
||||
}
|
||||
|
||||
/* 80102940-80102B84 .text objWindHitCheck__9daPy_py_cFP8dCcD_Cyl */
|
||||
void daPy_py_c::objWindHitCheck(dCcD_Cyl*) {
|
||||
/* Nonmatching */
|
||||
void daPy_py_c::objWindHitCheck(dCcD_Cyl* cyl) {
|
||||
cXyz targetSpeed(0.0f, 0.0f, 0.0f);
|
||||
f32 maxStep = 3.0f;
|
||||
|
||||
if (cyl->ChkTgHit()) {
|
||||
cCcD_Obj* hitObj = cyl->GetTgHitObj();
|
||||
if (hitObj && hitObj->GetAtType() & AT_TYPE_LEAF_WIND) {
|
||||
targetSpeed = *cyl->GetTgRVecP();
|
||||
f32 distXZ = cyl->GetTgRVecP()->absXZ();
|
||||
maxStep = 1.0f;
|
||||
if (distXZ < 1.0f) {
|
||||
targetSpeed = (current.pos - *cyl->GetTgHitPosP()) * 30.0f;
|
||||
distXZ = targetSpeed.absXZ();
|
||||
}
|
||||
if (distXZ > 30.0f) {
|
||||
targetSpeed *= 30.0f / distXZ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cLib_addCalc(&field_0x2f8.x, targetSpeed.x, 0.5f, maxStep, 0.5f);
|
||||
cLib_addCalc(&field_0x2f8.z, targetSpeed.z, 0.5f, maxStep, 0.5f);
|
||||
current.pos.x += field_0x2f8.x;
|
||||
current.pos.z += field_0x2f8.z;
|
||||
}
|
||||
|
||||
/* 80102B84-80102BB4 .text execute__25daPy_mtxFollowEcallBack_cFP14JPABaseEmitter */
|
||||
void daPy_mtxFollowEcallBack_c::execute(JPABaseEmitter*) {
|
||||
/* Nonmatching */
|
||||
void daPy_mtxFollowEcallBack_c::execute(JPABaseEmitter* emitter) {
|
||||
emitter->setGlobalRTMatrix(mpMtx);
|
||||
}
|
||||
|
||||
/* 80102BB4-80102BF8 .text end__25daPy_mtxFollowEcallBack_cFv */
|
||||
void daPy_mtxFollowEcallBack_c::end() {
|
||||
/* Nonmatching */
|
||||
if (!mpEmitter) {
|
||||
return;
|
||||
}
|
||||
mpEmitter->becomeInvalidEmitter();
|
||||
mpEmitter->quitImmortalEmitter();
|
||||
mpEmitter->setEmitterCallBackPtr(NULL);
|
||||
mpEmitter = NULL;
|
||||
}
|
||||
|
||||
/* 80102BF8-80102C84 .text makeEmitter__25daPy_mtxFollowEcallBack_cFUsPA4_fPC4cXyzPC4cXyz */
|
||||
void daPy_mtxFollowEcallBack_c::makeEmitter(unsigned short, float(*)[4], const cXyz*, const cXyz*) {
|
||||
/* Nonmatching */
|
||||
void daPy_mtxFollowEcallBack_c::makeEmitter(u16 particleID, MtxP mtx, const cXyz* pos, const cXyz* scale) {
|
||||
end();
|
||||
mpMtx = mtx;
|
||||
dComIfGp_particle_setP1(particleID, pos, NULL, scale, 0xFF, this, -1, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
/* 80102C84-80102D14 .text makeEmitterColor__25daPy_mtxFollowEcallBack_cFUsPA4_fPC4cXyzPC8_GXColorPC8_GXColor */
|
||||
void daPy_mtxFollowEcallBack_c::makeEmitterColor(unsigned short, float(*)[4], const cXyz*, const _GXColor*, const _GXColor*) {
|
||||
/* Nonmatching */
|
||||
void daPy_mtxFollowEcallBack_c::makeEmitterColor(u16 particleID, MtxP mtx, const cXyz* pos, const _GXColor* prmColor, const _GXColor* envColor) {
|
||||
end();
|
||||
mpMtx = mtx;
|
||||
dComIfGp_particle_setP1(particleID, pos, NULL, NULL, 0xFF, this, -1, prmColor, envColor, NULL);
|
||||
}
|
||||
|
||||
/* 80102D14-80102D90 .text setDoButtonQuake__9daPy_py_cFv */
|
||||
void daPy_py_c::setDoButtonQuake() {
|
||||
/* Nonmatching */
|
||||
if (checkNoResetFlg0(daPyFlg0_UNK200000)) {
|
||||
return;
|
||||
}
|
||||
|
||||
onNoResetFlg0(daPyFlg0_UNK200000);
|
||||
mQuakeTimer = 60;
|
||||
|
||||
// u8 temp[4] = {0x00, 0x10, 0xFF, 0xEE}; // Doesn't match
|
||||
u32 temp2 = 0x0010FFEE;
|
||||
u8* temp = (u8*)&temp2;
|
||||
dComIfGp_getVibration().StartQuake(temp, 0, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
}
|
||||
|
||||
/* 80102D90-80102E18 .text stopDoButtonQuake__9daPy_py_cFi */
|
||||
void daPy_py_c::stopDoButtonQuake(int) {
|
||||
/* Nonmatching */
|
||||
void daPy_py_c::stopDoButtonQuake(int param_1) {
|
||||
if (mQuakeTimer > 0) {
|
||||
mQuakeTimer--;
|
||||
if (mQuakeTimer == 0) {
|
||||
dComIfGp_getVibration().StopQuake(-1);
|
||||
}
|
||||
}
|
||||
if (param_1 && mQuakeTimer == 0) {
|
||||
mNoResetFlg0 &= ~0x00200000;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80102E18-80102E84 .text __dt__25daPy_mtxFollowEcallBack_cFv */
|
||||
daPy_mtxFollowEcallBack_c::~daPy_mtxFollowEcallBack_c() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80102E84-80102E8C .text setup__25daPy_mtxFollowEcallBack_cFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
|
||||
void daPy_mtxFollowEcallBack_c::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
|
||||
+11
-11
@@ -42,10 +42,10 @@ void dComIfG_play_c::ct() {
|
||||
mpTreePacket = NULL;
|
||||
mpWoodPacket = NULL;
|
||||
mpFlowerPacket = NULL;
|
||||
field_0x4A64[0] = 0xFF;
|
||||
field_0x4A64[1] = 0xFF;
|
||||
mLastSeaRoom = 0xFF;
|
||||
field_0x4A67[0] = 0xFF;
|
||||
mShipId = 0xFF;
|
||||
mShipRoomId = 0xFF;
|
||||
mIkadaShipBeforeRoomId = 0xFF;
|
||||
mIkadaShipId = 0xFF;
|
||||
mIkadaLinkPos.set(0.0f, 0.0f, 0.0f);
|
||||
mLkDArcIdx = -1;
|
||||
|
||||
@@ -566,8 +566,8 @@ dStage_Ship_data* dComIfGp_getShip(int i_roomNo, int param_1) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dStage_Ship_c* ship_p = roomSt_p->mRoomDt.getShip();
|
||||
if (ship_p == NULL || ship_p->m_num <= 0 || param_1 == 0xFF) {
|
||||
dStage_Ship_c* ship_p = roomSt_p->getShip();
|
||||
if (ship_p == NULL || ship_p->num <= 0 || param_1 == 0xFF) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -576,7 +576,7 @@ dStage_Ship_data* dComIfGp_getShip(int i_roomNo, int param_1) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (int i = 0; i < ship_p->m_num; i++) {
|
||||
for (int i = 0; i < ship_p->num; i++) {
|
||||
if (param_1 == data_p->field_0xe) {
|
||||
return data_p;
|
||||
}
|
||||
@@ -595,7 +595,7 @@ bool dComIfGp_getMapTrans(int i_roomNo, f32* o_transX, f32* o_transY, s16* o_ang
|
||||
}
|
||||
|
||||
dStage_Mult_info* data_p = multi_p->m_entries;
|
||||
for (int i = 0; i < multi_p->m_num; i++) {
|
||||
for (int i = 0; i < multi_p->num; i++) {
|
||||
if (i_roomNo == data_p->mRoomNo) {
|
||||
*o_transX = data_p->mTransX;
|
||||
*o_transY = data_p->mTransY;
|
||||
@@ -636,15 +636,15 @@ void dComIfGp_setNextStage(const char* i_stageName, s16 i_point, s8 i_roomNo, s8
|
||||
g_dComIfG_gameInfo.play.setNextStage(i_stageName, i_roomNo, i_point, i_layer, i_wipe);
|
||||
|
||||
if (daPy_getPlayerLinkActorClass() != NULL) {
|
||||
u32 mode = daPy_getPlayerLinkActorClass()->field_0x2a0;
|
||||
u32 mode = daPy_getPlayerLinkActorClass()->mNoResetFlg1;
|
||||
|
||||
if (mode & 1) {
|
||||
if (mode & daPy_lk_c::daPy_FLG1_EQUIP_DRAGON_SHIELD) {
|
||||
i_lastMode |= 0x8000;
|
||||
}
|
||||
|
||||
i_lastMode |= daPy_getPlayerLinkActorClass()->field_0x354e << 0x10;
|
||||
|
||||
if (mode & 0x8000) {
|
||||
if (mode & daPy_lk_c::daPy_FLG1_UNK8000) {
|
||||
i_lastMode |= 0x4000;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user