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