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 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_ENEMY, ///< An enemy 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_WALL_R = BIT_FLAG(0), ///< The actor can collide with walls on its right.
62 COLL_WALL_L = BIT_FLAG(1), ///< The actor can collide with walls on its left.
63 COLL_HEAD = BIT_FLAG(2), ///< The actor can collide with ceilings.
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 sRangeDataF &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 int screenCullCheck(const mVec3_c &pos, const sRangeDataF &visibleBound, sRangeDataF destroyBound, u8 areaID);
213
214 /// @brief Returns whether the actor is colliding with any enabled collision sides.
215 bool HasamareBgCheck();
216
217 /// @brief Checks if the prompt for the given action should be displayed for each player.
218 /// @param fukidashiAction The action to be checked.
219 /// @param fukidashiTriggerSize The size of the area around the actor where the prompt is displayed.
220 /// @return Always returns @p false .
221 bool carryFukidashiCheck(int fukidashiAction, mVec2_c fukidashiTriggerSize);
222
223 /// @brief Searches the closest player who has not yet performed the given action.
224 /// @param fukidashiAction The action to be checked.
225 /// @return The closest player meeting the criteria, or @p nullptr if not found.
226 dAcPy_c *searchCarryFukidashiPlayer(int fukidashiAction);
227
228 /// @brief Hides the given action prompt for all players.
229 /// @param fukidashiAction The action to be hidden.
230 /// @param playerId The player for whom the action prompt should never be shown again, or @p -1 if none.
231 void carryFukidashiCancel(int fukidashiAction, int playerId);
232
233 /// @brief Kills the actor and optionally awards points to one or all players.
234 /// @unofficial
235 /// @param playerId The player to assign the score resulting from the kill, or @p -1 to award it to all players.
236 /// @param noScore Whether points should not be awarded from the kill.
237 void killActor(s8 playerId, int noScore);
238
239 /// @brief Plays the combo kill sound effect.
240 /// @param multiplier The combo multiplier.
241 /// @param shortCombo Whether the combo starts at 1000 points instead of 200 points.
242 void slideComboSE(int multiplier, bool shortCombo);
243
244 void clrComboCnt(); ///< Clears the actor's combo counter.
245
246 /// @brief Returns whether the actor is being carried by a player.
247 /// @param playerNum A pointer where the carrying player's number will be written to, or @p nullptr .
248 /// @return Whether the actor is being carried by a player.
249 bool checkCarried(int *playerNum);
250
251 /// @brief Gets the closest @ref dAcPy_c "player" to the actor and its distance.
252 /// @details Centered positions are used to calculate the distance.
253 /// @param delta The vector where the distance between the actor and the player will be written to.
254 /// @return The closest player, or @p nullptr .
256
257 /// @brief Gets the closest @ref dAcPy_c "player" to the given position and its distance.
258 /// @details Centered positions are used to calculate the distance.
259 /// @param delta The vector where the distance to the player will be written to.
260 /// @param pos The position to use for the search.
261 /// @return The closest player, or @p nullptr .
262 typedef dAcPy_c *(*searchNearPlayerFunc)(mVec2_c &delta, const mVec2_c &pos);
263 static dAcPy_c *searchNearPlayer_Main(mVec2_c &delta, const mVec2_c &pos); ///< See searchNearPlayerFunc.
264 static dAcPy_c *searchNearPlayerNormal(mVec2_c &delta, const mVec2_c &pos); ///< See searchNearPlayerFunc.
265 static dAcPy_c *searchNearPlayerLoop(mVec2_c &delta, const mVec2_c &pos); ///< See searchNearPlayerFunc.
266
267 /// @brief Gets the direction the target position is in, from the source position's viewpoint.
268 /// @param trgX The target X position.
269 /// @param srcX The source X position.
270 /// @return The direction the target is in.
271 typedef bool (*getTrgToSrcDirFunc)(float trgX, float srcX);
272 static bool getTrgToSrcDir_Main(float trgX, float srcX); ///< See getTrgToSrcDirFunc.
273 static bool getTrgToSrcDirNormal(float trgX, float srcX); ///< See getTrgToSrcDirFunc.
274 static bool getTrgToSrcDirLoop(float trgX, float srcX); ///< See getTrgToSrcDirFunc.
275
276 /// @brief Adjusts the actor's position to account for looping stages.
277 /// @param pos The position to be updated.
278 /// @param ang The rotation (unused).
279 /// @param param3 Always @p 1 (unused).
280 static void changePosAngle(mVec3_c *pos, mAng3_c *ang, int param3);
281
282 /// @brief Sets the player search function to be used for the level.
283 /// @param loopType The loop type. See dScStage_c::LOOP_TYPE_e.
284 static void setSearchNearPlayerFunc(int loopType);
285
286 /// @brief Sets the direction detection function to be used for the level.
287 /// @param loopType The loop type. See dScStage_c::LOOP_TYPE_e.
288 static void setGetTrgToSrcDirFunc(int loopType);
289
290 /// @brief Sets the position update function to be used for the level.
291 /// @param loopType The loop type. See dScStage_c::LOOP_TYPE_e.
292 static void setChangePosAngleFunc(int loopType);
293
294 /// @brief Sets the position-related functions for the level.
295 /// @param loopType The loop type. See dScStage_c::LOOP_TYPE_e.
296 static void setLoopFunc(int loopType);
297
298 void setKind(u8 kind); ///< Sets the actor's kind. See STAGE_ACTOR_KIND_e.
299
300 /// @brief Sets temporary data to be used for the next actor's construction.
301 /// @param layer The actor's layer.
302 static void setTmpCtData(u8 layer);
303
304 /**
305 * @brief Creates a stage actor without a parent.
306 *
307 * @details The actor is created as a child of the current scene actor, so that all actors can be
308 * deleted on a scene change, acting as a garbage collection mechanism.
309 * @param profName The actor's profile name.
310 * @param param The actor's parameters.
311 * @param position The actor's position.
312 * @param rotation The actor's rotation.
313 * @param layer The actor's layer.
314 * @return A pointer to the instantiated actor, or @p nullptr .
315 */
316 static dActor_c *construct(ProfileName profName, unsigned long param, const mVec3_c *position, const mAng3_c *rotation, u8 layer);
317
318 /**
319 * @brief Creates a child stage actor with the given parent.
320 *
321 * @param profName The actor's profile name.
322 * @param parent The actor's parent. Must not be @p nullptr .
323 * @param param The actor's parameters.
324 * @param position The actor's position.
325 * @param rotation The actor's rotation.
326 * @param layer The actor's layer.
327 * @return A pointer to the instantiated actor, or @p nullptr .
328 */
329 static dActor_c *construct(ProfileName profName, dBase_c *parent, unsigned long param, const mVec3_c *position, const mAng3_c *rotation, u8 layer);
330
331 u8 m_00; ///< Seems to be a player bit flag. @unused
332 u32 mCarryFukidashiPlayerNo; ///< The player for whom an action prompt related to the actor is being displayed. @p -1 if no players meet this criteria.
333 u32 mCarryingFlags; ///< The actor's carry actions. See CARRY_ACTION_e.
334 u8 mThrowDirection; ///< The actor's direction when thrown or dropped after carrying.
335 int mComboMultiplier; ///< The current combo multiplier obtained by the actor by colliding with other actors.
336 u8 m_13; ///< @unused
337 u32 m_17; ///< @unused
338 float m_1b; ///< @unused
339 u32 m_1f; ///< @unused
340
341 dCc_c mCc; ///< The actor-to-actor collision sensor.
342 dBc_c mBc; ///< The actor-to-tile collision sensor.
343 dRc_c mRc; ///< The actor's ride surface manager.
344
345 mVec2_c m_1eb; ///< @todo Figure out the purpose of this field.
346
347 mVec2_c mVisibleAreaSize; ///< The size of the area inside which the actor is visible.
348 mVec2_c mVisibleAreaOffset; ///< The offset applied to the area size.
349 sRangeDataF mMaxBound; ///< @todo Figure out the exact purpose of this field.
350 sRangeDataF mDestroyBound; ///< @todo Figure out the exact purpose of this field.
351 u8 mDirection; ///< The actor's facing direction.
352 u8 mAreaNo; ///< The actor's zone ID.
353 u8 mBgCollFlags; ///< The collision directions that the actor can respond to.
354
355 u8 *mpSpawnFlags; ///< The spawn flags for the actor. See ACTOR_SPAWN_FLAG_e.
356 u16 *mpDeleteVal; ///< @unused
357 u16 mEventNums; ///< The event IDs the actor is tracking.
358 u64 mEventMask; ///< The event mask, generated from #mEventNums.
359
360 u32 m_23b; ///< @todo Figure out the purpose of this field.
361 u16 mSpriteSpawnFlags; ///< The spawn flags from the sprite data entry.
362 bool mBlockHit; ///< Whether a block below the actor was hit.
363
364 u32 mEatenByID; ///< The @ref fBase_c::mUniqueID "unique identifier" of the eating actor.
365 u8 mEatState; ///< The actor's eat state. Value is a EAT_STATE_e.
366 u8 mEatBehaviour; ///< The actor's eat behaviour. Value is a EAT_BEHAVIOR_e.
367 mVec3_c mPreEatScale; ///< The actor's scale before being eaten.
368
369 EAT_POINTS_e mEatPoints; ///< @copydoc EAT_POINTS_e
370 int mAttentionMode; ///< @todo Document this field and its values.
371 u32 mAttentionFlags; ///< @todo Document this field and its values.
372
373 dPropelParts_c *mPropelParts; ///< The actor's propeller effect manager.
374 u8 mKind; ///< The actor's kind. Value is a STAGE_ACTOR_KIND_e.
375 s8 mPlayerNo; ///< The player associated with the actor, @p -1 if not associated to any player.
376 u8 mExecStopMask; ///< The mask required to disable the @p execute operation for the actor.
377 u8 mLayer; ///< The actor's layer.
378 bool mNoRespawn; ///< Whether the actor should not respawn after being deleted.
379 u8 mAmiLayer; ///< The actor's layer for chainlink fences.
380
381 sRangeDataF getDestroyBound() { return mDestroyBound; }
382
383 void setDefaultMaxBound() {
385 }
386
387 u8 getKindMask() { return 1 << mKind; }
388
389 static const float smc_CULL_XLIMIT; ///< The default @ref mMaxBound "max bound" X offset.
390 static const float smc_CULL_YLIMIT; ///< The default @ref mMaxBound "max bound" Y offset.
391 static const float smc_CULL_AREA_XLIMIT; ///< The default @ref mMaxBound "max bound" X size.
392 static const float smc_CULL_AREA_YLIMIT; ///< The default @ref mMaxBound "max bound" Y size.
393 static const mVec2_c smc_FUKIDASHI_RANGE; ///< The default trigger area size for displaying action prompts.
394
395 static u8 mExecStopReq; ///< The actors for which the @p execute operation is requested to be disabled.
396 static u8 mDrawStopReq; ///< The actor kinds for which the @p draw operation is requested to be disabled.
397 static u8 mExecStop; ///< The actors for which the @p execute operation is currently disabled.
398 static u8 mDrawStop; ///< The actor kinds for which the @p draw operation is currently disabled.
399 static searchNearPlayerFunc mSearchNearPlayerFunc; ///< The player search function.
400 static getTrgToSrcDirFunc mGetTrgToSrcDirFunc; ///< The direction detection function.
401 static u8 m_tmpCtLayerNo; ///< Temporary storage for the next constructed actor's layer. See #mLayer.
402
403 /// @brief Temporary storage for the next created sprite actor's spawn flags. See #mpSpawnFlags.
404 static u8* m_read_p_keep;
405
406 /// @brief Temporary storage for the next created sprite actor's tracked event IDs. See #mEventNums.
407 static u16 m_flag_keep;
408
409 /// @brief Temporary storage for the next created sprite actor's event mask. See #mEventMask.
410 static u64 m_flagbit_keep;
411
412 /// @brief Temporary storage for the next created sprite actor's layer. See #mLayer.
414};
415
416extern const u8 l_Ami_Line[]; ///< The sub-layer for each side of chainlink fences.
417extern const float l_Ami_Zpos[]; ///< 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:338
static u8 mExecStopReq
The actors for which the execute operation is requested to be disabled.
Definition d_actor.hpp:395
static u8 mExecStop
The actors for which the execute operation is currently disabled.
Definition d_actor.hpp:397
static bool getTrgToSrcDirLoop(float trgX, float srcX)
See getTrgToSrcDirFunc.
Definition d_actor.cpp:284
void deleteActor(u8 deleteForever)
Deletes the actor and optionally disables respawn.
Definition d_actor.cpp:355
static const float smc_CULL_AREA_XLIMIT
The default max bound X size.
Definition d_actor.hpp:391
u8 mExecStopMask
The mask required to disable the execute operation for the actor.
Definition d_actor.hpp:376
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:166
void slideComboSE(int multiplier, bool shortCombo)
Plays the combo kill sound effect.
Definition d_actor.cpp:700
virtual bool setEatGlupDown(dActor_c *eatingActor)
Callback for when the actor is about to be fully swallowed.
Definition d_actor.cpp:626
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:362
dAcPy_c * searchNearPlayer(mVec2_c &delta)
Gets the closest player to the actor and its distance.
Definition d_actor.cpp:190
sRangeDataF mDestroyBound
Definition d_actor.hpp:350
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:305
bool checkAreaNo()
Checks if at least one player is in the same zone as the actor.
Definition d_actor.cpp:311
void carryFukidashiCancel(int fukidashiAction, int playerId)
Hides the given action prompt for all players.
Definition d_actor.cpp:539
virtual void postCreate(fBase_c::MAIN_STATE_e status)
post method for the create operation.
Definition d_actor.cpp:88
virtual void postDelete(fBase_c::MAIN_STATE_e status)
post method for the delete operation.
Definition d_actor.cpp:100
mVec3_c mPreEatScale
The actor's scale before being eaten.
Definition d_actor.hpp:367
static void setSoftLight_MapObj(m3d::bmdl_c &mdl)
Sets the soft light effect for map objects.
Definition d_actor.cpp:333
virtual void cancelFunsuiActUpper()
Definition d_actor.cpp:694
static u64 m_flagbit_keep
Temporary storage for the next created sprite actor's event mask. See mEventMask.
Definition d_actor.hpp:410
u8 m_00
Seems to be a player bit flag.
Definition d_actor.hpp:331
static void setSoftLight_Map(m3d::bmdl_c &mdl)
Sets the soft light effect for map actors.
Definition d_actor.cpp:329
bool mNoRespawn
Whether the actor should not respawn after being deleted.
Definition d_actor.hpp:378
virtual void setSpinLiftUpActor(dActor_c *carryingActor)
Callback for when the actor is picked up by another actor.
Definition d_actor.cpp:612
virtual void reviveCc()
Enables the actor's collision.
Definition d_actor.cpp:804
static void setTmpCtData(u8 layer)
Sets temporary data to be used for the next actor's construction.
Definition d_actor.cpp:161
dPropelParts_c * mPropelParts
The actor's propeller effect manager.
Definition d_actor.hpp:373
static u8 m_tmpCtLayerNo
Temporary storage for the next constructed actor's layer. See mLayer.
Definition d_actor.hpp:401
u8 * mpSpawnFlags
The spawn flags for the actor. See ACTOR_SPAWN_FLAG_e.
Definition d_actor.hpp:355
bool HasamareBgCheck()
Returns whether the actor is colliding with any enabled collision sides.
Definition d_actor.cpp:457
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:378
dBc_c mBc
The actor-to-tile collision sensor.
Definition d_actor.hpp:342
static getTrgToSrcDirFunc mGetTrgToSrcDirFunc
The direction detection function.
Definition d_actor.hpp:400
virtual void poisonSplashEffect(const mVec3_c &pos, float size)
Generates a poison water splash effect.
Definition d_actor.cpp:767
static bool getTrgToSrcDir_Main(float trgX, float srcX)
See getTrgToSrcDirFunc.
Definition d_actor.cpp:276
static void setSoftLight_Enemy(m3d::bmdl_c &mdl)
Sets the soft light effect for enemies.
Definition d_actor.cpp:325
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:727
virtual void setEatTongue(dActor_c *eatingActor)
Callback for when the actor is targeted by Yoshi's tongue.
Definition d_actor.cpp:614
u32 mCarryingFlags
The actor's carry actions. See CARRY_ACTION_e.
Definition d_actor.hpp:333
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:575
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:280
static void setSoftLight_Boss(m3d::bmdl_c &mdl)
Sets the soft light effect for bosses.
Definition d_actor.cpp:337
static const float smc_CULL_YLIMIT
The default max bound Y offset.
Definition d_actor.hpp:390
static void setSoftLight_Player(m3d::bmdl_c &mdl)
Sets the soft light effect for players.
Definition d_actor.cpp:321
virtual float calcEatScaleRate(dActor_c *eatingActor)
Computes the scaling rate during eating.
Definition d_actor.cpp:664
mVec2_c m_1eb
Definition d_actor.hpp:345
static dAcPy_c * searchNearPlayerLoop(mVec2_c &delta, const mVec2_c &pos)
See searchNearPlayerFunc.
Definition d_actor.cpp:221
u8 mKind
The actor's kind. Value is a STAGE_ACTOR_KIND_e.
Definition d_actor.hpp:374
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:365
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:297
u8 mAmiLayer
The actor's layer for chainlink fences.
Definition d_actor.hpp:379
u8 mDirection
The actor's facing direction.
Definition d_actor.hpp:351
dCc_c mCc
The actor-to-actor collision sensor.
Definition d_actor.hpp:341
static dAcPy_c * searchNearPlayerNormal(mVec2_c &delta, const mVec2_c &pos)
See searchNearPlayerFunc.
Definition d_actor.cpp:199
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:444
dAcPy_c * searchCarryFukidashiPlayer(int fukidashiAction)
Searches the closest player who has not yet performed the given action.
Definition d_actor.cpp:551
static void setSearchNearPlayerFunc(int loopType)
Sets the player search function to be used for the level.
Definition d_actor.cpp:181
mVec2_c mVisibleAreaSize
The size of the area inside which the actor is visible.
Definition d_actor.hpp:347
virtual void removeCc()
Disables the actor's collision.
Definition d_actor.cpp:800
virtual int preCreate()
pre method for the create operation.
Definition d_actor.cpp:84
static dAcPy_c * searchNearPlayer_Main(mVec2_c &delta, const mVec2_c &pos)
See searchNearPlayerFunc.
Definition d_actor.cpp:195
virtual void vfb4()
Definition d_actor.cpp:692
static u8 mDrawStopReq
The actor kinds for which the draw operation is requested to be disabled.
Definition d_actor.hpp:396
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:262
u8 mThrowDirection
The actor's direction when thrown or dropped after carrying.
Definition d_actor.hpp:334
virtual void postExecute(fBase_c::MAIN_STATE_e status)
post method for the execute operation.
Definition d_actor.cpp:122
virtual void eatMove(dActor_c *eatingActor)
Updates the actor's position during eating actions.
Definition d_actor.cpp:683
int mAttentionMode
Definition d_actor.hpp:370
static void setGetTrgToSrcDirFunc(int loopType)
Sets the direction detection function to be used for the level.
Definition d_actor.cpp:267
u8 mEatBehaviour
The actor's eat behaviour. Value is a EAT_BEHAVIOR_e.
Definition d_actor.hpp:366
u8 mAreaNo
The actor's zone ID.
Definition d_actor.hpp:352
void setKind(u8 kind)
Sets the actor's kind. See STAGE_ACTOR_KIND_e.
Definition d_actor.cpp:176
virtual int preExecute()
pre method for the execute operation.
Definition d_actor.cpp:104
virtual void allEnemyDeathEffSet()
Spawns the visual effects for when all players reach the flagpole and all enemies are cleared.
Definition d_actor.cpp:581
static void setSoftLight_Item(m3d::bmdl_c &mdl)
Sets the soft light effect for items.
Definition d_actor.cpp:341
int mComboMultiplier
The current combo multiplier obtained by the actor by colliding with other actors.
Definition d_actor.hpp:335
virtual const char * getKindString() const
Gets the base's kind string.
Definition d_actor.cpp:157
s8 mPlayerNo
The player associated with the actor, -1 if not associated to any player.
Definition d_actor.hpp:375
bool ActorScrOutCheck(u16 flags)
Checks if the actor is out of gameplay and optionally deletes it.
Definition d_actor.cpp:413
virtual void cancelFunsuiActSide(int)
Definition d_actor.cpp:696
static int 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 void cancelFunsuiActVanish()
Definition d_actor.cpp:698
virtual void setEatMouth(dActor_c *eatingActor)
Callback for when the actor is being eaten.
Definition d_actor.cpp:620
u32 mEatenByID
The unique identifier of the eating actor.
Definition d_actor.hpp:364
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:475
virtual void waterSplashEffect(const mVec3_c &pos, float size)
Generates a water splash effect.
Definition d_actor.cpp:731
void killActor(s8 playerId, int noScore)
Kills the actor and optionally awards points to one or all players.
Definition d_actor.cpp:587
virtual void setEatTongueOff(dActor_c *eatingActor)
Callback for when the eating action is canceled.
Definition d_actor.cpp:618
virtual void block_hit_init()
Callback for when a block directly beneath the actor is hit.
Definition d_actor.cpp:579
u64 mEventMask
The event mask, generated from mEventNums.
Definition d_actor.hpp:358
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
static u8 * m_read_p_keep
Temporary storage for the next created sprite actor's spawn flags. See mpSpawnFlags.
Definition d_actor.hpp:404
bool checkCarried(int *playerNum)
Returns whether the actor is being carried by a player.
Definition d_actor.cpp:784
dActor_c()
Constructs a new actor.
Definition d_actor.cpp:46
virtual void yoganSplashEffect(const mVec3_c &pos, float size)
Generates a lava splash effect.
Definition d_actor.cpp:750
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:63
@ 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:61
@ 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:392
dRc_c mRc
The actor's ride surface manager.
Definition d_actor.hpp:343
u16 mSpriteSpawnFlags
The spawn flags from the sprite data entry.
Definition d_actor.hpp:361
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:674
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:332
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:140
u32 mAttentionFlags
Definition d_actor.hpp:371
sRangeDataF mMaxBound
Definition d_actor.hpp:349
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:647
static const mVec2_c smc_FUKIDASHI_RANGE
The default trigger area size for displaying action prompts.
Definition d_actor.hpp:393
virtual bool setEatSpitOut(dActor_c *eatingActor)
Callback for when the actor is about to be spat out.
Definition d_actor.cpp:622
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_ENEMY
An enemy actor.
Definition d_actor.hpp:49
@ STAGE_ACTOR_YOSHI
The Yoshi actor.
Definition d_actor.hpp:48
@ STAGE_ACTOR_PLAYER
The player actor.
Definition d_actor.hpp:47
u32 m_23b
Definition d_actor.hpp:360
virtual void calcSpitOutPos(dActor_c *eatingActor)
Calculates the position where the actor will be spat out.
Definition d_actor.cpp:651
static void setChangePosAngleFunc(int loopType)
Sets the position update function to be used for the level.
Definition d_actor.cpp:301
virtual void postDraw(fBase_c::MAIN_STATE_e status)
post method for the draw operation.
Definition d_actor.cpp:153
virtual int preDelete()
pre method for the delete operation.
Definition d_actor.cpp:92
u16 mEventNums
The event IDs the actor is tracking.
Definition d_actor.hpp:357
static u16 m_flag_keep
Temporary storage for the next created sprite actor's tracked event IDs. See mEventNums.
Definition d_actor.hpp:407
static const float smc_CULL_XLIMIT
The default max bound X offset.
Definition d_actor.hpp:389
u16 * mpDeleteVal
Definition d_actor.hpp:356
static searchNearPlayerFunc mSearchNearPlayerFunc
The player search function.
Definition d_actor.hpp:399
u8 mLayer
The actor's layer.
Definition d_actor.hpp:377
mVec2_c mVisibleAreaOffset
The offset applied to the area size.
Definition d_actor.hpp:348
bool(* getTrgToSrcDirFunc)(float trgX, float srcX)
Gets the direction the target position is in, from the source position's viewpoint.
Definition d_actor.hpp:271
~dActor_c()
Destroys the actor.
Definition d_actor.cpp:80
u8 mBgCollFlags
The collision directions that the actor can respond to.
Definition d_actor.hpp:353
static u8 mDrawStop
The actor kinds for which the draw operation is currently disabled.
Definition d_actor.hpp:398
EAT_POINTS_e mEatPoints
The score awarded when the actor is eaten by Yoshi.
Definition d_actor.hpp:369
static u8 m_mbgchoice_keep
Temporary storage for the next created sprite actor's layer. See mLayer.
Definition d_actor.hpp:413
dBaseActor_c()
Constructs a new actor.
dBase_c()
Constructs a new base.
Definition d_base.cpp:13
Definition d_bc.hpp:33
Collider ("Collision Check") class - handles collisions between actors.
Definition d_cc.hpp:111
Definition d_rc.hpp:38
MAIN_STATE_e
The possible operation results.
Definition f_base.hpp:34
A three-dimensional short angle vector.
Definition m_angle.hpp:59
A two-dimensional floating point vector.
Definition m_vec.hpp:16
A three-dimensional floating point vector.
Definition m_vec.hpp:107
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