mirror of https://github.com/zeldaret/tp
127 lines
2.9 KiB
C++
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 */
|