New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
CarryEnemy.h
Go to the documentation of this file.
1#pragma once
2
3#include <enemy/Enemy.h>
4#include <map/CarryType.h>
5
6class PlayerBase;
7class PlayerObject;
8
9// vtbl Address: 0x100625BC
10class CarryEnemy : public Enemy
11{
12 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: 0x101E9F7C
13 // getRuntimeTypeInfoStatic()::typeInfo Address: 0x101E9FC0
14 SEAD_RTTI_OVERRIDE(CarryEnemy, Enemy)
15
16public:
17 static const s32 cShellSlideNoHitTimer = 10;
18
19public:
20 // Address: 0x022EB09C
21 CarryEnemy(const ActorCreateParameter& param);
22
23protected:
24 // Address: 0x022EB18C
26 // Address: 0x022EB218
27 Result doDelete() override;
28
29public:
31 {
32 return isState(StateID_Sleep);
33 }
34
35 // Address: 0x022EB368
36 void setSpinLiftUpActor(Actor* player) override;
37
38 // Address: 0x022EB370
39 bool carryCheckBg(Actor* player);
40 // Address: 0x022EB724
41 void setDeathInfo_CarryBgIn(Actor* player, bool eff_set);
42
43 // Address: 0x022EB808
45 // Address: 0x022EB844
47
48 // Address: 0x022EB888
49 bool carryCheck(Actor* player);
50
51 // Address: 0x022EB1CC
53
54 // Address: 0x022EB988
55 bool checkSleepEnd() const;
56
57 // Address: 0x022EBB2C
58 void startSlide();
59 // Address: 0x022EBBFC
60 void endSlide();
61
62 // Address: 0x022EBA94
63 void setSlideCc();
64 // Address: 0x022EBB64
66
67 // Address: 0x022EBADC
68 void setSlideBc();
69 // Address: 0x022EBBAC
71
72 // Address: 0x022EBC34
73 DirType getRevisionDir(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
74
75 // Address: 0x022EBC60
76 void vsPlayerHitCheck_Normal(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
77
78 // Address: 0x022EBD7C
79 virtual void reactFumiProc(Actor* player);
80 // Address: 0x022EBD80
81 virtual void reactMameFumiProc(Actor* player);
82 // Address: 0x022EBD84
83 virtual void reactSpinFumiProc(Actor* player);
84
85 // Address: 0x022EBD88
86 bool fumiProcCheck(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
87
88 // Address: 0x022EBE7C
89 virtual void playerHitCheck_Awake(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
90 // Address: 0x022EBFEC
91 virtual void playerHitCheck_Sleep(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
92 // Address: 0x022EC06C
93 virtual void playerHitCheck_Carry(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
94
95 // Address: 0x022ED6FC
96 virtual void playerHitCheck_Sleep_Base(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
97 // Address: 0x022EC068
98 void playerHitCheck_Carry_Base(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
99
100 virtual void setPutOnChangeState(Actor* player) = 0;
101 virtual void setThrowChangeState(Actor* player, bool hard) = 0;
102
103 // Address: 0x022EC130
104 bool hitCallback_Ice(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
105
106 // Address: 0x022EC18C
107 bool hitCallback_Shell(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
108
109 // Address: 0x022EC59C
110 bool hitCallback_AttackUnk27(bool* dead, ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
111
112 // Address: 0x022EC648
113 void setSlidePlayerParam(Actor* player);
114
115 // Address: 0x022EC6B8
116 void calcCarryPos(sead::Vector3f* pos, PlayerObject* player_obj);
117 // Address: 0x022ECA60
118 void adjustCarryCc(ActorCollisionCheck* cc, PlayerObject* player_obj);
119
120 // StateID_Carry Address: 0x101FF7EC
121 // initializeState_Carry Address: 0x022ECD00
122 // executeState_Carry Address: 0x022ECD8C
123 // finalizeState_Carry Address: 0x022ECF84
124 DECLARE_STATE_VIRTUAL_ID_BASE(CarryEnemy, Carry)
125 // StateID_Sleep Address: 0x101FF810
126 // initializeState_Sleep Address: 0x022ED700
127 // executeState_Sleep Address: 0x022ED704
128 // finalizeState_Sleep Address: 0x022ED708
130 // StateID_Slide Address: 0x101FF834
131 // initializeState_Slide Address: 0x022ED02C
132 // executeState_Slide Address: 0x022ED70C
133 // finalizeState_Slide Address: 0x022ED07C
135
136private:
137 // Address: 0x022EB880
139
140 // Address: 0x022EB190
142
143 // Address: 0x022EB23C
144 void setCarryImpl_(Actor* player, CarryType type);
145
146 // Address: 0x022EBED8
147 bool sleepSpinFumiProcCheck_(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
148
149 inline void reviseCarryBgPosX_(ActorBgCollisionCheck& bc, const sead::Vector3f& player_pos);
150 inline void reviseCarryBgPosY_(ActorBgCollisionCheck& bc);
151
152protected:
157 u32 _18a0; // Unused
158 u32 _18a4; // ^^^
163};
164static_assert(sizeof(CarryEnemy) == 0x18B8);
Definition CarryEnemy.h:11
bool checkSleepEnd() const
PlayerObject * getCarryPlayerObject_() const
s8 mCarryPlayerNo
Definition CarryEnemy.h:159
void reviseCarryBgPosY_(ActorBgCollisionCheck &bc)
f32 mCarryChangePosZ
Definition CarryEnemy.h:156
void adjustCarryCc(ActorCollisionCheck *cc, PlayerObject *player_obj)
void setDeathInfo_CarryBgIn(Actor *player, bool eff_set)
void setSpinLiftUpActor(Actor *player) override
void resetSlideBc()
bool preExecute() override
Callback invoked before the execute operation.
virtual void reactFumiProc(Actor *player)
void setSlideCc()
void setSlidePlayerParam(Actor *player)
virtual void playerHitCheck_Carry(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
void reviseCarryBgPosX_(ActorBgCollisionCheck &bc, const sead::Vector3f &player_pos)
bool hitCallback_AttackUnk27(bool *dead, ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
PlayerObject * getCarryPlayerObject() const
sead::Vector3f mCarryBaseOffset
Definition CarryEnemy.h:153
virtual void reactSpinFumiProc(Actor *player)
bool mForceSetShellDamageEffect
Definition CarryEnemy.h:161
virtual void setPutOnChangeState(Actor *player)=0
virtual void setThrowChangeState(Actor *player, bool hard)=0
bool isSpinLiftUpEnable() override
Definition CarryEnemy.h:30
virtual void reactMameFumiProc(Actor *player)
bool hitCallback_Ice(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
Result doDelete() override
void startSlide()
bool mIsLiftUp
Definition CarryEnemy.h:162
ActorCollisionCheck::Vec2 mPreCarryCcHalfSize
Definition CarryEnemy.h:155
PlayerObject * getCarryPlayerObject2() const
ActorCollisionCheck::Vec2 mPreCarryCcCenterOffset
Definition CarryEnemy.h:154
void playerHitCheck_Carry_Base(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
u32 _18a0
Definition CarryEnemy.h:157
CarryEnemy(const ActorCreateParameter &param)
void setCarryImpl_(Actor *player, CarryType type)
bool fumiProcCheck(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
u32 _18a4
Definition CarryEnemy.h:158
void cancelCarry()
void setSlideBc()
void resetSlideCc()
void vsPlayerHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void playerHitCheck_Sleep(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual void playerHitCheck_Awake(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
bool carryCheckBg(Actor *player)
virtual void playerHitCheck_Sleep_Base(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
bool carryCheck(Actor *player)
bool sleepSpinFumiProcCheck_(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
bool hitCallback_Shell(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
void calcCarryPos(sead::Vector3f *pos, PlayerObject *player_obj)
UniqueID mCarryPlayerID
Definition CarryEnemy.h:160
DirType getRevisionDir(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
void endSlide()
Definition PlayerBase.h:40
Definition PlayerObject.h:23