1#pragma once
2
3#include <math/seadVector.h>
4
5namespace al {
6class PlayerHolder;
7class CameraDirector;
8class WaveVibrationHolder;
9struct PadRumbleParam;
10class PadRumbleKeeper;
11class LiveActor;
12
13class PadRumbleDirector {
14public:
15 PadRumbleDirector(const PlayerHolder*, const CameraDirector*);
16
17 void setWaveVibrationHolder(WaveVibrationHolder*);
18 void update();
19 void updateInfoListAll();
20 void startRumble(const char*, const sead::Vector3f&, const PadRumbleParam&, s32);
21 void* findDeadInfoOneTime(); // unknown return type
22 void startRumbleNo3D(const char*, const PadRumbleParam&, s32);
23 void stopPadRumbleOneTime(const char*, s32);
24 void startRumbleLoop(const char*, const sead::Vector3f*, const PadRumbleParam&, s32);
25 void* findDeadInfo(); // unknown return type
26 void startRumbleLoopNo3D(const char*, const sead::Vector3f*, const PadRumbleParam&, s32);
27 void stopRumbleLoop(const char*, const sead::Vector3f*, s32);
28 void* findInfo(const char*, const sead::Vector3f*, s32); // unknown return type
29 bool checkIsAliveRumbleLoop(const char*, const sead::Vector3f*, s32);
30 void stopAllRumble();
31 void clearAllInfoList();
32 void pause();
33 void endPause();
34 void changeRumbleLoopVolume(const char*, const sead::Vector3f*, f32, f32, s32);
35 void updateInfoListLoop();
36 void changeRumbleLoopPitch(const char*, const sead::Vector3f*, f32, f32, s32);
37 void startRumbleWithVolume(const char*, f32, f32, s32);
38 void startRumbleDirectValue(f32, f32, f32, f32, f32, f32, s32);
39 void stopRumbleDirectValue(s32);
40 void updateInfoListOneTime();
41 void testStartPadRumbleWithVolumeNoActor(const char*, f32, f32);
42
43 void validatePadRumble() { mIsValidPadRumble = true; }
44
45 void invalidatePadRumble() { mIsValidPadRumble = false; }
46
47 void setPowerLevel(s32 powerLevel) { mPowerLevel = powerLevel; }
48
49private:
50 WaveVibrationHolder* mWaveVibrationHolder;
51 PlayerHolder* mPlayerHolder;
52 CameraDirector* mCameraDirector;
53 void* filler[4];
54 bool mIsValidPadRumble;
55 bool mIsPaused;
56 s32 mPowerLevel;
57 void* filler2[6];
58};
59
60PadRumbleKeeper* createPadRumbleKeeper(const LiveActor*, s32);
61
62} // namespace al
63