3#include <game/bases/d_actor.hpp>
4#include <game/bases/d_a_player_data.hpp>
5#include <game/bases/d_a_player_hio.hpp>
6#include <game/bases/d_ac_py_key.hpp>
7#include <game/bases/d_cc.hpp>
8#include <game/bases/d_player_model_manager.hpp>
9#include <game/bases/d_quake.hpp>
10#include <game/mLib/m_3d.hpp>
12#include <game/bases/d_effect.hpp>
105 HIP_ACTION_ATTACK_START,
106 HIP_ACTION_ATTACK_FALL,
108 HIP_ACTION_STAND_NORMAL,
109 HIP_ACTION_STAND_NORMAL_END,
148 DEMO_DOKAN_WATER_TANK
190 DEMO_ANIME_BOSS_SET_UP,
191 DEMO_ANIME_BOSS_GLAD,
192 DEMO_ANIME_BOSS_ATTENTION,
193 DEMO_ANIME_BOSS_KEY_GET,
194 DEMO_ANIME_BOSS_GLAD_2
200 DEMO_WAIT_ARG_TO_NONE,
201 DEMO_WAIT_ARG_TO_CONTROL
213 DOKAN_TYPE_CONNECTED,
220 DEMO_DOWN_ARG_TIME_UP,
221 DEMO_DOWN_ARG_POISON,
222 DEMO_DOWN_ARG_POISON_FOG
227 GOAL_DEMO_ACTION_POLE,
228 GOAL_DEMO_ACTION_WAIT,
229 GOAL_DEMO_ACTION_KIME_POSE,
259 CONTROL_DEMO_REGULAR_ANIM,
260 CONTROL_DEMO_CUTSCENE_ANIM,
262 CONTROL_DEMO_KINOPIO_WALK,
263 CONTROL_DEMO_KINOPIO_SWIM,
264 CONTROL_DEMO_KINOPIO_SINK_SAND,
265 CONTROL_DEMO_ENDING_DANCE,
272 POWER_CHANGE_LOW_SLIP
279 SQUISH_SET_REDUCTION,
288 BGC_WALL_TOUCH_L = BIT_FLAG(3),
289 BGC_WALL_TOUCH_R = BIT_FLAG(4),
290 BGC_WALL_TOUCH_L_2 = BIT_FLAG(5),
291 BGC_WALL_TOUCH_R_2 = BIT_FLAG(6),
296 BGC_11 = BIT_FLAG(11),
297 BGC_12 = BIT_FLAG(12),
298 BGC_13 = BIT_FLAG(13),
304 BGC_SIDE_LIMIT_L = BIT_FLAG(19),
305 BGC_SIDE_LIMIT_R = BIT_FLAG(20),
306 BGC_ON_SNOW = BIT_FLAG(22),
307 BGC_ON_ICE = BIT_FLAG(23),
308 BGC_ON_ICE_LOW_SLIP = BIT_FLAG(24),
309 BGC_SLOPE_AND_HEAD = BIT_FLAG(25),
310 BGC_ON_SAND = BIT_FLAG(26),
311 BGC_ON_SINK_SAND = BIT_FLAG(27),
312 BGC_IN_SINK_SAND = BIT_FLAG(28),
313 BGC_INSIDE_SINK_SAND = BIT_FLAG(29),
314 BGC_ON_BELT_L = BIT_FLAG(30),
315 BGC_ON_BELT_R = BIT_FLAG(31)
320 BGC_SEMISOLID = BIT_FLAG(0),
322 BGC_HANG_ROPE = BIT_FLAG(2),
323 BGC_AUTOSLIP = BIT_FLAG(3),
324 BGC_36 = BIT_FLAG(4),
325 BGC_GROUNDED_MOVE_UP = BIT_FLAG(5),
327 BGC_SLOPE = BIT_FLAG(7),
328 BGC_CLIFF = BIT_FLAG(8),
329 BGC_CLIFF_ABOVE_1 = BIT_FLAG(9),
330 BGC_CLIFF_ABOVE_2 = BIT_FLAG(10),
331 BGC_CAN_CLIMB = BIT_FLAG(11),
332 BGC_44 = BIT_FLAG(12),
336 BGC_VINE_TOUCH_2 = BIT_FLAG(16),
340 BGC_NON_BREAK_BLOCK_HIT = BIT_FLAG(21),
341 BGC_COIN_BLOCK_HIT = BIT_FLAG(22),
342 BGC_PRESS_HEAD_HIT = BIT_FLAG(23),
343 BGC_BLOCK_HIT = BIT_FLAG(24),
344 BGC_57 = BIT_FLAG(25),
345 BGC_58 = BIT_FLAG(26),
346 BGC_LINE_BLOCK_HIT = BIT_FLAG(27),
347 BGC_60 = BIT_FLAG(28),
348 BGC_61 = BIT_FLAG(29),
349 BGC_62 = BIT_FLAG(30),
350 BGC_63 = BIT_FLAG(31)
387 STATUS_SPIN_HIP_ATTACK_LANDED,
388 STATUS_SPIN_HIP_ATTACK_LANDING,
443 STATUS_EXTRA_PUSH_FORCE,
467 STATUS_ENDING_DANCE_AUTO,
523 STATUS_ITEM_KINOPIO_DISPLAY_OUT,
546 jmpInf_c(
float speed,
int jumpMode,
AnmBlend_e blendMode) :
mSpeed(speed), mJumpMode(jumpMode), mBlendMode(blendMode) {}
547 virtual ~jmpInf_c() {};
554 typedef void (daPlBase_c::*ProcFunc)();
557 virtual ~daPlBase_c();
567 virtual void executeMain() {}
568 virtual void executeLastPlayer() {}
569 virtual void executeLastAll() {}
570 virtual bool isItemKinopio() {
return false; }
572 virtual u8 getTallType(s8);
573 virtual const sBcPointData *getHeadBgPointData() {
return nullptr; };
574 virtual const sBcPointData *getWallBgPointData() {
return nullptr; };
575 virtual const sBcPointData *getFootBgPointData() {
return nullptr; };
576 virtual float getStandHeadBgPointY() {
return 0.0f; }
577 virtual void checkBgCrossSub() {}
578 virtual void postBgCross();
579 virtual float getSandSinkRate() {
return 0.0f; }
580 virtual void setReductionScale();
581 virtual void initStampReduction();
582 virtual void calcJumpDaiReductionScale(
int,
int);
583 virtual void setReductionBoyon();
584 virtual bool setPressBgDamage(
int,
int);
585 virtual bool setBalloonInDispOut(
int) {
return false; }
586 virtual bool isChange() {
return false; }
587 virtual void changeNextScene(
int);
588 virtual bool isEnableDokanInStatus();
589 virtual bool setHideNotGoalPlayer();
590 virtual int setDemoGoal(mVec3_c &landPos,
float goalCastleX, u8 goalType);
591 virtual bool setDemoCannonWarp(
int,
short,
short) {
return false; }
613 virtual void initialDokanUnder();
614 virtual void initialDokanUper();
615 virtual void initialDokanRight();
616 virtual void initialDokanLeft();
617 virtual void initialDokanUnderM();
618 virtual void initialDokanUperM();
619 virtual void initialDokanRightM();
620 virtual void initialDokanLeftM();
621 virtual void initialDokanDepth();
622 virtual void initialDoor();
623 virtual void initialFall();
624 virtual void initialVine();
625 virtual void initialJumpRight();
626 virtual void initialJumpLeft();
627 virtual void initialHipAttack();
628 virtual void initialSlip();
629 virtual void initialSwim();
630 virtual void initialBlockJump();
631 virtual void initialBlockJumpBelow();
632 virtual void initialTorideBoss();
633 virtual void initialNormal();
635 virtual void setCreateAction(
int);
636 virtual bool setTimeOverDemo() {
return false; }
637 virtual void setFallDownDemo() {}
638 virtual bool setDokanIn(DokanDir_e dir);
639 virtual void initDemoOutDokan();
640 virtual bool updateDemoKimePose(ClearType_e clearType);
641 virtual void initDemoGoalBase();
642 virtual void executeDemoGoal_Run();
643 virtual void initializeDemoControl() {}
648 virtual void changeState(
const sStateIDIf_c &stateID,
void *arg);
669 virtual bool isWaitFrameCountMax() {
return false; }
670 virtual bool checkWalkNextAction() {
return false; }
674 virtual void walkAction_Wait();
676 virtual void walkAction_Move();
677 virtual bool checkCrouch();
678 virtual bool setCancelCrouch();
679 virtual void setSlipAction();
680 virtual void slipActionMove(
int);
681 virtual void setFallAction();
682 virtual void setHipAttack_AttackStart();
684 virtual void releaseFunsuiAction();
686 virtual float getCloudOffsetY();
687 virtual bool setRideJrCrown(
const dActor_c *) {
return false; }
688 virtual bool isRideJrCrownOwn(
const dActor_c *) {
return false; }
689 virtual void setRideJrCrownMtx(
const mMtx_c *) {}
690 virtual void setRideJrCrownAnm(
int) {}
692 virtual const mVec3_c *getHeadTopPosP() {
return nullptr; }
693 virtual const float *getGravityData() {
return mGravityData; }
694 virtual bool isCarry()
const {
return false; }
695 virtual bool isLiftUp() {
return false; }
697 virtual bool isLiftUpExceptMame() {
return false; }
698 virtual int isStar()
const;
699 virtual void setStar(StarSet_e,
int);
700 virtual void endStar() {}
701 virtual void setVirusStar(daPlBase_c *) {}
702 virtual void clearStarCount();
703 virtual s8 getStarCount()
const {
return mStarCount; }
704 virtual s8 calcStarCount(
int);
706 virtual bool isNoDamage();
707 virtual bool setDamage(
dActor_c *, DamageType_e);
708 virtual bool setForcedDamage(
dActor_c *, DamageType_e);
720 virtual bool setJump(
float jumpSpeed,
float speedF,
bool allowSteer,
int keyMode,
int jumpMode);
723 virtual bool _setJump(
float jumpSpeed,
float speedF,
bool allowSteer,
int keyMode,
int jumpMode);
724 virtual bool setWaitJump(
float jumpSpeed);
726 virtual bool setHipAttackOnEnemy(mVec3_c *);
728 virtual void clearJumpActionInfo(
int) {}
729 virtual bool setSwimSpeed(
float speedY,
float speedF);
730 virtual void setLandSE();
732 virtual void set1UpKinokoEffect() {}
733 virtual void setFlagGetEffect() {}
734 virtual void setHipAttackEffect();
736 virtual void setZPosition();
737 virtual void setZPosition(
float);
738 virtual void setZPositionDirect(
float);
739 virtual void offZPosSetNone();
744 virtual void startQuakeShock(dQuake_c::TYPE_SHOCK_e);
745 virtual void startPatternRumble(
const char *pattern);
747 virtual short getMukiAngle(u8 direction);
748 virtual int turnAngle();
749 virtual void maxFallSpeedSet();
751 virtual bool setDamage2(
dActor_c *, daPlBase_c::DamageType_e);
769 void calcPlayerSpeedXY();
770 void posMoveAnglePenguin(mVec3_c, u16);
771 void posMoveAnglePlayer(mVec3_c);
772 bool setSandMoveSpeed();
773 void calcWindSpeed();
774 void calcHeadAttentionAngle();
777 void calcAccOnIceLift();
778 bool checkStandUpRoofOnLift();
779 bool checkStandUpRoof();
785 void simpleMoveSpeedSet();
786 void normalPowerSet();
787 void grandPowerSet();
789 void icePowerChange(
int);
793 const sSpeedData *getSpeedData();
795 int addCalcAngleY(
short,
short);
796 short getBesideMukiAngle(u8 direction);
797 void turnBesideAngle();
801 void setJumpGravity();
802 void setButtonJumpGravity();
803 void setNormalJumpGravity();
804 float setJumpAddSpeedF(
float);
805 float setAddLiftSpeedF();
806 bool setDelayHelpJump();
807 bool setCrouchJump();
808 bool checkJumpTrigger();
811 void setStampReduction();
812 void setStampPlayerJump(
bool b,
float yOffset);
813 void calcReductionScale();
814 mVec3_c getReductionModelScale();
816 bool setJumpDaiRide();
817 bool setPlayerJumpDai(daPlBase_c *other);
818 void setPlayerJumoDaiPos();
820 bool setCloudOn(
dActor_c *cloudActor);
821 void cancelCloudOn();
822 mVec3_c getCloudPos();
823 bool updateCloudMove();
826 bool updateFunsuiPos(
float,
float);
827 bool releaseFunsui(
float);
829 void setRideNat(
float);
830 void updateRideNat();
834 bool checkSakaReverse();
836 bool checkCrouchSlip();
837 bool checkSlipEndKey();
838 float getSlipMaxSpeedF();
839 float getSakaMaxSpeedRatio(u8 direction);
840 float getSakaStopAccele(u8 direction);
841 float getSakaMoveAccele(u8 direction);
842 float getIceSakaSlipOffSpeed();
845 void setSlipAction_ToStoop();
846 void setSlipAction_ToEnd();
847 void setSlipActionEnd();
848 void setSlipActionViewLimitEnd();
850 void setHipAttackDropEffect();
851 void setHipBlockBreak();
852 void setHipAttack_Ready();
853 void setHipAttack_KinopioStart();
854 void setHipAttack_AttackFall();
855 void setHipAttack_StandNormal();
856 void setHipAttack_StandNormalEnd();
857 void setHipAttack_ToStoop();
858 void HipAction_Ready();
859 void HipAction_AttackStart();
860 void HipAction_AttackFall();
861 void HipAction_Ground();
862 void HipAction_StandNormal();
863 void HipAction_StandNormalEnd();
864 void HipAction_ToStoop();
866 void onFollowMameKuribo();
867 void clearFollowMameKuribo();
868 u32 getFollowMameKuribo();
871 bool isControlDemoAll();
874 bool isDemoMode()
const;
877 bool executeDemoState();
879 bool startControlDemo();
880 void setControlDemoDir(u8);
881 bool isControlDemoWait();
882 void setControlDemoWait();
883 bool isControlDemoAnm(
int);
884 void setControlDemoAnm(
int);
885 bool isControlDemoWalk();
887 void setControlDemoKinopioWalk();
888 void setControlDemoKinopioSwim();
889 void setControlDemoEndingDance();
890 void setControlDemoWalk(
const float &,
const float &);
891 void endControlDemo(
int);
893 void initDemoInDokan();
895 void initDemoInDokanLR(u8);
896 void executeDemoInDokan(u8);
897 void endDemoInDokan();
898 bool setDemoOutDokanAction(
int entranceNextGotoID, DokanDir_e dir);
899 void initDemoOutDokanUD(u8);
900 void initDemoOutDokanLR(u8);
901 void executeDemoOutDokanUD();
902 void executeDemoOutDokanLR();
903 void endDemoOutDokan();
905 BOOL demo_dokan_move_x(
float,
float);
906 BOOL demo_dokan_move_y(
float,
float);
907 void setObjDokanIn(dBg_ctr_c *, mVec3_c &,
int);
908 void setExitRailDokan();
911 void stopGoalOther();
912 void playGoalOther();
913 void setDemoGoalMode(
int,
int);
914 void setDemoGoal_MultiJump();
915 void finalizeDemoGoalBase();
916 float getDemoGoalLandPos();
917 void initGoalJump(mVec3_c &,
float);
919 void executeDemoGoal_Pole();
920 void executeDemoGoal_Wait();
921 void executeDemoGoal_KimePose();
922 bool setEnemyStageClearDemo();
923 void updateEndingDance();
924 void initDemoKimePose();
926 bool isBossDemoLand();
927 void DemoAnmNormal();
928 void DemoAnmBossSetUp();
929 void DemoAnmBossGlad();
930 void DemoAnmBossAttention();
931 void DemoAnmBossKeyGet();
933 void setRunFootEffect();
934 void setVsPlHipAttackEffect();
935 void setLandSmokeEffect(
int);
936 void setLandSmokeEffectLight();
937 void setSandEffect();
938 bool setSandJumpEffect();
939 bool setSandFunsuiLandEffect();
940 void setStartJumpEffect(
int);
941 void setLandJumpEffect(
int);
942 void setSlipOnWaterEffect(mEf::levelEffect_c *effect);
943 void setSlipSmokeEffect();
944 void setBrakeSmokeEffect(mVec3_c &offset);
945 void setTurnSmokeEffect();
946 void fadeOutTurnEffect();
948 void startKimePoseVoice(ClearType_e clearType);
949 void setSoundPlyMode();
950 void setItemCompleteVoice();
951 void startFootSoundPlayer(
unsigned long);
958 void holdSound(ulong soundID,
short,
bool);
960 void initCollision(sCcDatNewF *dat1, sCcDatNewF *dat2);
961 void entryCollision();
962 void releaseCcData();
964 void clearCcPlayerRev();
966 void setCcAtBody(
int);
968 void setCcAtPenguinSlip();
969 void setCcAtHipAttack();
971 void setCcAtCannon();
972 bool isActionRevisionY();
973 void setCcPlayerRev(dCc_c *, dCc_c *,
float,
int);
974 bool calcCcPlayerRev(
float *);
975 bool isEnableStampPlayerJump(dCc_c *, dCc_c *);
978 void setOldBGCross();
980 bool checkInsideCrossBg(
float);
981 void clearBgCheckInfo();
982 bool isCarryObjBgCarried(u8 side);
983 bool checkBGCrossWall(u8 direction);
984 void checkDamageBg();
986 bool checkSinkSand();
987 float getWaterCheckPosY();
989 bool isHitWallKinopioWalk(
int);
991 bool checkKinopioWaitBG(
int);
992 void underOverCheck();
993 void checkDispOver();
996 bool isEnablePressUD();
997 bool isEnablePressLR();
998 void checkDisplayOutDead();
1000 void setBgPressReq(
dActor_c *, BgPress_e);
1002 bool isDispOutCheckOn();
1003 bool calcSideLimitMultL(
float);
1004 bool calcSideLimitMultR(
float);
1005 void checkSideViewLemit();
1006 bool checkDispSideLemit();
1007 bool revSideLimitCommon(
float);
1009 void calcTimerProc();
1010 void changeNormalAction();
1016 daPlBase_c *getHipAttackDamagePlayer();
1017 void setHipAttackDamagePlayer(daPlBase_c *player);
1018 void clearHipAttackDamagePlayer();
1020 void setNoHitPlayer(
const daPlBase_c *,
int);
1021 void updateNoHitPlayer();
1022 void setNoHitObjBg(
dActor_c *,
int);
1023 void calcNoHitObjBgTimer();
1025 void clearTreadCount();
1026 s8 calcTreadCount(
int);
1027 void clearComboCount();
1028 s8 calcComboCount(
int);
1030 dPyMdlBase_c *getModel();
1031 mVec3_c getAnkleCenterPos();
1033 bool isMameAction();
1034 bool isPlayerGameStop();
1035 bool checkTimeOut();
1036 bool checkRideActor(daPlBase_c *other);
1037 bool isRideCheckEnable();
1040 const sStateIDIf_c &getOldState() {
1044 bool isState(sStateIDIf_c &
id) {
1045 return mStateMgr.getStateID()->isEqual(
id);
1048 bool isDemoState(sStateIDIf_c &
id) {
1052 float calcSomeAccel(
float f) {
return 3.0f * f; }
1053 void set_m_d80(
int side,
float f) { m_d80[side] = f; }
1054 float getModelHeight()
const {
return mModelHeight; }
1055 float getCcRevOffsX()
const {
return mCcRevTotalOffsX; }
1056 float getCcRevOffsY()
const {
return mCcRevTotalOffsY; }
1057 float getCcRevRate()
const {
return mCcRevRate; }
1059 u32 isNowBgCross(
BgCross1_e m) {
return mNowBgCross1 & m; }
1060 u32 isNowBgCross(
BgCross2_e m) {
return mNowBgCross2 & m; }
1061 void onNowBgCross(
BgCross1_e m) { mNowBgCross1 |= m; }
1062 void onNowBgCross(
BgCross2_e m) { mNowBgCross2 |= m; }
1063 void offNowBgCross(
BgCross1_e m) { mNowBgCross1 &= ~m; }
1064 void offNowBgCross(
BgCross2_e m) { mNowBgCross2 &= ~m; }
1065 void clearNowBgCross() { mNowBgCross1 = mNowBgCross2 = 0; }
1067 u32 isOldBgCross(
BgCross1_e m) {
return mOldBgCross1 & m; }
1068 u32 isOldBgCross(
BgCross2_e m) {
return mOldBgCross2 & m; }
1069 void onOldBgCross(
BgCross1_e m) { mOldBgCross1 |= m; }
1070 void onOldBgCross(
BgCross2_e m) { mOldBgCross2 |= m; }
1071 void offOldBgCross(
BgCross1_e m) { mOldBgCross1 &= ~m; }
1072 void offOldBgCross(
BgCross2_e m) { mOldBgCross2 &= ~m; }
1073 void clearOldBgCross() { mOldBgCross1 = mOldBgCross2 = 0; }
1075 bool isOnSinkSand() {
return isNowBgCross(BGC_ON_SINK_SAND) | isNowBgCross(BGC_IN_SINK_SAND); }
1076 bool wasOnSinkSand() {
return isOldBgCross(BGC_ON_SINK_SAND) | isOldBgCross(BGC_IN_SINK_SAND); }
1078 float getDirSpeed()
const {
return sc_DirSpeed[
mDirection]; }
1081 u8 getDirection()
const {
return mDirection; }
1088 template <
typename T>
1089 void changeState(
const sStateIDIf_c &stateID, T arg) {
1097 template <
typename T>
1098 T stateArg()
const {
1114 float mViewLimitPadding;
1124 short mRollDokanAngle;
1134 float mDokanOffsetY;
1135 float mDokanShiftXEpsilon;
1136 short mRailDokanRailIndex;
1137 short mRailDokanNextNodeTimer;
1140 int mGoalTouchOrder;
1141 float mGoalPoleEndY;
1144 int mGoalJumpFrameCount;
1146 mVec3_c mControlDemoTargetPos;
1147 float mControlDemoSpeedF;
1148 int mItemKinopioDirection;
1149 int mItemKinopioTurnTimer;
1151 int mBossDemoLandTimer;
1152 int mEndingDanceKeyTimers[5];
1153 int mEndingDanceInactivityTimer;
1160 int mTurnGroundType;
1172 int mIsBeingDeleted;
1191 u32 mStatusFlags[7];
1205 const float *mGravityData;
1207 int mNoGravityTimer;
1209 int mDamageInvulnTimer;
1210 int mPowerupChangeInvulnTimer;
1216 u32 mNewFollowMameKuribo;
1217 u32 mFollowMameKuribo;
1224 float mExtraPushForceX;
1226 u32 mNowBgCross1, mNowBgCross2;
1227 u32 mOldBgCross1, mOldBgCross2;
1228 u32 mBgFootHistory[10];
1230 u32 mStandOnUnitType;
1231 u32 mPrevStandOnUnitType;
1238 short mMoveSakaAngle;
1239 short mPrevMoveSakaAngle;
1240 short mStillSakaAngle;
1241 short mPrevStillSakaAngle;
1242 short mAdjacentSlopeAngle;
1247 float mPrevWaterHeight;
1249 float mSinkSandHeight;
1254 short mAirWaterHitAngle;
1256 float mRideNutHeight;
1258 dCc_c mCc1, mAttCc1, mAttCc2, mAttCc3;
1260 float mCcRevTotalOffsX;
1261 float mCcRevTotalOffsY;
1264 bool mCcHasInitialRevY;
1265 int mCcRevDisabledTimer;
1291 int mWindGroundTimer;
1293 float mFinalAirPushForceX;
1300 static const float sc_DirSpeed[];
1301 static const float sc_JumpSpeed;
1302 static const float sc_JumpSpeedNuma1;
1303 static const float sc_JumpSpeedNuma2;
1304 static const float sc_WaterWalkSpeed;
1305 static const float sc_WaterSwimSpeed;
1306 static const float sc_WaterJumpSpeed;
1307 static const float sc_WaterMaxFallSpeed;
1308 static const float sc_MaxFallSpeed;
1309 static const float sc_MaxFallSpeed_Foot;
1310 static const float sc_MaxFallDownSpeed;
1311 static const float scTurnPowerUpRate;
1312 static const float scDokanInSpeedX;
1313 static const float scDokanInWidthX;
1314 static const float scDokanInMoveSpeed;
1315 static const float scDokanWaitAnmFixFrame;
A class for managing controller input.
u8 mDirection
The actor's facing direction.
dActor_c()
Constructs a new actor.
mVec3_c mSpeed
The actor's speed.
Collider ("Collision Check") class - handles collisions between actors.
virtual void changeState(const sStateIDIf_c &stateID, void *arg)
Transitions to a new state with the given state ID and argument.
int mDokanEnterNextGotoID
Value is a ControlDemoState_e.
bool suppressSound(int suppressionMode)
void onStatus(int id)
Enables the status with the given ID. See Status_e.
virtual void setPowerup(PLAYER_POWERUP_e, int)
void offStatus(int id)
Disables the status with the given ID. See Status_e.
int mTimer_a8
[Seems unused - set to 0 when leaving a rolling hill].
float mSquishScale
The current scale of the player during the squish animation.
void startSound(ulong soundID, bool)
int mSquishNoMoveTimer
Timer for how long to freeze the squished player in position.
KaniArg_e
Arguments for transitioning to the cliff state.
@ KANI_ARG_HANG_UP_VINE
Climbing onto the cliff from a vine.
@ KANI_ARG_WALK_FORCE
Standing on the cliff, disallow immediately hanging from it by holding down.
@ KANI_ARG_HANG
Landing high enough on the cliff to stand on it, but hang down from it instead.
@ KANI_ARG_HANG_HAND
Catching the cliff from below, hang from it.
@ KANI_ARG_JUMP_HANG
Falling onto the cliff, immediately hang from it.
@ KANI_ARG_WALK
Standing on the cliff and walking.
virtual void holdPlayerVoice(int, int)
void holdSound(ulong soundID, bool)
void setExtraPushForce(float f)
void setDemoOutNextGotoBlock(int nextGotoID, int delay, int fadeType)
@ BGC_WATER_SUBMERGED
Fully submerged in water.
@ BGC_WATER_SHALLOW
At least slightly inside of water (hip height or higher).
@ BGC_HEAD
Colliding with the head sensor.
@ BGC_OBJBG_TOUCH_CARRIED_L
The touching background object on the left is being carried by a player.
@ BGC_OBJBG_TOUCH_R
Touching a background object on the right.
@ BGC_FOOT
Colliding with the foot sensor.
@ BGC_ON_WATER_MOVE
On water by being mini or sliding with the penguin suit.
@ BGC_WALL
Colliding with the wall sensor.
@ BGC_OBJBG_TOUCH_CARRIED_R
The touching background object on the right is being carried by a player.
@ BGC_WATER_BUBBLE
Inside a floating water bubble.
@ BGC_OBJBG_TOUCH_L
Touching a background object on the left.
@ BGC_WATER_TOUCH
At least touching water.
sFStateMgr_c< daPlBase_c, sStateMethodUsr_FI_c > mStateMgr
The state manager for regular player states.
float mCcRevRate
Multiplier for position revision for colliders. 1.0f moves to the target immediately.
int mGoalDemoIndex
Indicates where the player is in the order of players which have touched the goal pole,...
mVec3_c mBgPushForce
Belts, quicksand etc.
virtual int create()
do method for the create operation.
bool mIsDemoMode
Whether the player is currently in a demo (cutscene) state.
int mSquishKeyframeIdx
The current target index for the squishing animation keyframes.
float mDispLimitAdjR
The distance by which the player is too far right.
mEf::levelEffect_c mBrakeSmokeEffect
Smoke when turning around after running.
bool startJump(AnmBlend_e blendMode, int jumpType)
mEf::levelEffect_c mRunEffect
E.g. sand particles / snowflakes when running.
mEf::levelEffect_c mSlipSmokeEffect
Smoke when sliding down a slope or into a cannon.
void getPowerChangeSpeedData(sPowerChangeSpeedData &data)
HipAttackArg_e
Arguments for transitioning to the ground pound state.
@ HIP_ATTACK_ARG_PLAYER
A regular player is doing a ground pound.
@ HIP_ATTACK_ARG_ITEM_KINOPIO
The rescue Toad is doing a ground pound out of the item block.
virtual void startPlayerVoice(int, int)
void initDemoInDokanUD(u8)
u8 mWaterType
Value is a dBc_c::WATER_TYPE_e.
mEf::levelEffect_c mQuicksandSinkEffect
Sand particles when the player is submerged in quicksand.
mVec3_c mJumpDaiOffset
The difference vector between this player and the player being jumped on.
fBaseID_e mRelatedActorID
Actor that is eating the player, or the door actor.
virtual bool _setJump(float jumpSpeed, float speedF, bool allowSteer, int keyMode, int jumpMode)
Starts a jump action unconditionally. See setJump().
@ GOAL_DEMO_POLE_JUMP
Jumping off the pole.
@ GOAL_DEMO_POLE_TURN
Turning toward the screen.
@ GOAL_DEMO_POLE_SWING
Swinging around the pole to the other side.
@ GOAL_DEMO_POLE_WAIT_END
Waiting sc_DemoPoleWaitEnd frames before transitioning to the course clear dance.
@ GOAL_DEMO_POLE_WAIT_JUMP
Waiting at the bottom of the pole to jump off.
@ GOAL_DEMO_POLE_SLIDE
Sliding down the pole.
@ GOAL_DEMO_WAIT_BELOW_PLAYER
Waiting for the player below to slide far enough down the pole to not be in the way of this player.
@ GOAL_DEMO_POLE_WAIT_TURN
Waiting sc_DemoPoleWaitTurn frames to turn toward the screen.
@ GOAL_DEMO_POLE_LAND
Playing the landing animation after landing.
virtual int doDelete()
do method for the delete operation.
int mNoHitTimer
Timer for how long the no-hit status lasts.
virtual int preExecute()
pre method for the execute operation.
sFStateMgr_c< daPlBase_c, sStateMethodUsr_FI_c > mDemoStateMgr
The state manager for demo (cutscene) states.
void calcSpeedOnIceLift()
int mAirWalkTimer
Timer to wait before changing to the falling state after walking off a ledge.
SquishState_e mSquishState
The player's current squish state for being jumped on by another player.
mEf::levelEffect_c mQuicksandSplashEffect
Sand splash effect when landing on quicksand.
float mKaniHeight
The height of the last cliff the player interacted with.
AnimePlayArg_e
Arguments for transitioning to the animation state.
dEf::followEffect_c mTurnSmokeEffect
The wind effect when turning around after running.
static const int sc_DemoPoleWaitEnd
Number of frames to wait before doing the course clear pose in the goal pole animation.
DemoWaitArg_e
Arguments for transitioning to the demo wait state.
@ JUMP_DAI_HIGH_JUMP
The jump button was pressed to do a higher jump.
@ JUMP_DAI_MOVE_DOWN
Moving down on the player or spring.
static const int sc_DemoWaitDuration
Number of frames to wait before transitioning from StateID_DemoWait.
float mAirTopHeight
The highest Y position since being on the ground last. Not reset when landing on the ground.
int mDemoStateArg
To be used as an argument to the new demo state.
static const int sc_DokanEnterThreshold
bool isHitGroundKinopioWalk(int, float, int)
mEf::levelEffect_c mSmokeEffect
mEf::levelEffect_c mHitAttackDropEffect
The wind effect when doing a ground pound.
fBaseID_e mBgPressIDs[13]
Index into this array with BgPress_e.
float mDispLimitAdjL
The distance by which the player is too far left.
mVec2_c mDokanMoveSpeed
Direction to move the player while entering a rolling hill pipe or a rail pipe.
virtual int draw()
do method for the draw operation.
void getTurnPower(sTurnPowerData &)
virtual bool setJump(float jumpSpeed, float speedF, bool allowSteer, int keyMode, int jumpMode)
Starts a jump action with the given parameters.
int mTimer_ce8
[Related to balloon break jump]
const daPlBase_c * mpNoHitPlayer
The player that cannot collide with this player.
float getWaterDokanCenterOffset(float)
float mTopHeight
Stores the highest Y position reached, resets when landing on the ground again.
Status_e
The status IDs to be used with onStatus(), offStatus(), isStatus() and setStatus().
@ STATUS_KANI_HANG
The player is hanging from a cliff.
@ STATUS_THROW
The player is throwing something.
@ STATUS_SPIN
The player is spinning, either from a spin jump, a propeller spin (upwards or downwards) or screw spi...
@ STATUS_POLE
The player is climbing a pole.
@ STATUS_CAN_WATER_SLIDE
The player can slide on water because of the penguin suit.
@ STATUS_TWIRL
The player is twirling in midair.
@ STATUS_INVULNERABLILITY_BLINK
Skip drawing the player this frame to create a blinking effect.
@ STATUS_PENGUIN_SWIM
The player is swimming with the penguin suit.
@ STATUS_DISPLAY_OUT_NO_DAMAGE
The player is outside of the screen bounds and should not be able to be attacked.
@ STATUS_PENGUIN_SLIDE_JUMP
The player is doing a penguin slide jump.
@ STATUS_17
[Dokan related]
@ STATUS_KANI_WALK
The player is doing a crab walk on a cliff.
@ STATUS_WAIT_JUMP
The player is doing a small hop after being affected by a small quake.
@ STATUS_HANG
The player is hanging from a ceiling rope.
@ STATUS_SINK_SAND_JUMP
The player is jumping while in sinking sand.
@ STATUS_SLOPE_HEAD_PUSH_R
The player cannot move further right on a slope because of a ceiling.
@ STATUS_IS_SPIN_HOLD_REQ
If the player spins, stay in place. [Used for the twisting screws].
@ STATUS_GOAL_POLE_TOUCHED
The player has touched the goal pole.
@ STATUS_VINE
The player is clinging to a vine / mesh net / rock wall.
@ STATUS_8D
[Cannon shot related]
@ STATUS_ENEMY_STAGE_CLEAR
The player has cleared an enemy ambush.
@ STATUS_KANI_HANG_ANIMATION
The player is animating into the hanging pose on a cliff.
@ STATUS_INITIAL_SLIDE
The player is in an initial slide action. [Used in 6-6 to slide all the way down automatically].
@ STATUS_PROPEL
The player is flying with the propeller suit.
@ STATUS_SPRING_JUMP
The player is doing a jump on a springboard.
@ STATUS_QUAKE_SMALL
A small quake that makes the player do a hop was triggered.
@ STATUS_ALL_DOWN_FADE
All players have died and the screen is transitioning.
@ STATUS_PRESS_ATTACH
The player is is attached to a enemy while ground pounding or doing a down spin. [Used for the big go...
@ STATUS_DISPLAY_OUT_DEAD
The player is outside of the screen bounds and should die as a result.
@ STATUS_GOAL_POLE_CAN_SLIDE
The player can start sliding down the goal pole.
@ STATUS_CANNON_JUMP
The player is flying out of a pipe cannon.
@ STATUS_PLAYER_JUMP
The player is doing a jump on another player.
@ STATUS_INVISIBLE
The player is invisible.
@ STATUS_ABOUT_TO_BE_DELETED
[Yoshi only?]
@ STATUS_QUAKE
The player was stunned by an earthquake.
@ STATUS_HIP_ATTACK
The player is in the ground pound action and is not yet about to stand back up.
@ STATUS_HIP_ATTACK_LAND
The player has landed after ground pounding. Only active on one frame.
@ STATUS_PENGUIN_SLIDE
The player is sliding with the penguin suit.
@ STATUS_WAS_TWIRL
The player was twirling in midair the previous frame.
@ STATUS_GOAL_POLE_TURN
The player is turning toward the screen after jumping off the goal pole.
@ STATUS_PENGUIN_RECOIL
The player is bouncing back after hitting an enemy that cannot be killed by a penguin slide.
@ STATUS_CREATED
The player was created.
@ STATUS_JUMP
The player is jumping.
@ STATUS_STOP_EXECUTE
Stop executing this player indefinitely.
@ STATUS_FOLLOW_MAME_KURIBO
Mini Goombas are attached to the player.
@ STATUS_YOSHI_DISMOUNT_JUMP
The player is doing a jump to dismount Yoshi.
@ STATUS_SPIN_HIP_ATTACK_FALL
The player is falling while doing a down spin.
@ STATUS_SIT_JUMP
The player is doing a sitting jump.
@ STATUS_8E
[Cannon shot related]
@ STATUS_PROPEL_SLOW_FALL
The player will fall slowly while spinning down with the propeller suit.
@ STATUS_CAN_SPIN
The player can shake the controller to do a spin jump or a propeller spin.
@ STATUS_GOAL_POLE_READY_FOR_JUMP_OFF
The player is ready to jump off the goal pole.
@ STATUS_BIG_JUMP
The player is doing a jump on a spring or another player.
@ STATUS_HIP_ATTACK_DAMAGE_PLAYER
The player was ground pounded by another player.
@ STATUS_STAR_JUMP
The player is jumping while in star mode.
@ STATUS_JUMP_DAI_COOLDOWN
The player recently failed to perform a big jump because of a ceiling.
@ STATUS_RIDE_YOSHI
The player is riding Yoshi.
@ STATUS_FIREBALL_PREPARE_SHOOT
The player is about to shoot a fireball.
@ STATUS_HIP_ATTACK_STAND_UP
The player is standing up after ground pounding. Only active on one frame.
@ STATUS_CAN_WATER_WALK
The player can walk on water because of the mini mushroom.
@ STATUS_CAN_PENGUIN_SLIDE
If the player can start sliding as a penguin.
@ STATUS_OUT_OF_PLAY
The player is in a bubble or has died.
@ STATUS_QUAKE_BIG
A big quake that stuns the player was triggered.
@ STATUS_HIP_ATTACK_FALL
The player is falling while ground pounding.
@ STATUS_KANI_JUMP
The player is doing a crab jump on a cliff.
@ STATUS_CAN_EXECUTE
The player can execute this frame or not.
@ STATUS_IS_PENGUIN
The player is in the penguin suit.
@ STATUS_SLOPE_HEAD_PUSH_L
The player cannot move further left on a slope because of a ceiling.
@ STATUS_DISABLE_STATE_CHANGE
Disallow state changes.
@ STATUS_WIND_AIRBORNE
The player is airborne while in a wind zone.
@ STATUS_STUNNED
Stunned by electric shock or ice.
@ STATUS_CAN_LAND
The player can land on Yoshi or another player.
@ STATUS_WALL_SLIDE
The player is sliding down a wall.
@ STATUS_DEMO_NEXT_GOTO_BLOCK
The player is transitioning after touching a next goto area.
@ STATUS_GOAL_POLE_WAIT_BELOW_PLAYER
The player is waiting for the player below to slide down the goal pole.
@ STATUS_SWIM_AGAINST_JET_H
The player is swimming against a horizontal water jet stream.
@ STATUS_PROPEL_NO_ROLL
Don't rotate the player because of the propeller suit.
@ STATUS_GOAL_POLE_FINISHED_SLIDE_DOWN
The player has reached the bottom of the goal pole after sliding down.
@ STATUS_SWIM
The player is swimming.
@ STATUS_SLIP_ACTIVE
The player is sliding.
@ STATUS_GOAL_POLE_NOT_GOAL_NO_MOVE
The player did not reach the goal pole in time and mustn't move anymore.
@ STATUS_SWIM_AGAINST_JET_V
The player is swimming against a vertical water jet stream.
@ STATUS_ON_WATER_MOVE
The player is on water by being mini or sliding with the penguin suit.
@ STATUS_PROPEL_UP
The player is flying upwards with the propeller suit.
@ STATUS_JUMP_COUNT_INCREASED
The jump combo counter was incremented this frame.
@ STATUS_NO_ANIM
Don't play any animations.
@ STATUS_A5
[Jump moving up?]
@ STATUS_39
[Swim related]
virtual int preDraw()
pre method for the draw operation.
void * mStateArg
To be used as an argument to the new state.
int wasStaffCreditGroundHipAttack
Whether the floor was ground pounded during the staff credits. [Used to allow for the coin block grou...
void setControlDemoCutscene(AnimePlayArg_e animID)
virtual int execute()
do method for the execute operation.
static const int sc_DemoPoleWaitTurn
Number of frames to wait before turning towards the screen in the goal pole animation.
int mSubstateValue
States can use this field for various purposes - as a timer, boolean flag, etc.
SwimArg_e
Arguments for transitioning to the swim state.
@ SWIM_ARG_FIREBALL
Player was about to shoot a fireball, shoot it while in water.
@ SWIM_ARG_ENTERING
Just entered the water.
@ SWIM_ARG_INITIAL
Already in water at the start of the swim action.
@ SWIM_ARG_CLIFF_HANG
Falling from a cliff into water.
virtual void postExecute(fBase_c::MAIN_STATE_e status)
post method for the execute operation.
u8 mIsDispLimitR
Whether the player is too far to the right and should be pushed to the left.
u8 mIsDispLimitL
Whether the player is too far to the left and should be pushed to the right.
void changeDemoState(const sStateIDIf_c &stateID, int arg)
Transitions to a new state with the given state ID and argument.
int mSquishCooldownTimer
Cooldown for another player to squish this player.
CrouchArg_e
Arguments for transitioning to the crouch state.
@ CROUCH_ARG_FROM_WALK
Crouching while already on the ground.
@ CROUCH_ARG_FROM_SIT_JUMP
Landing from a crouch jump.
@ CROUCH_ARG_FROM_OTHER
Crouching after a slide or a ground pound.
AnmBlend_e
Blending modes for animations.
@ BLEND_DEFAULT
Use the default blend duration specified in the animation HIO.
@ BLEND_NONE
Do not blend between animations.
@ BGC_37
Cannot wall kick or ground pound while this is set.
@ BGC_VINE_TOUCH_R
Touching a vine / mesh net / rock wall on the right.
@ BGC_VINE_TOUCH_FULL
Fully touching a vine / mesh net / rock wall.
@ BGC_VINE_TOUCH_U
Touching a vine / mesh net / rock wall on the top.
@ BGC_LIFT
[Figure out a better name for this].
@ BGC_VINE_TOUCH_L
Touching a vine / mesh net / rock wall on the left.
@ BGC_VINE_TOUCH_D
Touching a vine / mesh net / rock wall on the bottom.
@ BGC_VINE_TOUCH
Touching a vine / mesh net / rock wall on any side.
MAIN_STATE_e
The possible operation results.
A two-dimensional floating point vector.
A three-dimensional floating point vector.
A wrapper for sStateMgr_c that uses sFStateFct_c and sStateIDChk_c.
PLAYER_TYPE_e
The identifiers for each player type.
PLAYER_POWERUP_e
The identifiers for each powerup.
fBaseID_e
A unique identifier for each base.
#define STATE_VIRTUAL_FUNC_DECLARE(class, name)
Declares a virtual state.