NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
d_a_player.hpp
1#pragma once
2#include <game/bases/d_a_player_base.hpp>
3#include <game/bases/d_a_player_hio.hpp>
4#include <game/bases/d_player_orchestra.hpp>
5#include <game/bases/d_propel_parts.hpp>
6#include <game/bases/d_pc.hpp>
7
8class daYoshi_c;
9
10/**
11 * @brief The player class for Mario, Luigi and the Toads.
12 * @statetable
13 */
14class dAcPy_c : public daPlBase_c {
15public:
16 /// @unofficial
18 SPIN_HIP_ATTACK_ACTION_0,
19 SPIN_HIP_ATTACK_ACTION_1
20 };
21
22 /// @unofficial
24 FALL_ACTION_0,
25 FALL_ACTION_1
26 };
27
28 /// @unofficial
30 JUMP_TAKE_OFF,
31 JUMP_AIR
32 };
33
34 /// @unofficial
36 LAND_ACTION_0,
37 LAND_ACTION_1
38 };
39
40 /// @unofficial
42 SPIN_JUMP_ACTION_0,
43 SPIN_JUMP_ACTION_1
44 };
45
46 /// @unofficial
48 SIT_JUMP_ACTION_0,
49 SIT_JUMP_ACTION_1
50 };
51
52 /// @unofficial
54 CANNON_JUMP_ACTION_0,
55 CANNON_JUMP_ACTION_1,
56 CANNON_JUMP_ACTION_2
57 };
58
59 /// @unofficial
61 BLOCK_JUMP_ACTION_0,
62 BLOCK_JUMP_ACTION_1
63 };
64
65 /// @unofficial
67 ROLL_SLIP_ACTION_0,
68 ROLL_SLIP_ACTION_1,
69 ROLL_SLIP_ACTION_2
70 };
71
72 /// @unofficial
74 PENGUIN_SLIDE_ACTION_0,
75 PENGUIN_SLIDE_ACTION_1,
76 PENGUIN_SLIDE_ACTION_2
77 };
78
79 /// @unofficial
81 CROUCH_GROUND,
82 CROUCH_WATER
83 };
84
85 /// @unofficial
87 THROW_ACTION_0,
88 THROW_ACTION_1,
89 THROW_ACTION_2
90 };
91
92 /// @unofficial
94 SWIM_ACTION_0,
95 SWIM_ACTION_1,
96 SWIM_ACTION_2,
97 SWIM_ACTION_3
98 };
99
100 /// @unofficial
102 VINE_ACTION_IVY,
103 VINE_ACTION_NET,
104 VINE_ACTION_ATTACK,
105 VINE_ACTION_ROLL
106 };
107
108 /// @unofficial
110 HANG_ACTION_START,
111 HANG_ACTION_WAIT,
112 HANG_ACTION_MOVE
113 };
114
115 /// @unofficial
117 KANI_ACTION_WALK,
118 KANI_ACTION_HANG_INIT,
119 KANI_ACTION_JUMP_HANG_INIT,
120 KANI_ACTION_HANG,
121 KANI_ACTION_HANG_FALL,
122 KANI_ACTION_HANG_UP,
123 KANI_ACTION_HANG_UP_VINE
124 };
125
126 /// @unofficial
128 ROPE_SWING_0,
129 ROPE_SWING_1,
130 ROPE_SWING_2,
131 ROPE_SWING_3,
132 ROPE_SWING_4,
133 ROPE_SWING_5,
134 ROPE_SWING_6,
135 ROPE_SWING_7,
136 ROPE_SWING_8,
137 ROPE_SWING_9,
138 ROPE_SWING_10
139 };
140
141 /// @unofficial
143 DEMO_OUT_DOOR_OPEN_DOOR,
144 DEMO_OUT_DOOR_MOVE_CENTER,
145 DEMO_OUT_DOOR_MOVE_INTER,
146 DEMO_OUT_DOOR_WAIT_CLOSE,
147 DEMO_OUT_DOOR_WAIT_ENTER,
148 DEMO_OUT_DOOR_FINISHED
149 };
150
151 enum QuakeMode_e {
152 QUAKE_MODE_0
153 };
154
156 float f1, f2, mSandSinkRate, f4, f5, f6, f7, f8;
157 mVec3_c mPos[3];
158 float mThrowSpeed1;
159 float mThrowSpeed2;
160 float mThrowSpeedMax;
161 float mSpitRelated[4];
162 float mVineSpeedRelated[4];
163 float mKaniSpeedRelated[4];
164 };
165
166 dAcPy_c();
167 virtual ~dAcPy_c();
168
169 virtual int create();
170 virtual int preExecute();
171 virtual void postExecute(MAIN_STATE_e status);
172 virtual int doDelete();
173 virtual int draw();
174
175 virtual bool isSpinLiftUpEnable();
176 virtual void setSpinLiftUpActor(dActor_c *carryingActor);
177
178 virtual void setEatTongue(dActor_c *eatingActor);
179 virtual void setEatTongueOff(dActor_c *eatingActor);
180 virtual void setEatMouth(dActor_c *eatingActor);
181 virtual bool setEatSpitOut(dActor_c *eatingActor);
182 virtual void eatMove(dActor_c *eatingActor);
183
184 virtual void executeMain();
185 virtual void executeLastPlayer();
186 virtual void executeLastAll();
187 virtual bool isItemKinopio() { return mIsRescueKinopio; }
188 virtual void setPowerup(PLAYER_POWERUP_e, int);
189 virtual u8 getTallType(s8);
190 virtual const sBcPointData *getHeadBgPointData() { return &getBgPointData()->mHead; }
191 virtual const sBcPointData *getWallBgPointData() { return &getBgPointData()->mWall; }
192 virtual const sBcPointData *getFootBgPointData() { return &getBgPointData()->mFoot; }
193 virtual float getStandHeadBgPointY();
194 virtual void checkBgCrossSub();
195 virtual void postBgCross();
196 virtual float getSandSinkRate();
197 virtual bool setPressBgDamage(int, int);
198 virtual bool setBalloonInDispOut(int);
199 virtual bool isChange();
200 virtual bool isEnableDokanInStatus();
201 virtual bool setHideNotGoalPlayer();
202 virtual int setDemoGoal(mVec3_c &landPos, float goalCastleX, u8 goalType);
203 virtual bool setDemoCannonWarp(int, short, short);
204
205 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, DemoStartWait);
206 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, DemoDown);
207
208 virtual void initialDoor();
209 virtual void initialVine();
210 virtual void initialJumpRight();
211 virtual void initialJumpLeft();
212 virtual void initialSwim();
213 virtual void initialBlockJump();
214 virtual void initialBlockJumpBelow();
215
216 virtual void setCreateAction(int);
217 virtual bool setTimeOverDemo();
218 virtual void setFallDownDemo();
219 virtual bool setDokanIn(DokanDir_e dir);
220 virtual void initDemoOutDokan();
221 virtual bool updateDemoKimePose(ClearType_e clearType);
222 virtual void initDemoGoalBase();
223 virtual void executeDemoGoal_Run();
224 virtual void initializeDemoControl();
225
226 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, Walk);
227 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, Jump);
228 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, Fall);
229 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, Land);
230 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, Crouch);
231 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, SitJump);
232 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, Slip);
233 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, Turn);
234 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, HipAttack);
235 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, Swim);
236 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, Kani);
237 STATE_VIRTUAL_FUNC_DECLARE(dAcPy_c, Cloud);
238
239 virtual bool isWaitFrameCountMax();
240 virtual bool checkWalkNextAction();
241 virtual void setWaitActionAnm(AnmBlend_e);
242 virtual void setWalkActionAnm(AnmBlend_e);
243 virtual void walkActionInit_Wait(AnmBlend_e);
244 virtual void walkAction_Wait();
245 virtual void walkActionInit_Move(AnmBlend_e);
246 virtual void walkAction_Move();
247 virtual bool checkCrouch();
248 virtual bool setCancelCrouch();
249 virtual void setSlipAction();
250 virtual void slipActionMove(int);
251 virtual void setHipAttack_AttackStart();
252
253 virtual float getCloudOffsetY();
254 virtual bool setRideJrCrown(const dActor_c *);
255 virtual bool isRideJrCrownOwn(const dActor_c *);
256 virtual void setRideJrCrownMtx(const mMtx_c *);
257 virtual void setRideJrCrownAnm(int);
258
259 virtual const mVec3_c *getHeadTopPosP();
260 virtual const float *getGravityData();
261 virtual bool isCarry() const { return mCarryActorID != BASE_ID_NULL; }
262 virtual bool isLiftUp();
263 virtual bool isLiftUpExceptMame();
264
265 virtual void setStar(daPlBase_c::StarSet_e, int);
266 virtual void endStar();
267 virtual void setVirusStar(daPlBase_c *);
268
269 virtual bool isNoDamage();
270 virtual bool setDamage(dActor_c *, DamageType_e);
271 virtual bool setForcedDamage(dActor_c *, DamageType_e);
272 virtual bool setJump(float jumpSpeed, float speedF, bool allowSteer, int keyMode, int jumpMode);
273 virtual bool _setJump(float jumpSpeed, float speedF, bool allowSteer, int keyMode, int jumpMode);
274
275 virtual bool setHipAttackOnEnemy(mVec3_c *hitPos);
276
277 virtual void clearJumpActionInfo(int);
278 virtual bool setSwimSpeed(float speedY, float speedF);
279
280 virtual void set1UpKinokoEffect();
281 virtual void setFlagGetEffect();
282 virtual void setHipAttackEffect();
283
284 virtual void startQuakeShock(dQuake_c::TYPE_SHOCK_e);
285 virtual void startPatternRumble(const char *pattern);
286
287 virtual bool setDamage2(dActor_c *, daPlBase_c::DamageType_e);
288
289 virtual bool isCarryMamePlayer();
290
291 STATE_FUNC_DECLARE(dAcPy_c, RideOffJump);
292 STATE_FUNC_DECLARE(dAcPy_c, SpinHipAttack);
293 STATE_FUNC_DECLARE(dAcPy_c, RollSlip); ///< Flying through the air after being thrown by another player.
294 STATE_FUNC_DECLARE(dAcPy_c, Vine);
295 STATE_FUNC_DECLARE(dAcPy_c, Hang);
296 STATE_FUNC_DECLARE(dAcPy_c, Pole);
297 STATE_FUNC_DECLARE(dAcPy_c, Fire);
298 STATE_FUNC_DECLARE(dAcPy_c, LiftUp); ///< Lifting up another player.
299 STATE_FUNC_DECLARE(dAcPy_c, Throw);
300 STATE_FUNC_DECLARE(dAcPy_c, PropelThrow);
301 STATE_FUNC_DECLARE(dAcPy_c, WallJump);
302 STATE_FUNC_DECLARE(dAcPy_c, WallSlide);
303 STATE_FUNC_DECLARE(dAcPy_c, Propel);
304 STATE_FUNC_DECLARE(dAcPy_c, CarryPlayer); ///< Being carried by another player.
305 STATE_FUNC_DECLARE(dAcPy_c, RideYoshi);
306 STATE_FUNC_DECLARE(dAcPy_c, SpinJump);
307 STATE_FUNC_DECLARE(dAcPy_c, PenguinSlide);
308 STATE_FUNC_DECLARE(dAcPy_c, KaniJump);
309 STATE_FUNC_DECLARE(dAcPy_c, Quake);
310 STATE_FUNC_DECLARE(dAcPy_c, ElecShock);
311 STATE_FUNC_DECLARE(dAcPy_c, FlyDamage);
312 STATE_FUNC_DECLARE(dAcPy_c, IceDamage);
313 STATE_FUNC_DECLARE(dAcPy_c, CannonJump);
314 STATE_FUNC_DECLARE(dAcPy_c, TarzanRope);
315 STATE_FUNC_DECLARE(dAcPy_c, PlayerEat);
316 STATE_FUNC_DECLARE(dAcPy_c, Balloon);
317 STATE_FUNC_DECLARE(dAcPy_c, BlockJump); ///< Rescue Toad jumping out of his block.
318 STATE_FUNC_DECLARE(dAcPy_c, JrCrown);
319 STATE_FUNC_DECLARE(dAcPy_c, DemoInDoor);
320 STATE_FUNC_DECLARE(dAcPy_c, DemoInJump);
321 STATE_FUNC_DECLARE(dAcPy_c, DemoInVine);
322 STATE_FUNC_DECLARE(dAcPy_c, DemoOutDoor);
323 STATE_FUNC_DECLARE(dAcPy_c, DemoFallDown);
324 STATE_FUNC_DECLARE(dAcPy_c, DemoFireDown);
325 STATE_FUNC_DECLARE(dAcPy_c, DemoEatDie);
326 STATE_FUNC_DECLARE(dAcPy_c, DemoDokanCannon);
327 STATE_FUNC_DECLARE(dAcPy_c, DemoCannonWarp);
328
329 void setSeaLandSmokeEffect();
330 bool setHipAttackAction();
331 void setWaterInEffect();
332 void setSpinHipAttackEffect();
333 void setScrollMode(s8);
334 dActor_c *getCarryPropelActor();
335 void setPropelSpinSmokeEffect();
336 void setWaterWalkFlag();
337 bool setKaniActionInitHangHand();
338 bool jump_common();
339 void _jumpSet(jmpInf_c *);
340 void calcJumpCount();
341 float getJumpSpeed();
342 void setJumpSpeed();
343 void fn_80127740(int jumpType, AnmBlend_e blendMode); ///< Jump animation set, some enum as first param @unofficial
344 void fn_80145fd0(int jumpType); ///< Jump voice, some enum as param @unofficial
345 bool checkCarryThrow();
346 void jumpExeTakeOff();
347 void jumpExecAir();
348 void fn_801282d0(AnmBlend_e blendMode); ///< @unofficial
349 bool spinLiftUp(dActor_c *, bool); ///< @unofficial
350 void setJumpCommonBase();
351 dAcPy_c *getCarryPlayer();
352 bool isIceSlipAnmPlay();
353 int checkWallSlideEnable(int);
354 bool checkWallJump();
355 void setWallSlideEffect();
356 void setSpinHoldReq(float targetX);
357 bool setSpinSpeed(float, float);
358 void setSpinJumpEffect(int);
359 void endSpinJumpEffect();
360 void setSpinJumpEffectSub(int);
361 void setMissSpinJumpEffect(int);
362 void initRideSpinMove();
363 void setSpinFireBall();
364 void endRideSpinMove();
365 bool isMissSpinEnableAnm();
366 s16 getMissSpinAngle();
367 void setMissSpin();
368 void resetMissSpin();
369 void updateMissSpin();
370 void setKaniMoveSpeed(bool);
371 void setCrouchSmokeEffect();
372 void setSlipSE();
373 void setSlipEffect();
374 void releaseCarryActor();
375 void setInvalidKeyTimer(int, int);
376 void setInvalidKeyTimer_LR(int, int);
377 bool checkPenguinSlideJump();
378 void setPenguinSlideEffect();
379 void setPenguinSlideLandEffect();
380 void setNormalWalkAnm(AnmBlend_e, float);
381 void setRunOnWaterEffect();
382 void turnPowerSet();
383 void setTurnSmokeEffect();
384 void CrouchActionGround();
385 void CrouchActionWater();
386 void setWaterGroundJump();
387 dActor_c *getCarryPropelBlock();
388 dActor_c *getCarryHardBlock();
389 float getLiftUpOffset();
390 mVec3_c getLiftUpPos();
391 void clearSpinLiftUpReserve();
392 void checkSpinLiftUpReserve(dCc_c *cc);
393 void setSpinLiftUpReserve();
394 void checkSpinLiftUpRoofHeight();
395 void setCarryOffFall(const dAcPy_c *player);
396 bool checkEnableThrow();
397 void initializeThrowCommonBase();
398 void initializeThrowCommon();
399 void finalizeThrowCommonBase();
400 void finalizeThrowCommon();
401 void setThrowActor();
402 const sBcPlayerPointData *getBgPointData();
403 void setBcData(int);
404 void executeThrowCommon();
405 void setWaterMoveSpeed();
406 void calcUzuSwimSpeed(float, float, float *); ///< @unofficial
407 void setUzuSpeedY(float f);
408 void setUzuSpeedF(float f);
409 bool setUzuSwimAction();
410 bool setSwimAction();
411 void setWaterOutEffect();
412 void setPaddleSwimEffect();
413 void resetPaddleSwimEffect();
414 void setWaterSurfaceSwimEffect();
415 void setFlutterKickEffect();
416 void setInitSwimAction_FireBall();
417 const sBcPlayerPointData *getBgPointData_Powerup(PLAYER_POWERUP_e, int); ///< @unofficial
418 bool setWaterSurfaceJump();
419 void createFireBall(int);
420 void SwimAction_Swim();
421 void setSwimAction_Swim(AnmBlend_e blendMode);
422 void setSwimAction_Walk(AnmBlend_e blendMode);
423 void setSwimAction_Penguin(AnmBlend_e blendMode);
424 void setSwimActionWalkAnm();
425 void SwimAction_Walk();
426 s16 getPenguinSwinAngleX();
427 void setPenWaterMoveSpeed(int i);
428 bool setPenguinPaddleSwim();
429 void SwimAction_Penguin();
430 void setSwimAction_FireBall();
431 void SwimAction_FireBall();
432 bool checkSetFireBall();
433 void calcPenguinSwimGroundRev();
434 void setIvyHangEffect();
435 bool setVineAction();
436 float getHangBcOffsetY();
437 bool setKaniHangToVineAction();
438 bool setVineToKaniHangAction();
439 void calcVineSpeed();
440 bool checkVineEnd();
441 void setVineWalkSE();
442 void VineActionIvy();
443 bool setRideOffPlayerJump(float, float);
444 void VineActionNet();
445 void VineActionAttack();
446 void VineActionRoll();
447 bool checkNetPunch();
448
449 bool setAmiRollAction(mVec3_c *);
450 bool isAmiRollAction();
451 void setAmiRollPos(short, float);
452 void setAmiRollPos(short, float, mVec3_c &);
453 void endAmiRollAction(short ang);
454
455 void setCarryPlayerHang(float height);
456 bool setHangAction();
457 void HangActionStart();
458 void setHangActionWait();
459 void HangActionWait();
460 void setHangActionMove();
461 void HangActionMove();
462
463 void setPoleTurnAngle();
464 bool setPoleAction();
465 void PoleActionStart();
466 void setPoleActionWait();
467 void PoleActionWait();
468 void setPoleActionUp();
469 void PoleActionUp();
470 void setPoleActionDown();
471 void PoleActionDown();
472 void setPoleJump();
473 bool setPoleShakeJump();
474
475 bool setKaniHangAction();
476 void setKaniWalkEffect();
477 void setKaniHangEffect();
478 void setKaniCliffCatchEffect();
479 void setKaniAction_Walk();
480 void setKaniAction_Hang();
481 void setKaniAction_HangUp();
482 void setKaniAction_HangFall();
483 void setKaniAction_JumpHang();
484 void setKaniAction_HangUpVine();
485 void setKaniAction_HangHand();
486 void setKaniHangStartEffect();
487 void KaniAction_Walk();
488 void KaniAction_HangInit();
489 void KaniAction_JumpHangInit();
490 bool checkCliffHangFootGround();
491 bool checkCliffHangWater();
492 void KaniAction_Hang();
493 void KaniAction_HangFall();
494 void KaniAction_HangUp();
495 void KaniAction_HangUpVine();
496
497 void setCatchRopeSE();
498 void setClimbRopeSE();
499 void setSlideRopeSE();
500 void setRopeHasigoSE();
501 void releasePoleCheck();
502
503 bool setTarzanRopeAction();
504 bool setTarzanRopeJump();
505
506 daYoshi_c *getRideYoshi();
507 bool isNotBalloonCourse();
508 bool fn_801477c0(); ///< @unofficial
509 void setSceneChangeInfo();
510 bool updateRopeAngle();
511 void setRopeSwingAnm(float, float);
512 bool checkStartSwingUp();
513 bool checkStartSwingDown();
514 void updateRopeSwingAnm();
515 void TarzanRopeActionStart();
516 void setTarzanRopeActionWait();
517 void TarzanRopeActionWait();
518 void setTarzanRopeActionUp();
519 void TarzanRopeActionUp();
520 void setTarzanRopeActionDown();
521 void TarzanRopeActionDown();
522 void setTarzanRopeActionHasigoMove();
523 void TarzanRopeActionHasigoMove();
524 void TarzanRopeActionHasigoHangDown();
525 void setTarzanRopeActionHasigoHangUp();
526 void TarzanRopeActionHasigoHangUp();
527
528 void startQuakeAction(QuakeMode_e);
529 void setQuakeAction(int, QuakeMode_e);
530 void setQuakeActionLocal(int, QuakeMode_e);
531 void endQuakeAction();
532 void setQuakeNumbEffect();
533
534 void initElecShock();
535 bool executeElecShock();
536 void setElecEffect();
537
538 bool setFlyDamageAction(int, dActor_c *);
539
540 void initCcData();
541 void initBcData();
542 void calcModel();
543
544 void setBreakBalloonJump(u8, short);
545 void setDrawBalloonInPlayer(mVec3_c &pos);
546 bool checkAllBalloonFade();
547 void setBalloonHelpVoice();
548 bool setBalloonInNextgoto();
549 bool setBalloonInDamage();
550 bool setBalloonButtonA();
551 bool setBalloonInDispOutByYoshi(int);
552 bool setBalloonInDispOutBase(int, int);
553
554 void setShakeIce(float);
555 mVec3_c getIceDrawPos();
556
557 void fn_801395a0(); ///< @unofficial
558 void fn_801416c0(PLAYER_POWERUP_e); ///< @unofficial
559
560 bool setRideOffYoshiJump(daPlBase_c *yoshi);
561 void setRideOnYoshi(daYoshi_c *yoshi);
562
563 void setCloudStateMove();
564 bool checkCloudStateCrouch();
565 void setCloudStateFireCreate();
566
567 bool checkCarryActor(dAcPy_c *player);
568 bool setDropCarryPlayer();
569 void setCarryPlayerMode_Move(float);
570 void setCarryPlayerMode_Fire();
571 void setCarryPlayerMode_Crouch();
572
573 dAcPy_c *getRidePlayer();
574
575 void setYoshiBackPos();
576 void setPlayerHandPos();
577 void setPlayerEatPos(dActor_c *eatingActor);
578 void setPlayerEatReact();
579
580 void endPowerUpEffect();
581
582 void setJrCrownPos();
583 void setJrCrownElecDamage();
584
585 bool setFireBallAction();
586 bool checkFireJump();
587
588 bool fn_80146e40(float, float, bool); ///< @unofficial
589 int getSpinActionMode();
590
591 bool setPropelAction();
592 void resetPropelFlyTime();
593 void clearPropelFlyUpTime();
594 void calcPropelMoveSpeedF();
595 void setPropelActionFlyInit();
596 void setPropelActionBigFly();
597 void setPropelActionFly();
598 void PropelActionFly();
599 void setPropelActionFall();
600 void PropelActionFall();
601 void setStartPropelJumpEffect();
602 bool calcPropelFallSpinEffect();
603 void setPropelFallSpinEffect();
604 void endPropelFlyPartsMove();
605 void stopPropelFallSpinEffect();
606 void updatePropelParts();
607 void updatePropelFlyPartsMove();
608 bool isEnablePropelJump();
609 bool setSpinActionReq();
610 bool setSpinAction();
611
612 void initPlayerDownCommon();
613 void initDemo_DownPose();
614 void initDemo_DownFall();
615 void exeDemo_DownFall();
616 void checkRest();
617 void stopOtherDownDemo();
618 void playOtherDownDemo();
619 void setPlayerEatDie();
620 void releaseEatDie();
621 bool setEatDieHide();
622 bool setEatDieFadeOut();
623 bool setEatDieSpitOut();
624 void setEatDieScreamVoice();
625
626 bool searchDoorActor();
627 void setDemoInDoor_Walk();
628 bool isDoorDemoEnable();
629 bool setDoorDemo(dActor_c *);
630 void exeDemoOutDoor_OpenDoor();
631 void initDemoOutDoor_MoveInter();
632 void exeDemoOutDoor_MoveInter();
633 void initDemoOutDoor_MoveCenter();
634 void exeDemoOutDoor_MoveCenter();
635 void exeDemoOutDoor_WaitClose();
636 void exeDemoOutDoor_WaitEnter();
637
638 bool initDemoDokanCannon(mVec3_c &pos, int cannonMode); ///< @unofficial
639 void endDemoDokanCannon(mVec3_c &pos);
640 bool isDokanCannonIn();
641 bool setCannonJump(float speedY, float speedF, int jumpType);
642
643 void setOffYoshiInGoal(daPlBase_c *yoshi);
644
645 bool isDrawingCarryFukidashi();
646 void getCcBounds(sRangeDataF *bounds); ///< @unofficial
647 bool cancelCarry(dActor_c *carriedActor);
648
649 void setFireBallDamage(u8 type);
650
651 bool fn_80145c00(PLAYER_POWERUP_e); ///< @unofficial
652
653 mVec3_c getModelScaleBase();
654 mVec3_c getModelScale();
655
656 void calcInvalidKeyTimer();
657 void calcTimerProc();
658 void calcStarTimer();
659
660 void initChangeInit();
661 bool executeChangeInit();
663 void initChangeNormal();
664 bool executeChangeNormal();
665 void setChange(int);
666 bool updateChange();
667
668 void maxFallSpeedSet();
669 void setFollowEffect(int);
670 void setItemGetEffect();
671 void setChukanPowerUpEffect();
672 void updateItemGetEffect();
673 void updateFollowEffect();
674
675 void setCenterOffset();
676 void selectAction();
677
678 bool isDrawingFukidashi();
679 void managePropelFukidashi();
680
681 void setCcAtSpin();
682 void setCcAtSpinFall();
683 void setCcAtSpinLiftUp();
684 void setCcAtNetPunch();
685 void setCcData();
686 void setCcDataDirect();
687
688 void fn_80143060(sBcPointData &data1, sBcPointData &data2, bool); ///< @unofficial
689 bool fn_80143220(sBcPointData &data1, sBcPointData &data2); ///< @unofficial
690 void reviseBcDataCarryPlayer(sBcPointData &data1, sBcPointData &data2); ///< @unofficial
691 void reviseBcDataCarryHardBlock(sBcPointData &data1, sBcPointData &data2); ///< @unofficial
692
693 void setStarBase(StarSet_e, int);
694
695 bool searchKinopioNearPlayer(float *dist);
696
697 void setPlayerData();
698 void setSpeedData();
699 void setModeGravity();
700
701 static bool ccCheckAttack(dCc_c *self, dCc_c *other);
702 static bool ccCheckStamp(dCc_c *self, dCc_c *other);
703 static bool ccCheckSideHit(dCc_c *self, dCc_c *other);
704 static void ccCallBack(dCc_c *self, dCc_c *other);
705 static void atCcCallBack(dCc_c *self, dCc_c *other);
706
707 mVec3_c getCarryPos();
708
709 mMtx_c getCarryMtx() {
710 mMtx_c mtx;
711 mtx.trans(getCarryPos());
712 mtx.concat(getModel()->getMtx());
713 return mtx;
714 }
715 PLAYER_POWERUP_e getPowerupCopy() { return mPowerupCopy; }
716 bool isClimbing() {
717 return
718 isStatus(STATUS_TARZAN_ROPE) ||
723 }
724 float getDirSpeed() const {
725 return sc_DirSpeed[mDirection];
726 }
727
728 int mIsRescueKinopio;
729 PLAYER_POWERUP_e mPowerupCopy;
730 PLAYER_POWERUP_e mPowerupCopy2;
731 mVec2_c m_0c;
732 sBcPointData mVineBcData;
733 dPc_c mPc;
734 int m_60;
735 s8 mScrollMode;
736 s8 mChangeType;
737 s8 mChangeTimer;
738 s8 m_67;
739 int m_68;
740 float mAmiRelated2;
741 int mDoorSize;
742 int m_74;
743 int m_78;
744 int m_7c;
745 int m_80;
746 int mWaitFrameCount;
747 int m_88;
748 int mJumpCounter;
749 u8 mJumpComboTimer; ///< Timer for allowing a slight delay between jumps to still count as a combo.
750 u8 mWallSlideCooldown; ///< Timer to disable wall sliding while active.
751 float m_94;
752 mEf::levelEffect_c mLevelEf1;
753 mEf::levelEffect_c mLevelEf2;
754 mAng m_2e8;
755 int m_2ec;
756 int m_2f0;
757 s16 m_2f4;
758 s16 mPropelRollSpeed;
759 s16 mIsPropelFall;
760 mEf::levelEffect_c mLevelEf3;
761 dEf::followEffect_c mFollowEf;
762 int m_538;
763 int m_53c;
764 int m_540;
765 int m_544;
766 int m_548;
767 float m_54c;
768 mEf::levelEffect_c mLevelEf4;
769 mEf::levelEffect_c mLevelEf5;
770 u8 mPad1[0x4];
771 mVec3_c mAmiRollPos;
772 float mAmiXDiff;
773 float mAmiRelated;
774 s16 mAmiAng;
775 int m_7bc;
776 u16 m_7c0;
777 u32 m_7c4;
778 mEf::levelEffect_c mLevelEf6;
779 u8 m_8f0;
780 mVec2_c m_8f4;
781 int mPoleGrabCooldown; ///< Timer to disable grabbing a pole while active.
782 short m_900, m_902, m_904, m_906;
783 int m_908;
784 RopeSwingState_e m_90c;
785 int mTarzanRopeCooldown; ///< Timer to disable swinging on a vine while active.
786 int m_914;
787 float m_918;
788 int m_91c;
789 mEf::levelEffect_c mLevelEf7;
790 mEf::levelEffect_c mLevelEf8;
791 int m_b70;
792 int m_b74;
793 float m_b78;
794 int m_b7c;
795 int m_b80;
796 int m_b84;
797 u8 m_b88;
798 u8 m_b89;
799 float m_b8c;
800 mVec2_c mUzuSwimSpeed;
801 int m_b98;
802 mEf::levelEffect_c mLevelEf9;
803 mEf::levelEffect_c mLevelEf10;
804 mEf::levelEffect_c mLevelEf11;
805 mEf::levelEffect_c mLevelEf12;
806 int m_103c;
807 int m_1040;
808 int mSpinTimer; ///< Timer for the duration of a spin jump.
809 s16 m_1048;
810 u8 mPad2[0x4];
811 float mSpinHoldReqTarget; ///< The target X position to move to while doing a spin in place.
812 u32 mSpinFireBallCooldown; ///< Timer to control how often fireballs the player automatically shoots while spinning.
813 u32 mStartSpinCooldown; ///< Timer to disable spin jumps and propeller spins while active.
814 s16 m_105c;
815 dEf::followEffect_c mFollowEf2;
816 dEf::followEffect_c mFollowEf3;
817 u32 m_1288;
818 u32 m_128c;
819 u8 mPad3[0x8];
820 int m_1298;
821 mVec2_c m_129c;
822 u8 mPad4[0x4];
823 mVec3_c m_12a8;
824 u32 m_12b4;
825 int m_12b8;
826 u32 mAllBalloonFadeTimer;
827 mMtx_c mRideJrClownMtx;
828 int mSpinCooldown; ///< Timer to disable another spin action while active.
829 u8 m_12f4;
830 float m_12f8;
831 fBaseID_e m_12fc;
832 float m_1300;
833 float m_1304;
834 int m_1308;
835 int m_130c;
836 int m_1310[2];
837 int m_1318[2];
838 int mFollowType;
839 int mPowerUpEffectTimer; ///< Timer controlling the powerup effect duration and opacity.
840 int mPowerUpType; ///< 0: Touching an item, 1: Touching the midway point.
841 dEf::dLevelEffect_c mItemGetEffect1;
842 dEf::dLevelEffect_c mItemGetEffect2;
843 int m_157c;
844 int m_1580;
845 int m_1584;
846 dPyMdlMng_c mPyMdlMng;
847 float m_1594;
848 float m_1598;
849 float m_159c;
850 fBaseID_e mCarryActorID;
851 int mFastRunFrames; ///< How many frames the player has been running at over 1 unit/frame.
852 int m_15a8;
853 /// Disables interaction with other players and enemies while the timer is non-zero.
855 short m_15ae;
856 short m_15b0;
857 short m_15b2;
858 short mWaterWalkTimer;
859 short m_15b6;
860 short m_15b8;
861 short mBalloonHelpVoiceCooldown; ///< Timer to only allow the help voice to play every 2 seconds.
862 dEf::followEffect_c mFollowEf4;
863 dPropelParts_c mPropelParts;
864 dPlayerOrchestra_c mPlayerOrchestra;
865
866 ACTOR_PARAM_CONFIG(PlayerNo, 0, 4);
867 ACTOR_PARAM_CONFIG(CreateAction, 16, 8);
868 ACTOR_PARAM_CONFIG(Direction, 24, 1);
869
870 static const float data_802f5a0c[];
871 static const float data_802f5a48[];
872 static dAcPy_HIO_Speed_c m_speed_hio[2];
873 static const float msc_JUMP_SPEED;
874};
bool initDemoDokanCannon(mVec3_c &pos, int cannonMode)
virtual bool setJump(float jumpSpeed, float speedF, bool allowSteer, int keyMode, int jumpMode)
Starts a jump action with the given parameters.
short mNoInteractTimer
Disables interaction with other players and enemies while the timer is non-zero.
virtual bool setEatSpitOut(dActor_c *eatingActor)
Callback for when the actor is about to be spat out.
void jumpExeTakeOff()
virtual void setEatTongue(dActor_c *eatingActor)
Callback for when the actor is targeted by Yoshi's tongue.
void reviseBcDataCarryPlayer(sBcPointData &data1, sBcPointData &data2)
PenguinSlideSubstate_e
int mTarzanRopeCooldown
Timer to disable swinging on a vine while active.
BlockJumpSubstate_e
int checkWallSlideEnable(int)
int mPowerUpType
0: Touching an item, 1: Touching the midway point.
void fn_80145fd0(int jumpType)
Jump voice, some enum as param.
SpinHipAttackSubstate_e
const sBcPlayerPointData * getBgPointData_Powerup(PLAYER_POWERUP_e, int)
virtual void setWaitActionAnm(AnmBlend_e)
void setJumpCommonBase()
u32 mSpinFireBallCooldown
Timer to control how often fireballs the player automatically shoots while spinning.
bool fn_80143220(sBcPointData &data1, sBcPointData &data2)
virtual int doDelete()
do method for the delete operation.
u32 mStartSpinCooldown
Timer to disable spin jumps and propeller spins while active.
u8 mJumpComboTimer
Timer for allowing a slight delay between jumps to still count as a combo.
virtual bool isSpinLiftUpEnable()
Returns whether the actor can be carried.
virtual void setPowerup(PLAYER_POWERUP_e, int)
void fn_80127740(int jumpType, AnmBlend_e blendMode)
Jump animation set, some enum as first param.
int mPoleGrabCooldown
Timer to disable grabbing a pole while active.
u8 mWallSlideCooldown
Timer to disable wall sliding while active.
virtual int preExecute()
pre method for the execute operation.
void fn_801395a0()
void fn_80143060(sBcPointData &data1, sBcPointData &data2, bool)
int mSpinTimer
Timer for the duration of a spin jump.
bool fn_801477c0()
int mSpinCooldown
Timer to disable another spin action while active.
bool fn_80145c00(PLAYER_POWERUP_e)
void getCcBounds(sRangeDataF *bounds)
virtual void eatMove(dActor_c *eatingActor)
Updates the actor's position during eating actions.
CannonJumpSubstate_e
bool spinLiftUp(dActor_c *, bool)
virtual int draw()
do method for the draw operation.
virtual void setEatTongueOff(dActor_c *eatingActor)
Callback for when the eating action is canceled.
void fn_801282d0(AnmBlend_e blendMode)
void setFireBallDamage(u8 type)
int mFastRunFrames
How many frames the player has been running at over 1 unit/frame.
void setWallSlideEffect()
virtual int create()
do method for the create operation.
virtual bool _setJump(float jumpSpeed, float speedF, bool allowSteer, int keyMode, int jumpMode)
Starts a jump action unconditionally. See setJump().
int change_reverse_scale_set()
float mSpinHoldReqTarget
The target X position to move to while doing a spin in place.
virtual void setSpinLiftUpActor(dActor_c *carryingActor)
Callback for when the actor is picked up by another actor.
virtual void setEatMouth(dActor_c *eatingActor)
Callback for when the actor is being eaten.
bool fn_80146e40(float, float, bool)
void fn_801416c0(PLAYER_POWERUP_e)
void reviseBcDataCarryHardBlock(sBcPointData &data1, sBcPointData &data2)
short mBalloonHelpVoiceCooldown
Timer to only allow the help voice to play every 2 seconds.
void calcUzuSwimSpeed(float, float, float *)
int mPowerUpEffectTimer
Timer controlling the powerup effect duration and opacity.
virtual void postExecute(MAIN_STATE_e status)
post method for the execute operation.
u8 mDirection
The actor's facing direction.
Definition d_actor.hpp:351
dActor_c()
Constructs a new actor.
Definition d_actor.cpp:46
Collider ("Collision Check") class - handles collisions between actors.
Definition d_cc.hpp:133
@ STATUS_KANI_HANG
The player is hanging from a cliff.
@ STATUS_POLE
The player is climbing a pole.
@ STATUS_HANG
The player is hanging from a ceiling rope.
@ STATUS_VINE
The player is clinging to a vine / mesh net / rock wall.
bool isStatus(int id)
AnmBlend_e
Blending modes for animations.
MAIN_STATE_e
The possible operation results.
Definition f_base.hpp:36
A 3x4 matrix.
Definition m_mtx.hpp:9
A two-dimensional floating point vector.
Definition m_vec.hpp:26
A three-dimensional floating point vector.
Definition m_vec.hpp:122
PLAYER_POWERUP_e
The identifiers for each powerup.
fBaseID_e
A unique identifier for each base.
Definition f_base_id.hpp:6
@ BASE_ID_NULL
Represents the null base.
Definition f_base_id.hpp:7
#define STATE_FUNC_DECLARE(class, name)
Declares a state.
Definition s_State.hpp:12
#define STATE_VIRTUAL_FUNC_DECLARE(class, name)
Declares a virtual state.
Definition s_State.hpp:22
A one-dimensional short angle vector.
Definition m_angle.hpp:12