Files
2025-08-11 17:51:49 -04:00

135 lines
5.8 KiB
C++

#ifndef JPAEXTRASHAPE_H
#define JPAEXTRASHAPE_H
#include "JSystem/JParticle/JPAParticle.h"
struct JPAExtraShapeData {
/* 0x00 */ u32 mFlags;
/* 0x04 */ u32 field_0x04;
/* 0x08 */ f32 mAlphaInTiming;
/* 0x0C */ f32 mAlphaOutTiming;
/* 0x10 */ f32 mAlphaInValue;
/* 0x14 */ f32 mAlphaBaseValue;
/* 0x18 */ f32 mAlphaOutValue;
/* 0x1C */ f32 mAlphaWaveParam1;
/* 0x20 */ f32 mAlphaWaveParam2;
/* 0x24 */ f32 mAlphaWaveParam3;
/* 0x28 */ f32 mAlphaWaveRandom;
/* 0x2C */ f32 mScaleInTiming;
/* 0x30 */ f32 mScaleOutTiming;
/* 0x34 */ f32 mScaleInValueX;
/* 0x38 */ f32 mScaleOutValueX;
/* 0x3C */ f32 mScaleInValueY;
/* 0x40 */ f32 mScaleOutValueY;
/* 0x44 */ f32 mRandomScale;
/* 0x48 */ s16 mAnmCycleX;
/* 0x4A */ s16 mAnmCycleY;
/* 0x4C */ f32 mRotateAngle;
/* 0x50 */ f32 mRotateSpeed;
/* 0x54 */ f32 mRotateRandomAngle;
/* 0x58 */ f32 mRotateRandomSpeed;
/* 0x5C */ f32 mRotateDirection;
}; // Size: 0x60
class JPAExtraShape {
public:
virtual ~JPAExtraShape() {}
virtual BOOL isEnableScale() = 0;
virtual BOOL isDiffXY() = 0;
virtual BOOL isEnableScaleAnmX() = 0;
virtual BOOL isEnableScaleAnmY() = 0;
virtual BOOL isEnableScaleBySpeedX() = 0;
virtual BOOL isEnableScaleBySpeedY() = 0;
virtual f32 getScaleInTiming() = 0;
virtual f32 getScaleOutTiming() = 0;
virtual f32 getScaleInValueX() = 0;
virtual f32 getScaleInValueY() = 0;
virtual u8 getAnmTypeX() = 0;
virtual u8 getAnmTypeY() = 0;
virtual s16 getAnmCycleX() = 0;
virtual s16 getAnmCycleY() = 0;
virtual f32 getIncreaseRateX() = 0;
virtual f32 getIncreaseRateY() = 0;
virtual f32 getDecreaseRateX() = 0;
virtual f32 getDecreaseRateY() = 0;
virtual u8 getPivotX() = 0;
virtual u8 getPivotY() = 0;
virtual f32 getRandomScale() = 0;
virtual BOOL isEnableAlpha() = 0;
virtual BOOL isEnableSinWave() = 0;
virtual f32 getAlphaInTiming() = 0;
virtual f32 getAlphaOutTiming() = 0;
virtual f32 getAlphaInValue() = 0;
virtual f32 getAlphaBaseValue() = 0;
virtual u8 getAlphaWaveType() = 0;
virtual f32 getAlphaWaveParam1() = 0;
virtual f32 getAlphaWaveParam2() = 0;
virtual f32 getAlphaWaveParam3() = 0;
virtual f32 getAlphaWaveRandom() = 0;
virtual f32 getAlphaIncreaseRate() = 0;
virtual f32 getAlphaDecreaseRate() = 0;
virtual BOOL isEnableRotate() = 0;
virtual f32 getRotateAngle() = 0;
virtual f32 getRotateSpeed() = 0;
virtual f32 getRotateRandomAngle() = 0;
virtual f32 getRotateRandomSpeed() = 0;
virtual f32 getRotateDirection() = 0;
};
class JPAExtraShapeArc : public JPAExtraShape {
public:
JPAExtraShapeArc(const u8*);
virtual ~JPAExtraShapeArc() {}
virtual BOOL isEnableScale() { return (mpData->mFlags & 0x100); }
virtual BOOL isDiffXY() { return (mpData->mFlags & 0x200); }
virtual BOOL isEnableScaleAnmX() { return (mpData->mFlags & 0x800); }
virtual BOOL isEnableScaleAnmY() { return (mpData->mFlags & 0x400); }
virtual BOOL isEnableScaleBySpeedX() { return (mpData->mFlags & 0x2000); }
virtual BOOL isEnableScaleBySpeedY() { return (mpData->mFlags & 0x1000); }
virtual f32 getScaleInTiming() { return mpData->mScaleInTiming; }
virtual f32 getScaleOutTiming() { return mpData->mScaleOutTiming; }
virtual f32 getScaleInValueX() { return mpData->mScaleInValueX; }
virtual f32 getScaleInValueY() { return mpData->mScaleInValueY; }
virtual u8 getAnmTypeX() { return (mpData->mFlags >> 18) & 0x01; }
virtual u8 getAnmTypeY() { return (mpData->mFlags >> 19) & 0x01; }
virtual s16 getAnmCycleX() { return mpData->mAnmCycleX; }
virtual s16 getAnmCycleY() { return mpData->mAnmCycleY; }
virtual f32 getIncreaseRateX() { return mIncreaseRateX; }
virtual f32 getIncreaseRateY() { return mIncreaseRateY; }
virtual f32 getDecreaseRateX() { return mDecreaseRateX; }
virtual f32 getDecreaseRateY() { return mDecreaseRateY; }
virtual u8 getPivotX() { return (mpData->mFlags >> 14) & 0x03; }
virtual u8 getPivotY() { return (mpData->mFlags >> 16) & 0x03; }
virtual f32 getRandomScale() { return mpData->mRandomScale; }
virtual BOOL isEnableAlpha() { return (mpData->mFlags & 0x01); }
virtual BOOL isEnableSinWave() { return (mpData->mFlags & 0x02); }
virtual f32 getAlphaInTiming() { return mpData->mAlphaInTiming; }
virtual f32 getAlphaOutTiming() { return mpData->mAlphaOutTiming; }
virtual f32 getAlphaInValue() { return mpData->mAlphaInValue; }
virtual f32 getAlphaBaseValue() { return mpData->mAlphaBaseValue; }
virtual u8 getAlphaWaveType() { return (mpData->mFlags >> 2) & 0x03; }
virtual f32 getAlphaWaveParam1() { return mpData->mAlphaWaveParam1; }
virtual f32 getAlphaWaveParam2() { return mpData->mAlphaWaveParam2; }
virtual f32 getAlphaWaveParam3() { return mpData->mAlphaWaveParam3; }
virtual f32 getAlphaWaveRandom() { return mpData->mAlphaWaveRandom; }
virtual f32 getAlphaIncreaseRate() { return mAlphaIncreaseRate; }
virtual f32 getAlphaDecreaseRate() { return mAlphaDecreaseRate; }
virtual BOOL isEnableRotate() { return (mpData->mFlags & 0x01000000); }
virtual f32 getRotateAngle() { return mpData->mRotateAngle; }
virtual f32 getRotateSpeed() { return mpData->mRotateSpeed; }
virtual f32 getRotateRandomAngle() { return mpData->mRotateRandomAngle; }
virtual f32 getRotateRandomSpeed() { return mpData->mRotateRandomSpeed; }
virtual f32 getRotateDirection() { return mpData->mRotateDirection; }
public:
/* 0x04 */ const JPAExtraShapeData * mpData;
/* 0x08 */ f32 mAlphaIncreaseRate;
/* 0x0C */ f32 mAlphaDecreaseRate;
/* 0x10 */ f32 mIncreaseRateX;
/* 0x14 */ f32 mDecreaseRateX;
/* 0x18 */ f32 mIncreaseRateY;
/* 0x1C */ f32 mDecreaseRateY;
};
#endif /* JPAEXTRASHAPE_H */