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