d_a_obj_lv4chandelier equivalent (#2590)

This commit is contained in:
hatal175
2025-08-17 19:06:17 -07:00
committed by GitHub
parent b0d08c5188
commit a23984e74d
18 changed files with 1002 additions and 787 deletions
+3 -1
View File
@@ -84,11 +84,13 @@ public:
STATIC_ASSERT(sizeof(e_db_class) == 0x1270);
class daE_DB_HIO_c {
class daE_DB_HIO_c : public JORReflexible {
public:
/* 8069AAEC */ daE_DB_HIO_c();
/* 806A13D8 */ virtual ~daE_DB_HIO_c() {}
void genMessage(JORMContext*);
/* 0x04 */ s8 id;
/* 0x08 */ f32 base_size;
/* 0x0C */ f32 flower_size;
+2
View File
@@ -85,6 +85,8 @@ public:
/* 806A226C */ daE_DD_HIO_c();
/* 806A6D08 */ virtual ~daE_DD_HIO_c() {}
void genMessage(JORMContext*);
/* ドドンゴ - Dodongo */
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 basic_size; // 基本サイズ - Basic Size
+3 -1
View File
@@ -47,11 +47,13 @@ public:
STATIC_ASSERT(sizeof(obj_key_class) == 0x9b8);
class daObj_Key_HIO_c {
class daObj_Key_HIO_c : public JORReflexible{
public:
/* 80C3F40C */ daObj_Key_HIO_c();
/* 80C40F28 */ virtual ~daObj_Key_HIO_c() {}
void genMessage(JORMContext*);
/* 0x4 */ s8 id;
/* 0x8 */ f32 size;
/* 0xC */ f32 chain_size;
+3 -1
View File
@@ -70,11 +70,13 @@ public:
STATIC_ASSERT(sizeof(obj_keyhole_class) == 0x2CB8);
class daObj_Keyhole_HIO_c {
class daObj_Keyhole_HIO_c : public JORReflexible {
public:
/* 80C4124C */ daObj_Keyhole_HIO_c();
/* 80C4394C */ virtual ~daObj_Keyhole_HIO_c() {}
void genMessage(JORMContext*);
/* 0x4 */ s8 id;
/* 0x8 */ f32 obj_size;
};
+61 -13
View File
@@ -1,6 +1,8 @@
#ifndef D_A_OBJ_LV4CHANDELIER_H
#define D_A_OBJ_LV4CHANDELIER_H
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_cc_d.h"
#include "f_op/f_op_actor_mng.h"
#include "d/d_model.h"
@@ -12,37 +14,83 @@
* @details
*
*/
class daObjLv4Chan_c : public fopAc_ac_c {
class daObjLv4Chan_c : public dBgS_MoveBgActor, public request_of_phase_process_class {
public:
struct ChainPos {
/* 80C66564 */ ~ChainPos();
/* 80C665A0 */ ChainPos();
/* 0x00 */ cXyz field_0x0;
/* 0x0C */ cXyz field_0xc;
/* 0x18 */ cXyz field_0x18;
/* 0x24 */ f32 field_0x24;
};
/* 80C63360 */ void create1st();
/* 80C63360 */ int create1st();
/* 80C634CC */ void setMtxChain(daObjLv4Chan_c::ChainPos*, dMdl_obj_c*, int);
/* 80C636B4 */ void setMtx();
/* 80C639B4 */ void rideActor(fopAc_ac_c*);
/* 80C63CFC */ void CreateHeap();
/* 80C63FA8 */ void Create();
/* 80C63CFC */ int CreateHeap();
/* 80C63FA8 */ int Create();
/* 80C6449C */ void constraintChain(daObjLv4Chan_c::ChainPos*, int);
/* 80C64668 */ void constraintBase();
/* 80C647FC */ void calcVec(daObjLv4Chan_c::ChainPos*, int);
/* 80C64878 */ void chkGnd();
/* 80C648F4 */ void Execute(f32 (**)[3][4]);
/* 80C65F04 */ void Draw();
/* 80C66114 */ void Delete();
/* 80C648F4 */ int Execute(Mtx**);
/* 80C65F04 */ int Draw();
/* 80C66114 */ int Delete();
int getArg0() { return fopAcM_GetParamBit(this, 0, 4); }
int getAddChain0() { return fopAcM_GetParamBit(this, 4, 4); }
int getAddChain1() { return fopAcM_GetParamBit(this, 8, 4); }
int getAddChain2() { return fopAcM_GetParamBit(this, 12, 4); }
int getSw() { return fopAcM_GetParamBit(this, 16, 8); }
private:
/* 0x568 */ u8 field_0x568[0x24a4 - 0x568];
/* 0x05A8 */ Mtx field_0x5a8;
/* 0x05D8 */ Mtx field_0x5d8;
/* 0x0608 */ J3DModel* mModel;
/* 0x060C */ J3DModelData* mChainModelData;
/* 0x0610 */ int mChainLengths[3];
/* 0x061C */ ChainPos* mChains[3];
/* 0x0628 */ int mMdlLengths[3];
/* 0x0634 */ dMdl_obj_c* mMdls[3];
/* 0x0640 */ dCcD_Stts mStts;
/* 0x067C */ dCcD_Sph mSphs1[8];
/* 0x103C */ dCcD_Sph mSphs2[8];
/* 0x19FC */ dCcD_Sph mSphs3[8];
/* 0x23BC */ cXyz field_0x23bc;
/* 0x23C8 */ cXyz field_0x23c8;
/* 0x23D4 */ int field_0x23d4;
/* 0x23D8 */ fopAc_ac_c* field_0x23d8[8];
/* 0x23F8 */ fopAc_ac_c* field_0x23f8[8];
/* 0x2418 */ int field_0x2418;
/* 0x241C */ int field_0x241c;
/* 0x2420 */ f32 field_0x2420;
/* 0x2424 */ int mShadowId;
/* 0x2428 */ dBgS_ObjGndChk mGndChk;
/* 0x247C */ f32 field_0x247c;
/* 0x2480 */ int mAddChain0;
/* 0x2484 */ int field_0x2484;
/* 0x2488 */ u8 field_0x2488;
/* 0x2489 */ u8 field_0x2489;
/* 0x248A */ u8 field_0x248a;
/* 0x248B */ u8 field_0x248b;
/* 0x248C */ u8 field_0x248c;
/* 0x248D */ u8 field_0x248d;
/* 0x2490 */ f32 field_0x2490;
/* 0x2494 */ f32 field_0x2494;
/* 0x2498 */ u8 field_0x2498;
/* 0x2499 */ u8 field_0x2499;
/* 0x249C */ f32 field_0x249c;
/* 0x24A0 */ f32 field_0x24a0;
};
STATIC_ASSERT(sizeof(daObjLv4Chan_c) == 0x24a4);
class daObjSwChain_c : public fopAc_ac_c {
#ifdef DEBUG
class daObjLv4Chan_HIO_c : public mDoHIO_entry_c {
public:
/* 80C665A4 */ void checkTight();
daObjLv4Chan_HIO_c();
void genMessage(JORMContext*);
};
#endif
#endif /* D_A_OBJ_LV4CHANDELIER_H */
+46 -1
View File
@@ -2,6 +2,8 @@
#define D_A_OBJ_SWCHAIN_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_com_inf_game.h"
#include "d/actor/d_a_player.h"
/**
* @ingroup actors-objects
@@ -17,6 +19,10 @@ public:
public:
/* 80CF8B00 */ ~chain_s();
/* 80CF8B3C */ chain_s();
/* 0x00 */ u8 field_0x00[0x34 - 0x00];
/* 0x00 */ cXyz field_0x34;
/* 0x00 */ u8 field_0x40[0x50 - 0x40];
};
/* 80CF8768 */ void Create();
@@ -36,10 +42,49 @@ public:
/* 80CFB5E8 */ void _delete();
u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); }
u8 getChainID() { return fopAcM_GetParamBit(this, 28, 4); }
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 &&
field_0xa9c == 0)
{
daPy_py_c* player = daPy_getPlayerActorClass();
chain_s* swChain = &field_0xa74[field_0xa65] - field_0xa64 + 1;
cXyz cStack_54;
cXyz cStack_60;
cStack_54 = swChain->field_0x34;
cStack_60 = field_0xa74[field_0xa65].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;
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) {
return TRUE;
}
}
return FALSE;
}
private:
/* 0x568 */ u8 field_0x568[0xaa0 - 0x568];
/* 0x568 */ u8 field_0x568[0xa62 - 0x568];
/* 0xA62 */ u8 mCarry;
/* 0xA63 */ u8 field_0xa63;
/* 0xA64 */ u8 field_0xa64;
/* 0xA65 */ u8 field_0xa65;
/* 0xA66 */ u8 field_0xa66;
/* 0xA67 */ u8 field_0xa67;
/* 0xA68 */ u8 field_0xa68;
/* 0xA69 */ u8 field_0xa69;
/* 0xA6A */ u8 field_0xa6a[0xa74 - 0xa6a];
/* 0xA6A */ chain_s* field_0xa74;
/* 0xA6A */ u8 field_0xa78[0xa98 - 0xa78];
/* 0xA98 */ f32 mRatio;
/* 0xA9C */ u8 field_0xa9c;
};
STATIC_ASSERT(sizeof(daObjSwChain_c) == 0xaa0);