tp/include/d/d_vibration.h

127 lines
2.9 KiB
C++

#ifndef D_D_VIBRATION_H
#define D_D_VIBRATION_H
#include "SSystem/SComponent/c_xyz.h"
#include "JSystem/JHostIO/JORReflexible.h"
struct vib_pattern {
/* 0x0 */ u16 rounds;
/* 0x2 */ u16 length;
/* 0x4 */ u32 bits;
};
enum VIBMODE_SHOCK {
VIBMODE_S_NONE = -1,
VIBMODE_S_CUSTOM,
VIBMODE_S_POWER1,
VIBMODE_S_POWER2,
VIBMODE_S_POWER3,
VIBMODE_S_POWER4,
VIBMODE_S_POWER5,
VIBMODE_S_POWER6,
VIBMODE_S_POWER7,
VIBMODE_S_POWER8,
VIBMODE_S_DOKUTT,
VIBMODE_S_FOR2D,
VIBMODE_S_MAX
};
enum VIBMODE_QUAKE {
VIBMODE_Q_NONE = -1,
VIBMODE_Q_CUSTOM,
VIBMODE_Q_POWER1,
VIBMODE_Q_POWER2,
VIBMODE_Q_POWER3,
VIBMODE_Q_POWER4,
VIBMODE_Q_POWER5,
VIBMODE_Q_POWER6,
VIBMODE_Q_POWER7,
VIBMODE_Q_POWER8,
VIBMODE_Q_HORSE,
VIBMODE_Q_MAX
};
class dVibTest_c : public JORReflexible {
public:
dVibTest_c();
virtual void listenPropertyEvent(const JORPropertyEvent*);
virtual void genMessage(JORMContext*);
virtual ~dVibTest_c() {}
/* 0x04 */ s8 field_0x4;
/* 0x06 */ u16 m_pattern;
/* 0x08 */ u16 m_pattern2;
/* 0x0A */ u16 field_0xa;
/* 0x0C */ s16 m_randombit;
/* 0x0E */ s16 m_length;
/* 0x10 */ int field_0x10;
/* 0x14 */ int m_vibswitch;
/* 0x18 */ u16 m_displayDbg;
};
class dVibration_c {
public:
enum {
MODE_PAUSE = -1,
MODE_WAIT,
MODE_RUN,
};
int Run();
bool StartShock(int i_vibmode, int i_flags, cXyz i_pos);
bool StartQuake(const u8* i_pattern, int i_rounds, int i_flags, cXyz i_pos);
bool StartQuake(int i_vibmode, int i_flags, cXyz i_pos);
int StopQuake(int i_flags);
void Kill();
bool CheckQuake();
void setDefault();
void Init();
void Pause();
void Remove();
static const vib_pattern MS_patt[VIBMODE_S_MAX];
static const vib_pattern CS_patt[VIBMODE_S_MAX];
static const vib_pattern MQ_patt[VIBMODE_Q_MAX];
static const vib_pattern CQ_patt[VIBMODE_Q_MAX];
private:
#if DEBUG
/* 0x00 */ dVibTest_c mVibTest;
#endif
class {
public:
class {
public:
/* 0x00 */ u32 field_0x0;
/* 0x04 */ int mVibMode;
/* 0x08 */ u32 mPattern;
/* 0x0C */ s32 mLength;
/* 0x10 */ s32 mRounds;
/* 0x14 */ s32 mFlags;
/* 0x18 */ cXyz mPos;
/* 0x24 */ s32 mFrame;
} mShock, mQuake;
} /* 0x00 */ mCamera;
class {
public:
class {
public:
/* 0x00 */ u32 field_0x0;
/* 0x04 */ int mVibMode;
/* 0x08 */ u32 mPattern;
/* 0x0C */ s32 mLength;
/* 0x10 */ s32 mRounds;
/* 0x14 */ s32 mFrame;
/* 0x18 */ s32 mStopFrame;
} mShock, mQuake;
} /* 0x50 */ mMotor;
/* 0x88 */ s32 mFrame;
/* 0x8C */ s32 mMode;
}; // Size: 0x90
#endif /* D_D_VIBRATION_H */