NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
d_actor.hpp
1#pragma once
2
3#include <game/bases/d_base_actor.hpp>
4#include <game/mLib/m_3d.hpp>
5#include <game/bases/d_cc.hpp>
6#include <game/bases/d_bc.hpp>
7#include <game/bases/d_rc.hpp>
8#include <_dummy_classes.hpp>
9
10class dAcPy_c;
11class dPropelParts_c;
12
13/// @brief The minimum required implementation for a stage actor.
14/// @ingroup bases
15class dActor_c : public dBaseActor_c {
16public:
17
18 /// @brief The score awarded when the actor is eaten by Yoshi.
20 EAT_POINTS_200, ///< Awards 200 points (default).
21 EAT_POINTS_1000, ///< Awards 1000 points. @unused
22 EAT_POINTS_NONE ///< No points are awarded. @unused
23 };
24
25 /// @brief The possible actor eat states.
27 EAT_STATE_NONE, ///< The actor is not being eaten.
28 EAT_STATE_EATING, ///< The actor is in the process of being eaten.
29 EAT_STATE_EATEN, ///< The actor has been successfully eaten.
30 EAT_STATE_SPIT, ///< The actor is about to be spat out. Used for spitting out players when Yoshi is dismounted.
31 EAT_STATE_SPAT ///< The actor has been spat out.
32 };
33
34 /// @brief The possible actor behaviors when eaten by Yoshi.
36 EAT_TYPE_NONE, ///< The actor cannot be eaten.
37 EAT_TYPE_EAT, ///< The actor can be eaten and then spat out.
38 EAT_TYPE_EAT_PERMANENT, ///< The actor is consumed permanently after being eaten (default).
39 EAT_TYPE_UNK3, ///< Unknown behaviour. Used on Fruits, Pokeys and Giant Fuzzies.
40 EAT_TYPE_FIREBALL, ///< Yoshi can spit a fireball after eating the actor.
41 EAT_TYPE_ICEBALL, ///< Yoshi can spit an iceball after eating the actor.
42 };
43
44 /// @brief The possible stage actor kinds.
46 STAGE_ACTOR_GENERIC, ///< A generic stage actor (default).
47 STAGE_ACTOR_PLAYER, ///< The @ref dAcPy_c "player actor".
48 STAGE_ACTOR_YOSHI, ///< The @ref daYoshi_c "Yoshi actor".
49 STAGE_ACTOR_ENTITY, ///< An interactable entity actor.
50 };
51
52 /// @brief The possible carry actions.
54 CARRY_RELEASE = BIT_FLAG(0), ///< The actor is being released from carry.
55 CARRY_THROW = BIT_FLAG(1), ///< The actor is being actively thrown by the player.
56 };
57
58 /// @brief The collision directions that an actor can respond to.
60 COLL_NONE = BIT_FLAG(-1), ///< The actor does not collide with any surface.
61 COLL_HEAD = BIT_FLAG(0), ///< The actor can collide with ceilings.
62 COLL_WALL_L = BIT_FLAG(1), ///< The actor can collide with walls on its left.
63 COLL_WALL_R = BIT_FLAG(2), ///< The actor can collide with walls on its right.
64 COLL_FOOT = BIT_FLAG(3), ///< The actor can collide with the ground.
65 };
66
67 /// @brief Information related to actor spawning.
69 ACTOR_SPAWNED = BIT_FLAG(0), ///< The actor is spawned.
70 ACTOR_NO_RESPAWN = BIT_FLAG(3), ///< The actor must not respawn after deletion.
71 };
72
73 /// @brief Flags used to control out of screen checks.
75 SKIP_NONE = BIT_FLAG(-1), ///< No checks are skipped.
76 SKIP_ACTOR_DELETE = BIT_FLAG(1), ///< The actor is not deleted if out of screen.
77 SKIP_SCREEN_CHECK = BIT_FLAG(2), ///< The actor position is not checked against the screen boundaries.
78 SKIP_RIDE_CHECK = BIT_FLAG(3), ///< The actor's ride status is not checked.
79 };
80
81 dActor_c(); ///< @copydoc dBaseActor_c::dBaseActor_c
82 ~dActor_c(); ///< @copydoc dBaseActor_c::~dBaseActor_c
83
84 virtual int preCreate();
85 virtual void postCreate(fBase_c::MAIN_STATE_e status);
86
87 virtual int preDelete();
88 virtual void postDelete(fBase_c::MAIN_STATE_e status);
89
90 virtual int preExecute();
91 virtual void postExecute(fBase_c::MAIN_STATE_e status);
92
93 virtual int preDraw();
94 virtual void postDraw(fBase_c::MAIN_STATE_e status);
95
96 virtual const char *getKindString() const;
97
98 /// @brief Checks if the actor is out of view.
99 /// @return @p true if the actor is out of view, else @p false.
100 virtual bool ActorDrawCullCheck();
101
102 virtual void block_hit_init(); ///< Callback for when a block directly beneath the actor is hit.
103
104 virtual bool vf68(dBg_ctr_c *collider) { return true; } ///< Unknown, related to collision. @unofficial
105 virtual s8 *getPlrNo() { return &mPlayerNo; } ///< Gets the player number associated with the actor. See ::mPlayerNo.
106 virtual mVec2_c getLookatPos() const; ///< Gets the position players look to when focused on the actor.
107
108 /// @brief Returns whether the actor can be carried.
109 virtual bool isSpinLiftUpEnable() { return true; }
110
111 /// @brief Callback for when the actor is picked up by another actor.
112 /// @param carryingActor The actor performing the carrying action.
113 virtual void setSpinLiftUpActor(dActor_c *carryingActor);
114
115 /// @brief Callback for when the actor is dropped by the carrying actor.
116 /// @param carryingActor The carrying actor.
117 /// @param collisionDelay The amount of frames during which collisions with the former carrier are ignored.
118 virtual void setCarryFall(dActor_c *carryingActor, int collisionDelay) {}
119
120 /// @brief Callback for when the actor is targeted by Yoshi's tongue.
121 /// @param eatingActor The actor performing the eating action.
122 virtual void setEatTongue(dActor_c *eatingActor);
123
124 /// @brief Callback for when the eating action is canceled.
125 /// @details This only seems to occur when two actors try to eat the same actor at the same time.
126 /// @param eatingActor The actor performing the eating action.
127 virtual void setEatTongueOff(dActor_c *eatingActor);
128
129 /// @brief Callback for when the actor is being eaten.
130 /// @param eatingActor The actor performing the eating action.
131 virtual void setEatMouth(dActor_c *eatingActor);
132
133 /// @brief Callback for when the actor is about to be spat out.
134 /// @param eatingActor The actor performing the eating action.
135 /// @return Whether the actor should be spat out.
136 virtual bool setEatSpitOut(dActor_c *eatingActor);
137
138 /// @brief Callback for when the actor is about to be fully swallowed.
139 /// @param eatingActor The eating actor.
140 /// @return Always returns @p true .
141 virtual bool setEatGlupDown(dActor_c *eatingActor);
142
143 /// @brief Updates the actor's position during eating actions.
144 /// @param eatingActor The eating actor.
145 virtual void eatMove(dActor_c *eatingActor);
146
147 virtual void removeCc(); ///< Disables the actor's collision.
148 virtual void reviveCc(); ///< Enables the actor's collision.
149 virtual void setAfterEatScale(); ///< Restores the actor's scale once spat out.
150 virtual void calcSpitOutPos(dActor_c *eatingActor); ///< Calculates the position where the actor will be spat out.
151 virtual float calcEatScaleRate(dActor_c *eatingActor); ///< Computes the scaling rate during eating.
152 virtual void calcEatInScale(dActor_c *eatingActor); ///< Adjusts the actor's scale while being eaten.
153
154 /// @brief Spawns the visual effects for when all players reach the flagpole and all enemies are cleared.
155 virtual void allEnemyDeathEffSet();
156
157 virtual void vfb4(); ///< @unofficial
158 virtual void funsuiMoveX() {} ///< @unused
159 virtual void cancelFunsuiActUpper(); ///< @unused
160 virtual void cancelFunsuiActSide(int); ///< @unused
161 virtual void cancelFunsuiActVanish(); ///< @unused
162
163 /// @brief Generates a water splash effect.
164 /// @param pos The effect position.
165 /// @param size The effect scale.
166 virtual void waterSplashEffect(const mVec3_c &pos, float size);
167
168 /// @brief Generates a lava splash effect.
169 /// @param pos The effect position.
170 /// @param size The effect scale.
171 virtual void yoganSplashEffect(const mVec3_c &pos, float size);
172
173 /// @brief Generates a poison water splash effect.
174 /// @param pos The effect position.
175 /// @param size The effect scale.
176 virtual void poisonSplashEffect(const mVec3_c &pos, float size);
177
178 bool checkAreaNo(); ///< Checks if at least one player is in the same zone as the actor.
179
180 static void setSoftLight_Player(m3d::bmdl_c &mdl); ///< @copydoc dGameCom::SetSoftLight_Player
181 static void setSoftLight_Enemy(m3d::bmdl_c &mdl); ///< @copydoc dGameCom::SetSoftLight_Enemy
182 static void setSoftLight_Map(m3d::bmdl_c &mdl); ///< @copydoc dGameCom::SetSoftLight_Map
183 static void setSoftLight_MapObj(m3d::bmdl_c &mdl); ///< @copydoc dGameCom::SetSoftLight_MapObj
184 static void setSoftLight_Boss(m3d::bmdl_c &mdl); ///< @copydoc dGameCom::SetSoftLight_Boss
185 static void setSoftLight_Item(m3d::bmdl_c &mdl); ///< @copydoc dGameCom::SetSoftLight_Item
186
187 /// @brief Deletes the actor and optionally disables respawn.
188 /// @param deleteForever Whether the actor must not respawn after being deleted. Only applies to actors created by sprites.
189 void deleteActor(u8 deleteForever);
190
191 /// @brief Checks if the actor should be culled due to zone limits.
192 /// @unofficial
193 /// @param pos The actor position.
194 /// @param bound The actor's bounding box.
195 /// @param areaID The actor's zone ID.
196 /// @return Whether the actor should be culled.
197 bool areaCullCheck(const mVec3_c &pos, const mBoundBox &bound, u8 areaID) const;
198
199 /// @brief Checks if the actor is out of gameplay and optionally deletes it.
200 /// @param flags The flags to control which actions to perform. Value is a ::SCREEN_OUT_e.
201 /// @return Whether the actor is out of gameplay.
202 bool ActorScrOutCheck(u16 flags);
203
204 /// @brief Checks if the actor should be culled due to being outside the screen.
205 /// @decompnote{Likely belongs to the dGameCom namespace.}
206 /// @unofficial
207 /// @param pos The actor position.
208 /// @param visibleBound The actor's visible bounding box.
209 /// @param destroyBound The actor's deletion bounding box.
210 /// @param areaID The actor's zone ID (unused).
211 /// @return Whether the actor should be culled.
212 static bool screenCullCheck(const mVec3_c &pos, const mBoundBox &visibleBound, mBoundBox destroyBound, u8 areaID);
213
214 /// @brief Returns whether the actor is colliding with any enabled collision sides.
215 /// @unofficial
216 bool checkBgColl();
217
218 /// @brief Checks if the prompt for the given action should be displayed for each player.
219 /// @param fukidashiAction The action to be checked.
220 /// @param fukidashiTriggerSize The size of the area around the actor where the prompt is displayed.
221 /// @return Always returns @p false .
222 bool carryFukidashiCheck(int fukidashiAction, mVec2_c fukidashiTriggerSize);
223
224 /// @brief Searches the closest player who has not yet performed the given action.
225 /// @param fukidashiAction The action to be checked.
226 /// @return The closest player meeting the criteria, or @p nullptr if not found.
227 dAcPy_c *searchCarryFukidashiPlayer(int fukidashiAction);
228
229 /// @brief Hides the given action prompt for all players.
230 /// @param fukidashiAction The action to be hidden.
231 /// @param playerId The player for whom the action prompt should never be shown again, or @p -1 if none.
232 void carryFukidashiCancel(int fukidashiAction, int playerId);
233
234 /// @brief Kills the actor and optionally awards points to one or all players.
235 /// @unofficial
236 /// @param playerId The player to assign the score resulting from the kill, or @p -1 to award it to all players.
237 /// @param noScore Whether points should not be awarded from the kill.
238 void killActor(s8 playerId, int noScore);
239
240 /// @brief Plays the combo kill sound effect.
241 /// @param multiplier The combo multiplier.
242 /// @param shortCombo Whether the combo starts at 1000 points instead of 200 points.
243 void slideComboSE(int multiplier, bool shortCombo);
244
245 void clrComboCnt(); ///< Clears the actor's combo counter.
246
247 /// @brief Returns whether the actor is being carried by a player.
248 /// @param playerNum A pointer where the carrying player's number will be written to, or @p nullptr .
249 /// @return Whether the actor is being carried by a player.
250 bool checkCarried(int *playerNum);
251
252 /// @brief Gets the closest @ref dAcPy_c "player" to the actor and its distance.
253 /// @details Centered positions are used to calculate the distance.
254 /// @param delta The vector where the distance between the actor and the player will be written to.
255 /// @return The closest player, or @p nullptr .
257
258 /// @brief Gets the closest @ref dAcPy_c "player" to the given position and its distance.
259 /// @details Centered positions are used to calculate the distance.
260 /// @param delta The vector where the distance to the player will be written to.
261 /// @param pos The position to use for the search.
262 /// @return The closest player, or @p nullptr .
263 typedef dAcPy_c *(*searchNearPlayerFunc)(mVec2_c &delta, const mVec2_c &pos);
264 static dAcPy_c *searchNearPlayer_Main(mVec2_c &delta, const mVec2_c &pos); ///< See ::searchNearPlayerFunc.
265 static dAcPy_c *searchNearPlayerNormal(mVec2_c &delta, const mVec2_c &pos); ///< See ::searchNearPlayerFunc.
266 static dAcPy_c *searchNearPlayerLoop(mVec2_c &delta, const mVec2_c &pos); ///< See ::searchNearPlayerFunc.
267
268 /// @brief Gets the direction the target position is in, from the source position's viewpoint.
269 /// @param trgX The target X position.
270 /// @param srcX The source X position.
271 /// @return The direction the target is in.
272 typedef bool (*getTrgToSrcDirFunc)(float trgX, float srcX);
273 static bool getTrgToSrcDir_Main(float trgX, float srcX); ///< See ::getTrgToSrcDirFunc.
274 static bool getTrgToSrcDirNormal(float trgX, float srcX); ///< See ::getTrgToSrcDirFunc.
275 static bool getTrgToSrcDirLoop(float trgX, float srcX); ///< See ::getTrgToSrcDirFunc.
276
277 /// @brief Adjusts the actor's position to account for looping stages.
278 /// @param pos The position to be updated.
279 /// @param ang The rotation (unused).
280 /// @param param3 Always @p 1 (unused).
281 static void changePosAngle(mVec3_c *pos, mAng3_c *ang, int param3);
282
283 /// @brief Sets the player search function to be used for the level.
284 /// @param loopType The loop type. See dScStage_c::LOOP_TYPE_e.
285 static void setSearchNearPlayerFunc(int loopType);
286
287 /// @brief Sets the direction detection function to be used for the level.
288 /// @param loopType The loop type. See dScStage_c::LOOP_TYPE_e.
289 static void setGetTrgToSrcDirFunc(int loopType);
290
291 /// @brief Sets the position update function to be used for the level.
292 /// @param loopType The loop type. See dScStage_c::LOOP_TYPE_e.
293 static void setChangePosAngleFunc(int loopType);
294
295 /// @brief Sets the position-related functions for the level.
296 /// @param loopType The loop type. See dScStage_c::LOOP_TYPE_e.
297 static void setLoopFunc(int loopType);
298
299 void setKind(u8 kind); ///< Sets the actor's kind. See ::STAGE_ACTOR_KIND_e.
300
301 /// @brief Sets temporary data to be used for the next actor's construction.
302 /// @param layer The actor's layer.
303 static void setTmpCtData(u8 layer);
304
305 /**
306 * @brief Creates a stage actor without a parent.
307 *
308 * @details The actor is created as a child of the current scene actor, so that all actors can be
309 * deleted on a scene change, acting as a garbage collection mechanism.
310 * @param profName The actor's profile name.
311 * @param param The actor's parameters.
312 * @param position The actor's position.
313 * @param rotation The actor's rotation.
314 * @param layer The actor's layer.
315 * @return A pointer to the instantiated actor, or @p nullptr .
316 */
317 static dActor_c *construct(ProfileName profName, unsigned long param, const mVec3_c *position, const mAng3_c *rotation, u8 layer);
318
319 /**
320 * @brief Creates a child stage actor with the given parent.
321 *
322 * @param profName The actor's profile name.
323 * @param parent The actor's parent. Must not be @p nullptr .
324 * @param param The actor's parameters.
325 * @param position The actor's position.
326 * @param rotation The actor's rotation.
327 * @param layer The actor's layer.
328 * @return A pointer to the instantiated actor, or @p nullptr .
329 */
330 static dActor_c *construct(ProfileName profName, dBase_c *parent, unsigned long param, const mVec3_c *position, const mAng3_c *rotation, u8 layer);
331
332 u8 m_00; ///< Seems to be a player bit flag. @unused
333 u32 mCarryFukidashiPlayerNo; ///< The player for whom an action prompt related to the actor is being displayed. @p -1 if no players meet this criteria.
334 CARRY_ACTION_e mCarryingFlags; ///< The actor's carry actions.
335 u32 mThrowDirection; ///< The actor's direction when thrown or dropped after carrying.
336 u32 mComboMultiplier; ///< The current combo multiplier obtained by the actor by colliding with other actors.
337 u8 m_13; ///< @unused
338 u32 m_17; ///< @unused
339 float m_1b; ///< @unused
340 u32 m_1f; ///< @unused
341
342 dCc_c mCc; ///< The actor-to-actor collision sensor.
343 dBc_c mBc; ///< The actor-to-tile collision sensor.
344 dRc_c mRc; ///< The actor's ride surface manager.
345
346 mVec2_c m_1eb; ///< @todo Figure out the purpose of this field.
347
348 mVec2_c mVisibleAreaSize; ///< The size of the area inside which the actor is visible.
349 mVec2_c mVisibleAreaOffset; ///< The offset applied to the area size.
350 mBoundBox mMaxBound; ///< @todo Figure out the exact purpose of this field.
351 mBoundBox mDestroyBound; ///< @todo Figure out the exact purpose of this field.
352 u8 mDirection; ///< The actor's facing direction.
353 u8 mAreaNo; ///< The actor's zone ID.
354 u8 mBgCollFlags; ///< The collision directions that the actor can respond to.
355
356 u8 *mpSpawnFlags; ///< The spawn flags for the actor. See ::ACTOR_SPAWN_FLAG_e.
357 u16 *mpDeleteVal; ///< @unused
358 u16 mEventNums; ///< The event IDs the actor is tracking.
359 u64 mEventMask; ///< The event mask, generated from ::mEventNums.
360
361 u32 m_23b; ///< @todo Figure out the purpose of this field.
362 u16 mSpriteSpawnFlags; ///< The spawn flags from the sprite data entry.
363 bool mBlockHit; ///< Whether a block below the actor was hit.
364
365 u32 mEatenByID; ///< The @ref fBase_c::mUniqueID "unique identifier" of the eating actor.
366 u8 mEatState; ///< The actor's eat state. Value is a ::EAT_STATE_e.
367 u8 mEatBehaviour; ///< The actor's eat behaviour. Value is a ::EAT_BEHAVIOR_e.
368 mVec3_c mPreEatScale; ///< The actor's scale before being eaten.
369
370 EAT_POINTS_e mEatPoints; ///< @copydoc EAT_POINTS_e
371 int mAttentionMode; ///< @todo Document this field and its values.
372 u32 mAttentionFlags; ///< @todo Document this field and its values.
373
374 dPropelParts_c *mPropelParts; ///< The actor's propeller effect manager.
375 u8 mKind; ///< The actor's kind. Value is a ::STAGE_ACTOR_KIND_e.
376 s8 mPlayerNo; ///< The player associated with the actor, @p -1 if not associated to any player.
377 u8 mExecStopMask; ///< The mask required to disable the @p execute operation for the actor.
378 u8 mLayer; ///< The actor's layer.
379 bool mNoRespawn; ///< Whether the actor should not respawn after being deleted.
380 bool mBackFence; ///< Whether the actor is on the back side of chainlink fences.
381
382 mBoundBox getDestroyBound() { return mDestroyBound; }
383
384 void setDefaultMaxBound() {
386 }
387
388 float getCenterX() { return getCenterPos().x; }
389 float getCenterY() { return getCenterPos().y; }
390
391 u8 getKindMask() { return 1 << mKind; }
392
393 static const float smc_CULL_XLIMIT; ///< The default @ref mMaxBound "max bound" X offset.
394 static const float smc_CULL_YLIMIT; ///< The default @ref mMaxBound "max bound" Y offset.
395 static const float smc_CULL_AREA_XLIMIT; ///< The default @ref mMaxBound "max bound" X size.
396 static const float smc_CULL_AREA_YLIMIT; ///< The default @ref mMaxBound "max bound" Y size.
397 static const mVec2_c smc_FUKIDASHI_RANGE; ///< The default trigger area size for displaying action prompts.
398
399 static u8 mExecStopReq; ///< The actors for which the @p execute operation is requested to be disabled.
400 static u8 mDrawStopReq; ///< The actor kinds for which the @p draw operation is requested to be disabled.
401 static u8 mExecStop; ///< The actors for which the @p execute operation is currently disabled.
402 static u8 mDrawStop; ///< The actor kinds for which the @p draw operation is currently disabled.
403 static searchNearPlayerFunc mSearchNearPlayerFunc; ///< The player search function.
404 static getTrgToSrcDirFunc mGetTrgToSrcDirFunc; ///< The direction detection function.
405 static u8 m_tmpCtLayerNo; ///< Temporary storage for the next constructed actor's layer. See ::mLayer.
406
407 /// @brief Temporary storage for the next created sprite actor's spawn flags. See ::mpSpawnFlags. @unofficial
409
410 /// @brief Temporary storage for the next created sprite actor's tracked event IDs. See ::mEventNums. @unofficial
412
413 /// @brief Temporary storage for the next created sprite actor's event mask. See ::mEventMask. @unofficial
415
416 /// @brief Temporary storage for the next created sprite actor's layer. See ::mLayer. @unofficial
418};
419
420extern const u8 l_Ami_Line[2]; ///< The sub-layer for each side of chainlink fences.
421extern const float l_Ami_Zpos[2]; ///< The additional Z offset for each side of chainlink fences.
The minimum required implementation for a stage actor.
Definition d_actor.hpp:15
float m_1b
Definition d_actor.hpp:339
static u8 mExecStopReq
The actors for which the execute operation is requested to be disabled.
Definition d_actor.hpp:399
static u8 mExecStop
The actors for which the execute operation is currently disabled.
Definition d_actor.hpp:401
static bool getTrgToSrcDirLoop(float trgX, float srcX)
See getTrgToSrcDirFunc.
Definition d_actor.cpp:285
void deleteActor(u8 deleteForever)
Deletes the actor and optionally disables respawn.
Definition d_actor.cpp:356
static const float smc_CULL_AREA_XLIMIT
The default max bound X size.
Definition d_actor.hpp:395
u8 mExecStopMask
The mask required to disable the execute operation for the actor.
Definition d_actor.hpp:377
static dActor_c * construct(ProfileName profName, unsigned long param, const mVec3_c *position, const mAng3_c *rotation, u8 layer)
Creates a stage actor without a parent.
Definition d_actor.cpp:167
void slideComboSE(int multiplier, bool shortCombo)
Plays the combo kill sound effect.
Definition d_actor.cpp:699
virtual bool setEatGlupDown(dActor_c *eatingActor)
Callback for when the actor is about to be fully swallowed.
Definition d_actor.cpp:625
virtual void setCarryFall(dActor_c *carryingActor, int collisionDelay)
Callback for when the actor is dropped by the carrying actor.
Definition d_actor.hpp:118
bool mBlockHit
Whether a block below the actor was hit.
Definition d_actor.hpp:363
dAcPy_c * searchNearPlayer(mVec2_c &delta)
Gets the closest player to the actor and its distance.
Definition d_actor.cpp:191
CARRY_ACTION_e
The possible carry actions.
Definition d_actor.hpp:53
@ CARRY_RELEASE
The actor is being released from carry.
Definition d_actor.hpp:54
@ CARRY_THROW
The actor is being actively thrown by the player.
Definition d_actor.hpp:55
static void setLoopFunc(int loopType)
Sets the position-related functions for the level.
Definition d_actor.cpp:306
bool checkAreaNo()
Checks if at least one player is in the same zone as the actor.
Definition d_actor.cpp:312
void carryFukidashiCancel(int fukidashiAction, int playerId)
Hides the given action prompt for all players.
Definition d_actor.cpp:538
virtual void postCreate(fBase_c::MAIN_STATE_e status)
post method for the create operation.
Definition d_actor.cpp:89
virtual void postDelete(fBase_c::MAIN_STATE_e status)
post method for the delete operation.
Definition d_actor.cpp:101
mVec3_c mPreEatScale
The actor's scale before being eaten.
Definition d_actor.hpp:368
static void setSoftLight_MapObj(m3d::bmdl_c &mdl)
Sets the soft light effect for map objects.
Definition d_actor.cpp:334
virtual void cancelFunsuiActUpper()
Definition d_actor.cpp:693
u8 m_00
Seems to be a player bit flag.
Definition d_actor.hpp:332
static u8 * m_tmpCtSpawnFlags
Temporary storage for the next created sprite actor's spawn flags. See mpSpawnFlags.
Definition d_actor.hpp:408
static void setSoftLight_Map(m3d::bmdl_c &mdl)
Sets the soft light effect for map actors.
Definition d_actor.cpp:330
bool mNoRespawn
Whether the actor should not respawn after being deleted.
Definition d_actor.hpp:379
virtual void setSpinLiftUpActor(dActor_c *carryingActor)
Callback for when the actor is picked up by another actor.
Definition d_actor.cpp:611
virtual void reviveCc()
Enables the actor's collision.
Definition d_actor.cpp:803
static void setTmpCtData(u8 layer)
Sets temporary data to be used for the next actor's construction.
Definition d_actor.cpp:162
dPropelParts_c * mPropelParts
The actor's propeller effect manager.
Definition d_actor.hpp:374
static u64 m_tmpCtEventMask
Temporary storage for the next created sprite actor's event mask. See mEventMask.
Definition d_actor.hpp:414
static u8 m_tmpCtLayerNo
Temporary storage for the next constructed actor's layer. See mLayer.
Definition d_actor.hpp:405
u8 * mpSpawnFlags
The spawn flags for the actor. See ACTOR_SPAWN_FLAG_e.
Definition d_actor.hpp:356
CARRY_ACTION_e mCarryingFlags
The actor's carry actions.
Definition d_actor.hpp:334
dBc_c mBc
The actor-to-tile collision sensor.
Definition d_actor.hpp:343
static getTrgToSrcDirFunc mGetTrgToSrcDirFunc
The direction detection function.
Definition d_actor.hpp:404
static u8 m_tmpCtSpriteLayerNo
Temporary storage for the next created sprite actor's layer. See mLayer.
Definition d_actor.hpp:417
virtual void poisonSplashEffect(const mVec3_c &pos, float size)
Generates a poison water splash effect.
Definition d_actor.cpp:766
static bool getTrgToSrcDir_Main(float trgX, float srcX)
See getTrgToSrcDirFunc.
Definition d_actor.cpp:277
static void setSoftLight_Enemy(m3d::bmdl_c &mdl)
Sets the soft light effect for enemies.
Definition d_actor.cpp:326
virtual bool isSpinLiftUpEnable()
Returns whether the actor can be carried.
Definition d_actor.hpp:109
void clrComboCnt()
Clears the actor's combo counter.
Definition d_actor.cpp:726
virtual void setEatTongue(dActor_c *eatingActor)
Callback for when the actor is targeted by Yoshi's tongue.
Definition d_actor.cpp:613
EAT_POINTS_e
The score awarded when the actor is eaten by Yoshi.
Definition d_actor.hpp:19
@ EAT_POINTS_1000
Awards 1000 points.
Definition d_actor.hpp:21
@ EAT_POINTS_200
Awards 200 points (default).
Definition d_actor.hpp:20
@ EAT_POINTS_NONE
No points are awarded.
Definition d_actor.hpp:22
virtual mVec2_c getLookatPos() const
Gets the position players look to when focused on the actor.
Definition d_actor.cpp:574
SCREEN_OUT_e
Flags used to control out of screen checks.
Definition d_actor.hpp:74
@ SKIP_SCREEN_CHECK
The actor position is not checked against the screen boundaries.
Definition d_actor.hpp:77
@ SKIP_NONE
No checks are skipped.
Definition d_actor.hpp:75
@ SKIP_RIDE_CHECK
The actor's ride status is not checked.
Definition d_actor.hpp:78
@ SKIP_ACTOR_DELETE
The actor is not deleted if out of screen.
Definition d_actor.hpp:76
static bool getTrgToSrcDirNormal(float trgX, float srcX)
See getTrgToSrcDirFunc.
Definition d_actor.cpp:281
static void setSoftLight_Boss(m3d::bmdl_c &mdl)
Sets the soft light effect for bosses.
Definition d_actor.cpp:338
static const float smc_CULL_YLIMIT
The default max bound Y offset.
Definition d_actor.hpp:394
static void setSoftLight_Player(m3d::bmdl_c &mdl)
Sets the soft light effect for players.
Definition d_actor.cpp:322
virtual float calcEatScaleRate(dActor_c *eatingActor)
Computes the scaling rate during eating.
Definition d_actor.cpp:663
mVec2_c m_1eb
Definition d_actor.hpp:346
static dAcPy_c * searchNearPlayerLoop(mVec2_c &delta, const mVec2_c &pos)
See searchNearPlayerFunc.
Definition d_actor.cpp:222
static u16 m_tmpCtEventNums
Temporary storage for the next created sprite actor's tracked event IDs. See mEventNums.
Definition d_actor.hpp:411
u8 mKind
The actor's kind. Value is a STAGE_ACTOR_KIND_e.
Definition d_actor.hpp:375
virtual void funsuiMoveX()
Definition d_actor.hpp:158
u8 mEatState
The actor's eat state. Value is a EAT_STATE_e.
Definition d_actor.hpp:366
static void changePosAngle(mVec3_c *pos, mAng3_c *ang, int param3)
Adjusts the actor's position to account for looping stages.
Definition d_actor.cpp:298
bool areaCullCheck(const mVec3_c &pos, const mBoundBox &bound, u8 areaID) const
Checks if the actor should be culled due to zone limits.
Definition d_actor.cpp:379
u8 mDirection
The actor's facing direction.
Definition d_actor.hpp:352
dCc_c mCc
The actor-to-actor collision sensor.
Definition d_actor.hpp:342
static dAcPy_c * searchNearPlayerNormal(mVec2_c &delta, const mVec2_c &pos)
See searchNearPlayerFunc.
Definition d_actor.cpp:200
EAT_BEHAVIOR_e
The possible actor behaviors when eaten by Yoshi.
Definition d_actor.hpp:35
@ EAT_TYPE_ICEBALL
Yoshi can spit an iceball after eating the actor.
Definition d_actor.hpp:41
@ EAT_TYPE_EAT
The actor can be eaten and then spat out.
Definition d_actor.hpp:37
@ EAT_TYPE_UNK3
Unknown behaviour. Used on Fruits, Pokeys and Giant Fuzzies.
Definition d_actor.hpp:39
@ EAT_TYPE_NONE
The actor cannot be eaten.
Definition d_actor.hpp:36
@ EAT_TYPE_FIREBALL
Yoshi can spit a fireball after eating the actor.
Definition d_actor.hpp:40
@ EAT_TYPE_EAT_PERMANENT
The actor is consumed permanently after being eaten (default).
Definition d_actor.hpp:38
virtual bool ActorDrawCullCheck()
Checks if the actor is out of view.
Definition d_actor.cpp:443
dAcPy_c * searchCarryFukidashiPlayer(int fukidashiAction)
Searches the closest player who has not yet performed the given action.
Definition d_actor.cpp:550
static void setSearchNearPlayerFunc(int loopType)
Sets the player search function to be used for the level.
Definition d_actor.cpp:182
mVec2_c mVisibleAreaSize
The size of the area inside which the actor is visible.
Definition d_actor.hpp:348
u32 mThrowDirection
The actor's direction when thrown or dropped after carrying.
Definition d_actor.hpp:335
virtual void removeCc()
Disables the actor's collision.
Definition d_actor.cpp:799
virtual int preCreate()
pre method for the create operation.
Definition d_actor.cpp:85
static dAcPy_c * searchNearPlayer_Main(mVec2_c &delta, const mVec2_c &pos)
See searchNearPlayerFunc.
Definition d_actor.cpp:196
virtual void vfb4()
Definition d_actor.cpp:691
static u8 mDrawStopReq
The actor kinds for which the draw operation is requested to be disabled.
Definition d_actor.hpp:400
bool mBackFence
Whether the actor is on the back side of chainlink fences.
Definition d_actor.hpp:380
dAcPy_c *(* searchNearPlayerFunc)(mVec2_c &delta, const mVec2_c &pos)
Gets the closest player to the given position and its distance.
Definition d_actor.hpp:263
virtual void postExecute(fBase_c::MAIN_STATE_e status)
post method for the execute operation.
Definition d_actor.cpp:123
virtual void eatMove(dActor_c *eatingActor)
Updates the actor's position during eating actions.
Definition d_actor.cpp:682
int mAttentionMode
Definition d_actor.hpp:371
static void setGetTrgToSrcDirFunc(int loopType)
Sets the direction detection function to be used for the level.
Definition d_actor.cpp:268
u8 mEatBehaviour
The actor's eat behaviour. Value is a EAT_BEHAVIOR_e.
Definition d_actor.hpp:367
u8 mAreaNo
The actor's zone ID.
Definition d_actor.hpp:353
void setKind(u8 kind)
Sets the actor's kind. See STAGE_ACTOR_KIND_e.
Definition d_actor.cpp:177
virtual int preExecute()
pre method for the execute operation.
Definition d_actor.cpp:105
virtual void allEnemyDeathEffSet()
Spawns the visual effects for when all players reach the flagpole and all enemies are cleared.
Definition d_actor.cpp:580
static void setSoftLight_Item(m3d::bmdl_c &mdl)
Sets the soft light effect for items.
Definition d_actor.cpp:342
virtual const char * getKindString() const
Gets the base's kind string.
Definition d_actor.cpp:158
s8 mPlayerNo
The player associated with the actor, -1 if not associated to any player.
Definition d_actor.hpp:376
bool ActorScrOutCheck(u16 flags)
Checks if the actor is out of gameplay and optionally deletes it.
Definition d_actor.cpp:412
u32 mComboMultiplier
The current combo multiplier obtained by the actor by colliding with other actors.
Definition d_actor.hpp:336
virtual void cancelFunsuiActSide(int)
Definition d_actor.cpp:695
virtual void cancelFunsuiActVanish()
Definition d_actor.cpp:697
virtual void setEatMouth(dActor_c *eatingActor)
Callback for when the actor is being eaten.
Definition d_actor.cpp:619
u32 mEatenByID
The unique identifier of the eating actor.
Definition d_actor.hpp:365
bool carryFukidashiCheck(int fukidashiAction, mVec2_c fukidashiTriggerSize)
Checks if the prompt for the given action should be displayed for each player.
Definition d_actor.cpp:474
virtual void waterSplashEffect(const mVec3_c &pos, float size)
Generates a water splash effect.
Definition d_actor.cpp:730
void killActor(s8 playerId, int noScore)
Kills the actor and optionally awards points to one or all players.
Definition d_actor.cpp:586
virtual void setEatTongueOff(dActor_c *eatingActor)
Callback for when the eating action is canceled.
Definition d_actor.cpp:617
virtual void block_hit_init()
Callback for when a block directly beneath the actor is hit.
Definition d_actor.cpp:578
u64 mEventMask
The event mask, generated from mEventNums.
Definition d_actor.hpp:359
EAT_STATE_e
The possible actor eat states.
Definition d_actor.hpp:26
@ EAT_STATE_EATING
The actor is in the process of being eaten.
Definition d_actor.hpp:28
@ EAT_STATE_SPAT
The actor has been spat out.
Definition d_actor.hpp:31
@ EAT_STATE_SPIT
The actor is about to be spat out. Used for spitting out players when Yoshi is dismounted.
Definition d_actor.hpp:30
@ EAT_STATE_NONE
The actor is not being eaten.
Definition d_actor.hpp:27
@ EAT_STATE_EATEN
The actor has been successfully eaten.
Definition d_actor.hpp:29
bool checkCarried(int *playerNum)
Returns whether the actor is being carried by a player.
Definition d_actor.cpp:783
dActor_c()
Constructs a new actor.
Definition d_actor.cpp:46
bool checkBgColl()
Returns whether the actor is colliding with any enabled collision sides.
Definition d_actor.cpp:456
virtual void yoganSplashEffect(const mVec3_c &pos, float size)
Generates a lava splash effect.
Definition d_actor.cpp:749
BG_COLL_FLAG_e
The collision directions that an actor can respond to.
Definition d_actor.hpp:59
@ COLL_FOOT
The actor can collide with the ground.
Definition d_actor.hpp:64
@ COLL_HEAD
The actor can collide with ceilings.
Definition d_actor.hpp:61
@ COLL_WALL_L
The actor can collide with walls on its left.
Definition d_actor.hpp:62
@ COLL_WALL_R
The actor can collide with walls on its right.
Definition d_actor.hpp:63
@ COLL_NONE
The actor does not collide with any surface.
Definition d_actor.hpp:60
static const float smc_CULL_AREA_YLIMIT
The default max bound Y size.
Definition d_actor.hpp:396
dRc_c mRc
The actor's ride surface manager.
Definition d_actor.hpp:344
u16 mSpriteSpawnFlags
The spawn flags from the sprite data entry.
Definition d_actor.hpp:362
ACTOR_SPAWN_FLAG_e
Information related to actor spawning.
Definition d_actor.hpp:68
@ ACTOR_SPAWNED
The actor is spawned.
Definition d_actor.hpp:69
@ ACTOR_NO_RESPAWN
The actor must not respawn after deletion.
Definition d_actor.hpp:70
virtual void calcEatInScale(dActor_c *eatingActor)
Adjusts the actor's scale while being eaten.
Definition d_actor.cpp:673
u32 mCarryFukidashiPlayerNo
The player for whom an action prompt related to the actor is being displayed. -1 if no players meet t...
Definition d_actor.hpp:333
virtual bool vf68(dBg_ctr_c *collider)
Unknown, related to collision.
Definition d_actor.hpp:104
virtual int preDraw()
pre method for the draw operation.
Definition d_actor.cpp:141
u32 mAttentionFlags
Definition d_actor.hpp:372
virtual s8 * getPlrNo()
Gets the player number associated with the actor. See mPlayerNo.
Definition d_actor.hpp:105
virtual void setAfterEatScale()
Restores the actor's scale once spat out.
Definition d_actor.cpp:646
static bool screenCullCheck(const mVec3_c &pos, const mBoundBox &visibleBound, mBoundBox destroyBound, u8 areaID)
Checks if the actor should be culled due to being outside the screen.
static const mVec2_c smc_FUKIDASHI_RANGE
The default trigger area size for displaying action prompts.
Definition d_actor.hpp:397
virtual bool setEatSpitOut(dActor_c *eatingActor)
Callback for when the actor is about to be spat out.
Definition d_actor.cpp:621
STAGE_ACTOR_KIND_e
The possible stage actor kinds.
Definition d_actor.hpp:45
@ STAGE_ACTOR_GENERIC
A generic stage actor (default).
Definition d_actor.hpp:46
@ STAGE_ACTOR_YOSHI
The Yoshi actor.
Definition d_actor.hpp:48
@ STAGE_ACTOR_PLAYER
The player actor.
Definition d_actor.hpp:47
@ STAGE_ACTOR_ENTITY
An interactable entity actor.
Definition d_actor.hpp:49
u32 m_23b
Definition d_actor.hpp:361
virtual void calcSpitOutPos(dActor_c *eatingActor)
Calculates the position where the actor will be spat out.
Definition d_actor.cpp:650
static void setChangePosAngleFunc(int loopType)
Sets the position update function to be used for the level.
Definition d_actor.cpp:302
virtual void postDraw(fBase_c::MAIN_STATE_e status)
post method for the draw operation.
Definition d_actor.cpp:154
virtual int preDelete()
pre method for the delete operation.
Definition d_actor.cpp:93
u16 mEventNums
The event IDs the actor is tracking.
Definition d_actor.hpp:358
static const float smc_CULL_XLIMIT
The default max bound X offset.
Definition d_actor.hpp:393
u16 * mpDeleteVal
Definition d_actor.hpp:357
static searchNearPlayerFunc mSearchNearPlayerFunc
The player search function.
Definition d_actor.hpp:403
u8 mLayer
The actor's layer.
Definition d_actor.hpp:378
mVec2_c mVisibleAreaOffset
The offset applied to the area size.
Definition d_actor.hpp:349
bool(* getTrgToSrcDirFunc)(float trgX, float srcX)
Gets the direction the target position is in, from the source position's viewpoint.
Definition d_actor.hpp:272
~dActor_c()
Destroys the actor.
Definition d_actor.cpp:81
mBoundBox mMaxBound
Definition d_actor.hpp:350
u8 mBgCollFlags
The collision directions that the actor can respond to.
Definition d_actor.hpp:354
static u8 mDrawStop
The actor kinds for which the draw operation is currently disabled.
Definition d_actor.hpp:402
EAT_POINTS_e mEatPoints
The score awarded when the actor is eaten by Yoshi.
Definition d_actor.hpp:370
mBoundBox mDestroyBound
Definition d_actor.hpp:351
mVec3_c getCenterPos() const
Gets the actor's centered position.
dBaseActor_c()
Constructs a new actor.
dBase_c()
Constructs a new base.
Definition d_base.cpp:13
Definition d_bc.hpp:5
Collider ("Collision Check") class - handles collisions between actors.
Definition d_cc.hpp:12
Definition d_rc.hpp:10
MAIN_STATE_e
The possible operation results.
Definition f_base.hpp:30
A three-dimensional short angle vector.
Definition m_angle.hpp:60
A two-dimensional floating point vector.
Definition m_vec.hpp:9
A three-dimensional floating point vector.
Definition m_vec.hpp:100
const u8 l_Ami_Line[]
The sub-layer for each side of chainlink fences.
Definition d_actor.cpp:38
const float l_Ami_Zpos[]
The additional Z offset for each side of chainlink fences.
Definition d_actor.cpp:39
u16 ProfileName
The name of a profile. Value is a fProfile::PROFILE_NAME_e.
Definition f_profile.hpp:32