mirror of https://github.com/zeldaret/tp.git
d_a_obj_swchain matching (#2741)
* initial * Little more work * matching * updated matching versions
This commit is contained in:
parent
071e69e78a
commit
86895b23c2
|
|
@ -2181,7 +2181,7 @@ config.libs = [
|
|||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swBallB"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swBallC"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swLight"),
|
||||
ActorRel(NonMatching, "d_a_obj_swchain"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_swchain"),
|
||||
ActorRel(Equivalent, "d_a_obj_swhang"), # vtable order
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_sword"),
|
||||
ActorRel(NonMatching, "d_a_obj_swpush2"),
|
||||
|
|
|
|||
|
|
@ -13,14 +13,11 @@
|
|||
*
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
*/
|
||||
|
||||
class daObjSwChain_c : public fopAc_ac_c {
|
||||
public:
|
||||
struct chain_s {
|
||||
public:
|
||||
/* 80CF8B00 */ ~chain_s();
|
||||
/* 80CF8B3C */ chain_s();
|
||||
|
||||
/* 0x00 */ dMdl_obj_c mModel;
|
||||
/* 0x34 */ cXyz field_0x34;
|
||||
/* 0x40 */ csXyz field_0x40;
|
||||
|
|
@ -40,7 +37,7 @@ public:
|
|||
/* 80CFA4A8 */ void chain_count_control();
|
||||
/* 80CFAD50 */ void setTension();
|
||||
/* 80CFB450 */ int getTopChainNo();
|
||||
/* 80CFB464 */ void checkPlayerPull();
|
||||
/* 80CFB464 */ BOOL checkPlayerPull();
|
||||
/* 80CFB53C */ int draw();
|
||||
/* 80CFB5E8 */ int _delete();
|
||||
|
||||
|
|
@ -50,30 +47,30 @@ public:
|
|||
u8 getOutNum() { return fopAcM_GetParamBit(this, 16, 8); }
|
||||
u8 getChainID() { return fopAcM_GetParamBit(this, 28, 4); }
|
||||
u8 getHookShotLength() { return mHookshotLength; }
|
||||
int getCurrentChainNum() { return field_0xa64; }
|
||||
int getCurrentChainNum() { return mOutNum; }
|
||||
f32 getCurrentChainLength() {
|
||||
chain_s* chain_p = &field_0xa74[field_0xa65 - field_0xa64 + 1];
|
||||
chain_s* chain_p = &mChains[mChainNum - mOutNum + 1];
|
||||
return (getCurrentChainNum() - 1) * 35.0f +
|
||||
field_0xa74[0].field_0x34.abs(chain_p->field_0x34);
|
||||
mChains[0].field_0x34.abs(chain_p->field_0x34);
|
||||
}
|
||||
BOOL checkDispEmphasis() { return fopAcM_isSwitch(this, getSwbit()) == FALSE; }
|
||||
bool checkCarry() { return mCarry == 1; }
|
||||
void setRatioForChandelier(f32 ratio) { mRatio = ratio; }
|
||||
|
||||
/* 80C665A4 */ BOOL checkTight() {
|
||||
if (mCarry != 0 && (home.roomNo == 4 || home.roomNo == 6) && field_0xa64 >= field_0xa69 &&
|
||||
if (mCarry != 0 && (home.roomNo == 4 || home.roomNo == 6) && mOutNum >= field_0xa69 &&
|
||||
field_0xa9c == 0)
|
||||
{
|
||||
daPy_py_c* player = daPy_getPlayerActorClass();
|
||||
chain_s* swChain = &field_0xa74[field_0xa65] - field_0xa64 + 1;
|
||||
chain_s* swChain = &mChains[mChainNum] - mOutNum + 1;
|
||||
cXyz cStack_54;
|
||||
cXyz cStack_60;
|
||||
cStack_54 = swChain->field_0x34;
|
||||
cStack_60 = field_0xa74[field_0xa65].field_0x34;
|
||||
cStack_60 = mChains[mChainNum].field_0x34;
|
||||
f32 dVar10 = cStack_60.abs(cStack_54);
|
||||
f32 dVar13 = (field_0xa67 - 2) * 35.0f;
|
||||
cXyz local_6c;
|
||||
cXyz cStack_78 = field_0xa74[0].field_0x34 - field_0xa74[field_0xa65].field_0x34;
|
||||
cXyz cStack_78 = mChains[0].field_0x34 - mChains[mChainNum].field_0x34;
|
||||
local_6c.x = player->getSpeedF() * cM_ssin(player->current.angle.y);
|
||||
local_6c.z = player->getSpeedF() * cM_scos(player->current.angle.y);
|
||||
if (cStack_78.inprodXZ(local_6c) < 0.0f && dVar10 > dVar13 - 35.0f) {
|
||||
|
|
@ -91,33 +88,37 @@ private:
|
|||
/* 0x598 */ dCcD_Stts mStts;
|
||||
/* 0x5D4 */ dCcD_Sph mSph1;
|
||||
/* 0x70C */ dCcD_Sph mSph2;
|
||||
/* 0x844 */ dBgS_ObjAcch mAcch;
|
||||
/* 0x844 */ dBgS_ObjAcch mBgc;
|
||||
/* 0xA1C */ dBgS_AcchCir mAcchCir;
|
||||
/* 0xA5C */ u16 mHookshotLength;
|
||||
/* 0xA5E */ u16 field_0xa5e;
|
||||
/* 0xA60 */ u8 field_0xa60;
|
||||
/* 0xA60 */ u8 field_0xa61;
|
||||
/* 0xA62 */ u8 mCarry;
|
||||
/* 0xA63 */ u8 field_0xa63;
|
||||
/* 0xA64 */ u8 field_0xa64;
|
||||
/* 0xA65 */ u8 field_0xa65;
|
||||
/* 0xA66 */ u8 field_0xa66;
|
||||
/* 0xA63 */ u8 mChainID;
|
||||
/* 0xA64 */ u8 mOutNum;
|
||||
/* 0xA65 */ u8 mChainNum;
|
||||
/* 0xA66 */ u8 mHookShotLength;
|
||||
/* 0xA67 */ u8 field_0xa67;
|
||||
/* 0xA68 */ u8 field_0xa68;
|
||||
/* 0xA69 */ u8 field_0xa69;
|
||||
/* 0xA6A */ u8 field_0xa6a;
|
||||
/* 0xA6A */ u8 field_0xa6b;
|
||||
/* 0xA6C */ u8 field_0xa6c;
|
||||
/* 0xA6D */ u8 field_0xa6d[0xa74 - 0xa6d];
|
||||
/* 0xA74 */ chain_s* field_0xa74;
|
||||
/* 0xA78 */ u8 field_0xa78[0xa98 - 0xa78];
|
||||
/* 0xA6D */ u8 field_0xa6d;
|
||||
/* 0xA6E */ s16 field_0xa6e;
|
||||
/* 0xA70 */ s16 field_0xa70;
|
||||
/* 0xA74 */ chain_s* mChains;
|
||||
/* 0xA78 */ cXyz field_0xa78;
|
||||
/* 0xA84 */ u8 field_0xa84[0xa90 - 0xa84];
|
||||
/* 0xA90 */ f32 pow;
|
||||
/* 0xA94 */ f32 field_0xa94;
|
||||
/* 0xA98 */ f32 mRatio;
|
||||
/* 0xA9C */ u8 field_0xa9c;
|
||||
/* 0xA9D */ u8 field_0xa9d;
|
||||
/* 0xA9E */ u8 field_0xa9e;
|
||||
/* 0xA9F */ u8 field_0xa9f[0xaa0 - 0xa9f];
|
||||
#ifdef DEBUG
|
||||
/* 0xAA0 */ u8 field_0xaa0[0xc];
|
||||
/* 0xAA0 */ cXyz field_0xac0;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1248,6 +1248,9 @@ public:
|
|||
}
|
||||
|
||||
BOOL checkInsectRelease() { return checkResetFlg1(RFLG1_UNK_100); }
|
||||
|
||||
void onChainForcePull() { onEndResetFlg1(ERFLG1_UNK_1000000); }
|
||||
void onChainPullEnd() { onEndResetFlg1(ERFLG1_UNK_2000000); }
|
||||
};
|
||||
|
||||
int daPy_addCalcShort(s16* param_0, s16 param_1, s16 param_2, s16 param_3, s16 param_4);
|
||||
|
|
|
|||
|
|
@ -21,7 +21,10 @@ class dMdl_c : public J3DPacket {
|
|||
public:
|
||||
/* 8009C650 */ void create(J3DModelData*, u16, dKy_tevstr_c*);
|
||||
/* 8009C668 */ void entryObj(dMdl_obj_c*);
|
||||
/* 8009C930 */ dMdl_c();
|
||||
/* 8009C930 */ dMdl_c() {
|
||||
mpModelData = NULL;
|
||||
mMaterialId = 0;
|
||||
}
|
||||
|
||||
/* 8009C4FC */ virtual void draw();
|
||||
/* 8009C808 */ virtual ~dMdl_c();
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -130,9 +130,3 @@ dMdl_c* dMdl_mng_c::entry(J3DModelData* i_modelData, u16 i_materialId, int i_roo
|
|||
dKy_tevstr_c* tevstr = dComIfGp_roomControl_getTevStr(i_roomNo);
|
||||
return m_myObj->entry(i_modelData, i_materialId, tevstr);
|
||||
}
|
||||
|
||||
/* 8009C930-8009C964 097270 0034+00 1/1 0/0 0/0 .text __ct__6dMdl_cFv */
|
||||
dMdl_c::dMdl_c() {
|
||||
mpModelData = NULL;
|
||||
mMaterialId = 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue