1#pragma once
2
3#include "Player/PlayerActorBase.h"
4#include "Util/IUseDimension.h"
5
6namespace al {
7class FootPrintHolder;
8class HitSensor;
9class WaterSurfaceFinder;
10} // namespace al
11
12class ComboCounter;
13class PlayerInfo;
14class PlayerConst;
15class PlayerInput;
16class PlayerTrigger;
17class HackCap;
18class ActorDimensionKeeper;
19class PlayerModelHolder;
20class PlayerModelChangerHakoniwa;
21class PlayerAnimator;
22class PlayerColliderHakoniwa;
23class PlayerPuppet;
24class PlayerAreaChecker;
25class PlayerOxygen;
26class PlayerDamageKeeper;
27class PlayerDemoActionFlag;
28class PlayerCapActionHistory;
29class PlayerCapManHeroEyesControl;
30class PlayerContinuousJump;
31class PlayerContinuousLongJump;
32class PlayerCounterAfterUpperPunch;
33class PlayerCounterForceRun;
34class PlayerCounterIceWater;
35class PlayerCounterQuickTurnJump;
36class PlayerWallActionHistory;
37class PlayerBindKeeper;
38class PlayerCarryKeeper;
39class PlayerEquipmentUser;
40class PlayerHackKeeper;
41class PlayerFormSensorCollisionArranger;
42class PlayerJumpMessageRequest;
43class PlayerSandSinkAffect;
44class PlayerSpinCapAttack;
45class PlayerActionDiveInWater;
46class PlayerEffect;
47class PlayerEyeSensorHitHolder;
48class PlayerPushReceiver;
49class PlayerHitPush;
50class PlayerExternalVelocity;
51class PlayerJointControlKeeper;
52class PlayerPainPartsKeeper;
53class PlayerRecoverySafetyPoint;
54class PlayerRippleGenerator;
55class PlayerSeparateCapFlag;
56class PlayerWetControl;
57class PlayerStainControl;
58class GaugeAir;
59class WaterSurfaceShadow;
60class WorldEndBorderKeeper;
61class PlayerSeCtrl;
62
63class PlayerStateWait;
64class PlayerStateSquat;
65class PlayerStateRunHakoniwa2D3D;
66class PlayerStateSlope;
67class PlayerStateRolling;
68class PlayerStateSpinCap;
69class PlayerStateJump;
70class PlayerStateCapCatchPop;
71class PlayerStateWallAir;
72class PlayerStateWallCatch;
73class PlayerStateGrabCeil;
74class PlayerStatePoleClimb;
75class PlayerStateHipDrop;
76class PlayerStateHeadSliding;
77class PlayerStateLongJump;
78class PlayerStateFallHakoniwa;
79class PlayerStateSandSink;
80class ActorStateSandGeyser;
81class PlayerStateRise;
82class PlayerStateSwim;
83class PlayerStateDamageLife;
84class PlayerStateDamageSwim;
85class PlayerStateDamageFire;
86class PlayerStatePress;
87class PlayerStateBind;
88class PlayerStateHack;
89class PlayerStateEndHack;
90class PlayerStateCameraSubjective;
91class PlayerStateAbyss;
92
93class PlayerJudgeAirForceCount;
94class PlayerJudgeCameraSubjective;
95class PlayerJudgeCapCatchPop;
96class PlayerJudgeDeadWipeStart;
97class PlayerJudgeDirectRolling;
98class PlayerJudgeEnableStandUp;
99class PlayerJudgeForceLand;
100class PlayerJudgeForceSlopeSlide;
101class PlayerJudgeForceRolling;
102class PlayerJudgeGrabCeil;
103class PlayerJudgeInWater;
104class PlayerJudgeInWater;
105class PlayerJudgeInWater;
106class PlayerJudgeInWater;
107class PlayerJudgeInvalidateInputFall;
108class PlayerJudgeLongFall;
109class PlayerJudgeOutInWater;
110class PlayerJudgeRecoveryLifeFast;
111class PlayerJudgeSandSink;
112class PlayerJudgeSpeedCheckFall;
113class PlayerJudgeStartHipDrop;
114class PlayerJudgeStartRise;
115class PlayerJudgeStartRolling;
116class PlayerJudgeStartRun;
117class PlayerJudgeStartSquat;
118class PlayerJudgeStartWaterSurfaceRun;
119class PlayerJudgeSlopeSlide;
120class PlayerJudgePoleClimb;
121class PlayerJudgePreInputJump;
122class PlayerJudgePreInputCapThrow;
123class PlayerJudgePreInputHackAction;
124class HackCapJudgePreInputHoveringJump;
125class HackCapJudgePreInputSeparateThrow;
126class HackCapJudgePreInputSeparateJump;
127class PlayerJudgeWallCatch;
128class PlayerJudgeWallCatchInputDir;
129class PlayerJudgeWallHitDown;
130class PlayerJudgeWallHitDownForceRun;
131class PlayerJudgeWallHitDownRolling;
132class PlayerJudgeWallKeep;
133
134class PlayerActorHakoniwa : public PlayerActorBase, public IUseDimension {
135public:
136 PlayerActorHakoniwa(const char*);
137 void initAfterPlacement() override;
138 void movement() override;
139 void attackSensor(al::HitSensor* self, al::HitSensor* other) override;
140 bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
141 al::HitSensor* self) override;
142 void control() override;
143 void updateCollider() override;
144 void initPlayer(const al::ActorInitInfo&, const PlayerInitInfo&) override;
145 u32 getPortNo() const override;
146 IUsePlayerCollision* getPlayerCollision() const override;
147 PlayerHackKeeper* getPlayerHackKeeper() const override;
148 bool isEnableDemo() override;
149 void startDemo() override;
150 void endDemo() override;
151 void startDemoPuppetable() override;
152 void endDemoPuppetable() override;
153 void startDemoShineGet() override;
154 void endDemoShineGet() override;
155 void startDemoMainShineGet() override;
156 void endDemoMainShineGet() override;
157 void startDemoHack() override;
158 void endDemoHack() override;
159 void startDemoKeepBind() override;
160 void noticeDemoKeepBindExecute() override;
161 void endDemoKeepBind() override;
162 void startDemoKeepCarry() override;
163 void endDemoKeepCarry() override;
164 al::DemoActor* getDemoActor() override;
165 PlayerAnimator* getDemoAnimator() override;
166 bool isDamageStopDemo() const override;
167 PlayerPuppet* getPlayerPuppet() override;
168 PlayerInfo* getPlayerInfo() const override;
169 bool checkDeathArea() override;
170 void sendCollisionMsg() override;
171 bool receivePushMsg(const al::SensorMsg*, al::HitSensor*, al::HitSensor*, f32) override;
172 ActorDimensionKeeper* getActorDimensionKeeper() const override;
173
174 void updateModelShadowDropLength();
175 void executeAfterCapTarget();
176 void syncSensorAndCollision();
177 void checkDamageFromCollision();
178 void executePreMovementNerveChange();
179 void updateCarry();
180 void setNerveOnGround();
181 void startPlayerPuppet();
182 void cancelHackPlayerPuppetDemo();
183 void endPlayerPuppet();
184 void exeWait();
185 bool tryActionCapReturn();
186 bool tryActionCapSpinAttack();
187 void exeSquat();
188 bool tryActionSeparateCapThrow();
189 void exeRun();
190 void exeSlope();
191 void exeRolling();
192 void exeSpinCap();
193 bool tryChangeNerveFromAir();
194 bool tryActionCapSpinAttackMiss();
195 void exeJump();
196 void exeCapCatchPop();
197 void exeWallAir();
198 void exeWallCatch();
199 void exeGrabCeil();
200 void exePoleClimb();
201 void exeHipDrop();
202 void exeHeadSliding();
203 void exeLongJump();
204 void exeFall();
205 void exeSandSink();
206 void exeSandGeyser();
207 void exeRise();
208 void exeSwim();
209 void exeDamage();
210 void exeDamageSwim();
211 void exeDamageFire();
212 void exePress();
213 void exeHack();
214 void exeEndHack();
215 void exeBind();
216 bool tryActionCapSpinAttackBindEnd();
217 void exeDemo();
218 void exeCamera();
219 void exeAbyss();
220 void exeDead();
221 bool tryActionCapSpinAttackImpl(bool);
222
223private:
224 PlayerInfo* mInfo;
225 PlayerConst* mConst;
226 PlayerInput* mInput;
227 PlayerTrigger* mTrigger;
228 HackCap* mHackCap;
229 ActorDimensionKeeper* mDimensionKeeper;
230 PlayerModelHolder* mModelHolder;
231 PlayerModelChangerHakoniwa* mModelChanger;
232 PlayerAnimator* mAnimator;
233 PlayerColliderHakoniwa* mCollider;
234 PlayerPuppet* mPuppet;
235 PlayerAreaChecker* mAreaChecker;
236 al::WaterSurfaceFinder* mWaterSurfaceFinder;
237 PlayerOxygen* mOxygen;
238 PlayerDamageKeeper* mDamageKeeper;
239 PlayerDemoActionFlag* mDemoActionFlag;
240 PlayerCapActionHistory* mCapActionHistory;
241 PlayerCapManHeroEyesControl* mCapManHeroEyesControl;
242 PlayerContinuousJump* mContinuousJump;
243 PlayerContinuousLongJump* mContinuousLongJump;
244 PlayerCounterAfterUpperPunch* mCounterAfterUpperPunch;
245 PlayerCounterForceRun* mCounterForceRun;
246 PlayerCounterIceWater* mCounterIceWater;
247 PlayerCounterQuickTurnJump* mCounterQuickTurnJump;
248 PlayerWallActionHistory* mWallActionHistory;
249 PlayerBindKeeper* mBindKeeper;
250 PlayerCarryKeeper* mCarryKeeper;
251 PlayerEquipmentUser* mEquipmentUser;
252 PlayerHackKeeper* mHackKeeper;
253 PlayerFormSensorCollisionArranger* mFormSensorCollisionArranger;
254 PlayerJumpMessageRequest* mJumpMessageRequest;
255 PlayerSandSinkAffect* mSandSinkAffect;
256 PlayerSpinCapAttack* mSpinCapAttack;
257 PlayerActionDiveInWater* mActionDiveInWater;
258 PlayerEffect* mEffect;
259 PlayerEyeSensorHitHolder* mEyeSensorHitHolder;
260 PlayerPushReceiver* mPushReceiver;
261 PlayerHitPush* mHitPush;
262 PlayerExternalVelocity* mExternalVelocity;
263 PlayerJointControlKeeper* mJointControlKeeper;
264 PlayerPainPartsKeeper* mPainPartsKeeper;
265 PlayerRecoverySafetyPoint* mRecoverySafetyPoint;
266 PlayerRippleGenerator* mRippleGenerator;
267 PlayerSeparateCapFlag* mSeparateCapFlag;
268 PlayerWetControl* mWetControl;
269 PlayerStainControl* mStainControl;
270 al::FootPrintHolder* mFootPrintHolder;
271 GaugeAir* mGaugeAir;
272 WaterSurfaceShadow* mWaterSurfaceShadow;
273 WorldEndBorderKeeper* mWorldEndBorderKeeper;
274 ComboCounter* mComboCounter;
275 PlayerSeCtrl* mSeCtrl;
276 al::HitSensor* mBodyHitSensor;
277 bool mIsLongShadow;
278 PlayerStateWait* mStateWait;
279 PlayerStateSquat* mStateSquat;
280 PlayerStateRunHakoniwa2D3D* mStateRunHakoniwa2D3D;
281 PlayerStateSlope* mStateSlope;
282 PlayerStateRolling* mStateRolling;
283 PlayerStateSpinCap* mStateSpinCap;
284 PlayerStateJump* mStateJump;
285 PlayerStateCapCatchPop* mStateCapCatchPop;
286 PlayerStateWallAir* mStateWallAir;
287 PlayerStateWallCatch* mStateWallCatch;
288 PlayerStateGrabCeil* mStateGrabCeil;
289 PlayerStatePoleClimb* mStatePoleClimb;
290 PlayerStateHipDrop* mStateHipDrop;
291 PlayerStateHeadSliding* mStateHeadSliding;
292 PlayerStateLongJump* mStateLongJump;
293 PlayerStateFallHakoniwa* mStateFallHakoniwa;
294 PlayerStateSandSink* mStateSandSink;
295 ActorStateSandGeyser* mActorStateSandGeyser;
296 PlayerStateRise* mStateRise;
297 PlayerStateSwim* mStateSwim;
298 PlayerStateDamageLife* mStateDamageLife;
299 PlayerStateDamageSwim* mStateDamageSwim;
300 PlayerStateDamageFire* mStateDamageFire;
301 PlayerStatePress* mStatePress;
302 PlayerStateBind* mStateBind;
303 PlayerStateHack* mStateHack;
304 PlayerStateEndHack* mStateEndHack;
305 PlayerStateCameraSubjective* mStateCameraSubjective;
306 PlayerStateAbyss* mStateAbyss;
307 PlayerJudgeAirForceCount* mJudgeAirForceCount;
308 PlayerJudgeCameraSubjective* mJudgeCameraSubjective;
309 PlayerJudgeCapCatchPop* mJudgeCapCatchPop;
310 PlayerJudgeDeadWipeStart* mJudgeDeadWipeStart;
311 PlayerJudgeDirectRolling* mJudgeDirectRolling;
312 PlayerJudgeEnableStandUp* mJudgeEnableStandUp;
313 PlayerJudgeForceLand* mJudgeForceLand;
314 PlayerJudgeForceSlopeSlide* mJudgeForceSlopeSlide;
315 PlayerJudgeForceRolling* mJudgeForceRolling;
316 PlayerJudgeGrabCeil* mJudgeGrabCeil;
317 PlayerJudgeInWater* mJudgeInWater[4];
318 PlayerJudgeInvalidateInputFall* mJudgeInvalidateInputFall;
319 PlayerJudgeLongFall* mJudgeLongFall;
320 PlayerJudgeOutInWater* mJudgeOutInWater;
321 PlayerJudgeRecoveryLifeFast* mJudgeRecoveryLifeFast;
322 PlayerJudgeSandSink* mJudgeSandSink;
323 PlayerJudgeSpeedCheckFall* mJudgeSpeedCheckFall;
324 PlayerJudgeStartHipDrop* mJudgeStartHipDrop;
325 PlayerJudgeStartRise* mJudgeStartRise;
326 PlayerJudgeStartRolling* mJudgeStartRolling;
327 PlayerJudgeStartRun* mJudgeStartRun;
328 PlayerJudgeStartSquat* mJudgeStartSquat;
329 PlayerJudgeStartWaterSurfaceRun* mJudgeStartWaterSurfaceRun;
330 PlayerJudgeSlopeSlide* mJudgeSlopeSlide;
331 PlayerJudgePoleClimb* mJudgePoleClimb;
332 PlayerJudgePreInputJump* mJudgePreInputJump;
333 PlayerJudgePreInputCapThrow* mJudgePreInputCapThrow;
334 PlayerJudgePreInputHackAction* mJudgePreInputHackAction;
335 HackCapJudgePreInputHoveringJump* mHackCapJudgePreInputHoveringJump;
336 HackCapJudgePreInputSeparateThrow* mHackCapJudgePreInputSeparateThrow;
337 HackCapJudgePreInputSeparateJump* mHackCapJudgePreInputSeparateJump;
338 PlayerJudgeWallCatch* mJudgeWallCatch;
339 PlayerJudgeWallCatchInputDir* mJudgeWallCatchInputDir;
340 PlayerJudgeWallHitDown* mJudgeWallHitDown;
341 PlayerJudgeWallHitDownForceRun* mJudgeWallHitDownForceRun;
342 PlayerJudgeWallHitDownRolling* mJudgeWallHitDownRolling;
343 PlayerJudgeWallKeep* mJudgeWallKeep;
344 bool mIsReduceOxygen;
345};
346