1#pragma once
2
3#include <math/seadVector.h>
4
5namespace al {
6class IUseEffectKeeper;
7class IUseAudioKeeper;
8class IUseCamera;
9class PadRumbleDirector;
10class SceneStopCtrl;
11class RadialBlurDirector;
12class PlayerHolder;
13class PadRumbleKeeper;
14class Resource;
15class HitSensor;
16class EffectHitReactionInfo;
17class SeHitReactionInfo;
18
19struct HitReactionInfo {
20 HitReactionInfo();
21
22 const char* reactionName;
23 EffectHitReactionInfo* effectInfo;
24 SeHitReactionInfo* seInfo;
25 const char* padRumbleType;
26 f32 padRumbleDistance;
27 const char* padRumbleName;
28 const char* padWaveRumbleName;
29 f32 padWaveRumbleNearDistance;
30 f32 padWaveRumbleFarDistance;
31 f32 padWaveRumbleVolumeBalance;
32 bool padWaveRumbleIsUseDemo;
33 s32 cameraShakeViewIndex;
34 const char* cameraShakeType;
35 f32 cameraShakeDistance;
36 const char* cameraShakeName;
37 s32 cameraShakeStep;
38 s32 stopSceneFrame;
39 bool isStopSceneForHitEffect;
40 s32 radialBlurFrame;
41 f32 radialBlurRadiusBegin;
42 f32 radialBlurRadiusEnd;
43 f32 radialBlurStrengthBegin;
44 f32 radialBlurStrengthEnd;
45 f32 radialBlurAlphaBegin;
46 f32 radialBlurAlphaEnd;
47 bool radialBlurScreenSpace;
48 sead::Vector2f radialBlurScreenPos;
49};
50
51class HitReactionKeeper {
52public:
53 static HitReactionKeeper* tryCreate(const char*, const sead::Vector3f*, IUseEffectKeeper*,
54 const IUseAudioKeeper*, const IUseCamera*,
55 PadRumbleDirector*, SceneStopCtrl*, RadialBlurDirector*,
56 const PlayerHolder*, const Resource*, const char*);
57 HitReactionKeeper(const char*, const sead::Vector3f*, IUseEffectKeeper*, const IUseAudioKeeper*,
58 const IUseCamera*, PadRumbleDirector*, SceneStopCtrl*, RadialBlurDirector*,
59 const PlayerHolder*, const Resource*, const char*);
60
61 void start(const char*, const sead::Vector3f*, const HitSensor*, const HitSensor*);
62 HitReactionInfo* tryFindReactionInfo(const char*);
63 const HitReactionInfo& tryFindReactionInfo(const char*) const;
64
65private:
66 const sead::Vector3f* mTrans;
67 IUseEffectKeeper* mEffectKeeper;
68 const IUseAudioKeeper* mAudioKeeper;
69 const IUseCamera* mCamera;
70 PadRumbleDirector* mRumbleDirector;
71 SceneStopCtrl* mSceneStopCtrl;
72 RadialBlurDirector* mRadialBlurDirector;
73 const PlayerHolder* mPlayerHolder;
74 s32 mNumReactions;
75 HitReactionInfo* mReactions;
76 PadRumbleKeeper* mRumbleKeeper;
77};
78
79} // namespace al
80