Files
2026-03-12 17:26:42 -04:00

239 lines
7.1 KiB
C++

#ifndef D_A_OBJ_IKADA_H
#define D_A_OBJ_IKADA_H
#include "f_op/f_op_actor.h"
#include "d/d_cc_d.h"
#include "d/d_bg_s_acch.h"
#include "d/d_bg_w.h"
#include "d/d_particle.h"
#include "m_Do/m_Do_ext.h"
#include "SSystem/SComponent/c_phase.h"
#include "d/d_path.h"
#include "d/d_lib.h"
#include "m_Do/m_Do_hostIO.h"
class daObj_Ikada_c : public fopAc_ac_c {
public:
enum Proc_e {
PROC_INIT_e = 0,
PROC_EXEC_e = 1,
};
void getCranePos() {}
void getFrame() {}
void getMode() {}
void getSvDirection() {}
bool isBonbori() { return mType == 3 || mType == 1; }
bool isCrane() {return mType == 4; }
bool isFlag() { return mType == 0 || mType == 4; }
bool isWave() { return mType == 4 || mType == 3 || mType == 1; }
void modeProcInit(int idx) { modeProc(PROC_INIT_e, idx); }
void setInitPos() {}
void setStart() {}
void setStop() {}
void _nodeControl(J3DNode*, J3DModel*);
BOOL _pathMove(cXyz*, cXyz*, cXyz*);
void _ride(fopAc_ac_c*);
void setCollision();
bool checkTgHit();
void pathMove();
void HandleRight();
void HandleLeft();
void createWave();
void setWave();
void incRopeCnt(int, int);
void setRopePos();
void setMtx();
void modeProc(Proc_e, int);
void modeWaitInit();
void modeWait();
void modeCraneUpInit();
void modeCraneUp();
void modeCraneUpWaitInit();
void modeCraneUpWait();
void modeCraneDownInit();
void modeCraneDown();
void modeCraneDownWaitInit();
void modeCraneDownWait();
void modeCraneTurnInit();
void modeCraneTurn();
void modeCraneResetInit();
void modeCraneReset();
void modeCraneWaitInit();
void modeCraneWait();
void modePathMoveInit();
void modePathMove();
void modeStopInit();
void modeStop();
void modePathMoveTerryInit();
void modePathMoveTerry();
void modeStopTerryInit();
void modeStopTerry();
void modeStopBombTerryInit();
void modeStopBombTerry();
void epProc();
bool _execute();
void debugDraw();
bool _draw();
void getArg();
void createInit();
BOOL _createHeap();
cPhs_State _create();
bool _delete();
static cXyz m_rope_base_vec;
static cXyz m_crane_offset;
static const dCcD_SrcSph m_sph_src;
static const u32 m_heapsize[];
static const char m_arc_name[];
static const f32 m_rope_joint_len;
static const s32 m_rope_min_cnt;
public:
/* 0x0290 */ s32 mType;
/* 0x0294 */ u32 m0294;
/* 0x0298 */ u32 m0298;
/* 0x029C */ u32 m029C;
/* 0x02A0 */ u32 m02A0;
/* 0x02A4 */ u8 mPathId;
/* 0x02A5 */ u8 m02A5[0x02A8 - 0x02A5];
/* 0x02A8 */ cXyz mCurPathP0;
/* 0x02B4 */ s8 mCurPathPoint;
/* 0x02B5 */ u8 m02B5[0x02B8 - 0x02B5];
/* 0x02B8 */ dPath* mpPath;
/* 0x02BC */ u8 m02BC[0x02C0 - 0x02BC];
/* 0x02C0 */ cXyz mCurPathP1;
/* 0x02CC */ cXyz m02CC;
/* 0x02D8 */ f32 mVelocityFwdTarget;
/* 0x02DC */ cXyz mPathPosTarget;
/* 0x02E8 */ u8 m02E8[0x02EC - 0x02E8];
/* 0x02EC */ u8 mbCraneMode;
/* 0x02ED */ u8 m02ED[0x02F0 - 0x02ED];
/* 0x02F0 */ s32 mCurMode;
/* 0x02F4 */ s32 m02F4;
/* 0x02F8 */ dPa_waveEcallBack mWaveLCallback;
/* 0x035C */ dPa_waveEcallBack mWaveRCallback;
/* 0x03C0 */ dPa_splashEcallBack mSplashCallBack;
/* 0x03DC */ dPa_trackEcallBack mTrackCallBack;
/* 0x042C */ dPa_rippleEcallBack mRippleCallBack;
/* 0x0440 */ u8 m0440;
/* 0x0444 */ cXyz m0444;
/* 0x0450 */ cXyz mWavePos;
/* 0x045C */ csXyz mWaveRot;
/* 0x0462 */ u8 m0462[0x0464 - 0x0462];
/* 0x0464 */ f32 mSplashScaleTimer;
/* 0x0468 */ cXyz mTrackPos;
/* 0x0474 */ cXyz m0474;
/* 0x0480 */ dPa_followEcallBack mBombSmokeEasterEgg;
/* 0x0494 */ csXyz mBombSmokeRot;
/* 0x049A */ u8 m049A[0x049C - 0x049A];
/* 0x049C */ cXyz mBombSmokePos;
/* 0x04A8 */ int m04A8;
/* 0x04AC */ s16 mBombSmokeAngle;
/* 0x04AE */ u8 m04AE[0x04B0 - 0x04AE];
/* 0x04B0 */ dPa_followEcallBack mFireParticle;
/* 0x04C4 */ cXyz mFirePos;
/* 0x04D0 */ Mtx mLightMtx;
/* 0x0500 */ f32 mLightPower;
/* 0x0504 */ f32 mLightPowerTarget;
/* 0x0508 */ f32 m0508;
/* 0x050C */ f32 m050C;
/* 0x0510 */ int mEpTimer0;
/* 0x0514 */ int mEpTimer1;
/* 0x0518 */ u8 m0518[0x051C - 0x0518];
/* 0x051C */ int mTimer;
/* 0x0520 */ u8 m0520[0x0528 - 0x0520];
/* 0x0528 */ s16 mLightRotX;
/* 0x052A */ s16 mLightRotY;
/* 0x052C */ request_of_phase_process_class mPhase;
/* 0x0534 */ J3DModel* mpModel;
/* 0x0538 */ mDoExt_bckAnm mBckAnm;
/* 0x0548 */ bool mbIsLinkRiding;
/* 0x054C */ dBgW* mpBgW;
/* 0x0550 */ Mtx mMtx;
/* 0x0580 */ dBgS_ObjAcch mObjAcch;
/* 0x0744 */ dBgS_AcchCir mAcchCir;
/* 0x0784 */ fpc_ProcID mFlagPcId;
/* 0x0788 */ cXyz mFlagOffset;
/* 0x0794 */ f32 mFlagScale;
/* 0x0798 */ J3DModel* mpRopeEnd;
/* 0x079C */ mDoExt_3DlineMat1_c mRopeLine;
/* 0x07D8 */ s32 m07D8;
/* 0x07DC */ cXyz m07DC[200];
/* 0x113C */ csXyz mJointRot[4];
/* 0x1154 */ s32 m1154;
/* 0x1158 */ s16 m1158;
/* 0x115A */ s16 m115A;
/* 0x115C */ s16 m115C;
/* 0x115E */ s16 m115E;
/* 0x1160 */ s16 mLinkRideRockTimer;
/* 0x1162 */ s16 mLinkRideRockAmpl;
/* 0x1164 */ s16 mWaveAnimTimer;
/* 0x1166 */ u8 m1166;
/* 0x1167 */ u8 m1167[0x1168 - 0x1167];
/* 0x1168 */ s32 m1168;
/* 0x116C */ s32 mSvId[4];
/* 0x117C */ dCcD_Sph mSph;
/* 0x12A8 */ dCcD_Stts mStts;
/* 0x12E4 */ int m12E4;
/* 0x12E8 */ cXyz mSePos;
/* 0x12F4 */ int mStopTimer;
/* 0x12F8 */ dLib_wave_c mWave;
/* 0x1304 */ u8 m1304[0x1308 - 0x1304];
/* 0x1308 */ LIGHT_INFLUENCE mPLight;
/* 0x1328 */ cXyz mInitPos;
};
class daObj_Ikada_HIO_c : public mDoHIO_entry_c {
public:
daObj_Ikada_HIO_c();
virtual ~daObj_Ikada_HIO_c() {}
void genMessage(JORMContext* ctx) {}
public:
/* 0x04 */ u8 mbDebugDraw;
/* 0x05 */ u8 m05;
/* 0x06 */ u8 m06;
/* 0x07 */ u8 mbNoRotAnim;
/* 0x08 */ u8 m08;
/* 0x09 */ u8 m09[0x0C - 0x09];
/* 0x0C */ Vec mFlagOffset;
/* 0x18 */ f32 mFlagScale;
/* 0x1C */ s16 m1C;
/* 0x1E */ s16 m1E;
/* 0x20 */ f32 m20;
/* 0x24 */ s16 m24;
/* 0x26 */ u8 m26[0x28 - 0x26];
/* 0x28 */ f32 m28;
/* 0x2C */ f32 mShipOffsY_Attention;
/* 0x30 */ f32 mShipOffsY_Eye;
/* 0x34 */ f32 mTerryWaveOffsZ;
/* 0x38 */ f32 mTerryWaveOffsY;
/* 0x3C */ f32 mTerryTrackOffsZ;
/* 0x40 */ f32 mSvWaveOffsX;
/* 0x44 */ f32 mSvTrackOffsX;
/* 0x48 */ f32 mSvOffsX[4];
/* 0x58 */ f32 mTrackIndTransY;
/* 0x5C */ f32 mTrackIndScaleY;
/* 0x60 */ f32 mSplashScaleMax;
/* 0x64 */ f32 mSplashMaxScaleTimer;
/* 0x68 */ f32 mWaveVelFade;
/* 0x6C */ f32 mTrackVel;
/* 0x70 */ f32 mWaveVelSpeed;
/* 0x74 */ f32 mWaveVelOffs;
/* 0x78 */ f32 mWaveMaxVelocity;
/* 0x7C */ Vec mWaveCollapsePos[2];
/* 0x94 */ s16 m94;
/* 0x96 */ s16 mPlayerStopDistance;
/* 0x98 */ s16 m98;
/* 0x9A */ s16 m9A;
/* 0x9C */ f32 m9C;
/* 0xA0 */ f32 mVelocityTargetTerry1;
/* 0xA4 */ f32 mVelocityTargetTerry3;
/* 0xA8 */ f32 mA8;
}; // size = 0xAC
#endif /* D_A_OBJ_IKADA_H */