Files
tp/include/Z2AudioLib/Z2WolfHowlMgr.h
T

101 lines
2.7 KiB
C++
Raw Normal View History

2021-03-28 22:49:05 +02:00
#ifndef Z2WOLFHOWLMGR_H
#define Z2WOLFHOWLMGR_H
2022-12-30 16:19:57 -07:00
#include "JSystem/JAudio2/JASGadget.h"
2023-05-12 12:10:14 -07:00
#include "JSystem/JAudio2/JAISoundHandles.h"
2021-03-28 22:49:05 +02:00
2022-06-01 03:49:32 -07:00
/*
* Z2WolfHowlData
* mLineNum: Number of lines/points within the song
* mSongData: u16 array which corresponds to each line/point
2022-06-01 04:23:39 -07:00
*
2022-06-01 03:49:32 -07:00
* The high byte of each u16 line corresponds to bar type (low, middle, high)
* The low byte of each u16 line corresponds to length of note
*/
2023-08-18 10:01:51 +03:00
struct Z2WolfHowlLine {
u8 type;
2023-08-18 10:01:51 +03:00
u8 length;
};
#define HOWL_LINE_HIGH 1
#define HOWL_LINE_MID 2
#define HOWL_LINE_LOW 3
2022-06-01 03:49:32 -07:00
struct Z2WolfHowlData {
u8 lineNum;
Z2WolfHowlLine* lineData;
};
enum Z2WolfHowlCurveID {
Z2WOLFHOWL_NONE = -1,
Z2WOLFHOWL_TOBIKUSA,
Z2WOLFHOWL_UMAKUSA,
Z2WOLFHOWL_ZELDASONG,
Z2WOLFHOWL_HEALINGSONG,
Z2WOLFHOWL_SOULREQUIEM,
Z2WOLFHOWL_LIGHTPRELUDE,
Z2WOLFHOWL_NEWSONG1,
Z2WOLFHOWL_NEWSONG2,
Z2WOLFHOWL_NEWSONG3,
Z2WOLFHOWL_MAX
2022-06-01 03:49:32 -07:00
};
2022-12-30 16:19:57 -07:00
class Z2WolfHowlMgr : public JASGlobalInstance<Z2WolfHowlMgr> {
public:
Z2WolfHowlMgr();
void resetState();
2022-06-01 03:49:32 -07:00
void calcVolumeMod(f32);
2023-08-18 10:01:51 +03:00
f32 getNowPitch();
f32 getNowInputValue();
2022-06-01 03:49:32 -07:00
void calcPitchMod(f32, f32);
s8 startWolfHowlSound(f32, f32 stickValue, bool isHowl, f32);
void setCorrectData(s8 curveID, Z2WolfHowlData* data);
Z2WolfHowlLine getCorrectLine(u8 lineIndex);
2023-08-18 10:01:51 +03:00
u8 getCorrectLineNum();
s8 checkLine();
s8 getOnLineNum();
void startWindStoneSound(s8 curveID, Vec* pos);
int startGuideMelody(bool startSound);
void skipCorrectDemo();
void setCorrectCurve(s8 curveID) { setCorrectData(curveID, NULL); }
u32 getTimer() { return mTimer; }
u8 getReleaseTimer() { return mReleaseTimer; }
2024-01-21 11:15:22 +02:00
u8 getCorrectCurveID() { return mCorrectCurveID; }
private:
/* 0x00 */ JAISoundHandle mWolfHowlHandle;
/* 0x04 */ JAISoundHandle mWindStoneHandle;
/* 0x08 */ JAISoundHandle mGuideHandle;
/* 0x0C */ Z2WolfHowlData* mNowHowlData;
/* 0x10 */ Z2WolfHowlData* mGuideData;
2022-06-01 03:49:32 -07:00
/* 0x14 */ f32 mNowInputValue;
/* 0x18 */ f32 mWolfHowlVolume;
2022-06-01 03:49:32 -07:00
/* 0x1C */ f32 field_0x1c;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ f32 mNowPitch;
2022-06-01 03:49:32 -07:00
/* 0x28 */ f32 field_0x28;
/* 0x2C */ u8 field_0x2c[4];
2022-06-01 03:49:32 -07:00
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
2022-12-30 16:19:57 -07:00
/* 0x38 */ f32 field_0x38[10];
/* 0x60 */ f32 field_0x60[10];
2023-08-18 10:01:51 +03:00
/* 0x88 */ u32 mTimer;
/* 0x8C */ u8 mReleaseTimer;
/* 0x8D */ u8 field_0x8d;
2022-12-30 16:19:57 -07:00
/* 0x8E */ s8 mCorrectCurveID;
/* 0x8F */ u8 field_0x8f;
/* 0x90 */ s16 mCorrectScore;
2022-12-30 16:19:57 -07:00
/* 0x92 */ u16 field_0x92[20];
/* 0xBA */ u8 mNowLineIndex;
2022-12-30 16:19:57 -07:00
/* 0xBB */ s8 field_0xbb;
/* 0xBC */ u8 mNowLineScore;
2023-08-18 10:01:51 +03:00
/* 0xBD */ s8 field_0xbd;
/* 0xBE */ u16 mFullScore;
};
2021-03-28 22:49:05 +02:00
#endif /* Z2WOLFHOWLMGR_H */