Isle
|
Implements the LEGO Island car race game mode. More...
#include <carrace.h>
Public Member Functions | |
CarRace () | |
Constructs a CarRace instance and initializes member variables. More... | |
const char * | ClassName () const override |
Returns the class name for runtime type identification ("CarRace"). More... | |
MxBool | IsA (const char *p_name) const override |
Checks if this object is the specified class or inherits from it. More... | |
MxResult | Create (MxDSAction &p_dsAction) override |
Initializes the car racing game mode and underlying state based on the supplied DSAction. More... | |
void | ReadyWorld () override |
Prepares the car race world and all interactive actors, UI, and animations. More... | |
MxBool | Escape () override |
Handles the user-initiated escape/action to quit or exit the car race mini-game. More... | |
MxLong | HandleClick (LegoEventNotificationParam &) override |
Handles click input in the context of the car race UI (such as quit buttons). More... | |
MxLong | HandlePathStruct (LegoPathStructNotificationParam &) override |
Handles race progress triggers from path segments. More... | |
MxLong | HandleEndAction (MxEndActionNotificationParam &) override |
Handles the ending of scripted race actions. More... | |
MxLong | HandleType0Notification (MxNotificationParam &) override |
Handles notifications of an unclassified ("type 0") game event in this game mode. More... | |
RaceSkel * | GetSkeleton () |
Provides access to the RaceSkel (race skeleton) object managing actor animations or kinematics. More... | |
void | SetSkeleton (RaceSkel *p_skeleton) |
Sets the current RaceSkel instance for this car race. More... | |
void | FUN_10017820 (MxS32 p_param1, MxS16 p_param2) |
Updates the location of still presenters for UI progress based on race advancement. More... | |
![]() | |
LegoRace () | |
[AI] Default constructor. More... | |
~LegoRace () override | |
[AI] Destructor. More... | |
MxLong | Notify (MxParam &p_param) override |
[AI] Notification callback, dispatches events to various race handlers (click, end action, map struct, etc.) if the world is running. More... | |
MxResult | Create (MxDSAction &p_dsAction) override |
[AI] Creates and initializes LegoRace world/logic for a DS action. More... | |
virtual MxLong | HandleClick (LegoEventNotificationParam &)=0 |
[AI] Handles user click events within the race area. More... | |
virtual MxLong | HandlePathStruct (LegoPathStructNotificationParam &) |
[AI] Handles "path struct" notifications (such as map changes or logic triggers for race boundaries). More... | |
virtual MxLong | HandleEndAction (MxEndActionNotificationParam &) |
[AI] Handles "end action" (e.g., finish line reached, cutscene ended) events for the race state logic. More... | |
MxBool | Escape () override |
[AI] Handles Escape input, which is intentionally disabled in race states for legacy reasons. More... | |
const char * | ClassName () const override |
[AI] Returns the runtime class name ("LegoRace") for type checks. More... | |
MxBool | IsA (const char *p_name) const override |
[AI] Runtime type check for this class (or parent LegoWorld). More... | |
virtual MxLong | HandleType0Notification (MxNotificationParam &) |
[AI] Handles notification of type 0 (specific logic event), can be overridden for custom event processing. More... | |
virtual void | VTable0x7c (LegoRaceMap *p_map, MxU32 p_index) |
[AI] Associates a race map instance to the maps array at the given index. More... | |
MxBool | VTable0x5c () override |
[AI] Indicates that custom "VTable0x5c" logic is enabled (always TRUE for LegoRace, possibly to indicate tickle or update registration). More... | |
void | Enable (MxBool p_enable) override |
[AI] Enables or disables the race world and detaches the user actor if switching away. More... | |
![]() | |
LegoWorld () | |
Constructs a LegoWorld, initializing lists and notifying the notification manager. More... | |
~LegoWorld () override | |
Cleans up the world, destroying all held entities, presenters, and controllers. More... | |
MxLong | Notify (MxParam &p_param) override |
Notification callback responding to registered events such as EndAction and NewPresenter. More... | |
MxResult | Tickle () override |
Main world tick/update, especially manages startup countdown. More... | |
MxResult | Create (MxDSAction &p_dsAction) override |
Initializes the world using an action, creating entity and sound lists, and camera controller. More... | |
void | Destroy (MxBool p_fromDestructor) override |
Destroys the world and its contents, optionally called from the destructor. More... | |
virtual void | ReadyWorld () |
Called when the world is ready to be used—typically for custom scene setup after startup. More... | |
virtual LegoCameraController * | VTable0x54 () |
Initializes and returns the camera controller for the world; may create it on-demand. More... | |
virtual void | Add (MxCore *p_object) |
Adds an object (entity, presenter, ROI, etc.) to the appropriate world-managed list or set. More... | |
virtual MxBool | VTable0x5c () |
Potential "escape" action for world; returns FALSE by default, may be overridden in child worlds. More... | |
virtual void | VTable0x60 () |
Placeholder/extensible virtual—default does nothing. More... | |
virtual MxBool | Escape () |
Handles user-initiated "escape" or exit action. More... | |
virtual void | Enable (MxBool p_enable) |
Enables or disables (pauses) the world and its main components. More... | |
const char * | ClassName () const override |
Returns the class name for runtime type information and debugging. More... | |
MxBool | IsA (const char *p_name) const override |
Runtime type checking; checks class hierarchy. More... | |
MxBool | PresentersPending () |
Checks if there are any presenters pending to fully enter their tickle (animation) state. More... | |
void | Remove (MxCore *p_object) |
Removes an object from all relevant world-managed lists or sets, and also detaches if needed. More... | |
MxResult | PlaceActor (LegoPathActor *p_actor, const char *p_name, MxS32 p_src, float p_srcScale, MxS32 p_dest, float p_destScale) |
Places an actor along a path, from source to destination, using named references and scaling. More... | |
MxResult | PlaceActor (LegoPathActor *p_actor) |
Places an actor using only its reference, using controller logic. More... | |
MxResult | PlaceActor (LegoPathActor *p_actor, LegoAnimPresenter *p_presenter, Vector3 &p_position, Vector3 &p_direction) |
Places an actor using detailed presenter, position and direction. More... | |
void | RemoveActor (LegoPathActor *p_actor) |
Removes an actor from all known path controllers. More... | |
MxBool | ActorExists (LegoPathActor *p_actor) |
Determines if an actor already exists in any controller in this world. More... | |
void | FUN_1001fda0 (LegoAnimPresenter *p_presenter) |
Forwards a presenter to all path controllers to perform a custom action (possibly hide, etc.). More... | |
void | FUN_1001fe90 (LegoAnimPresenter *p_presenter) |
Forwards a presenter to all path controllers for another custom or state change action. More... | |
LegoPathBoundary * | FindPathBoundary (const char *p_name) |
Finds a path boundary in all path controllers by name. More... | |
void | AddPath (LegoPathController *p_controller) |
Adds a path controller to the world and calls its initialization with this. More... | |
MxResult | GetCurrPathInfo (LegoPathBoundary **p_boundaries, MxS32 &p_numL) |
Gets information about the currently active path and boundaries. More... | |
MxCore * | Find (const char *p_class, const char *p_name) |
Finds an object of a given class and name in the world. More... | |
MxCore * | Find (const MxAtomId &p_atom, MxS32 p_entityId) |
Finds an object in the world by its atom id and entity id. More... | |
LegoCameraController * | GetCameraController () |
Returns the current camera controller for the world. More... | |
LegoEntityList * | GetEntityList () |
Returns the current list of entities. More... | |
LegoOmni::World | GetWorldId () |
Gets the world id associated with this world. More... | |
MxBool | GetUnknown0xd0Empty () |
Checks if the 'set0xd0' set is empty. More... | |
list< LegoROI * > & | GetROIList () |
Gets the list of all ROIs (Real-time Object Instances) in the world. More... | |
LegoHideAnimPresenter * | GetHideAnimPresenter () |
Gets the animation presenter responsible for hide animations in this world. More... | |
void | SetWorldId (LegoOmni::World p_worldId) |
Sets the world id for this world instance. More... | |
![]() | |
LegoEntity () | |
[AI] Default constructor. Initializes the LegoEntity with default values. [AI] More... | |
~LegoEntity () override | |
[AI] Destructor. Cleans up resources and ensures ROI and script state are released. [AI] More... | |
MxLong | Notify (MxParam &p_param) override |
[AI] Handles event notification for the entity, most notably user clicks, using polymorphic dispatch. More... | |
const char * | ClassName () const override |
[AI] Returns the class name string. Used in entity runtime type identification. [AI] More... | |
MxBool | IsA (const char *p_name) const override |
[AI] Polymorphic type check for this entity given a string. More... | |
virtual MxResult | Create (MxDSAction &p_dsAction) |
[AI] Initializes the entity from a DSAction object, typically from a script or file load. More... | |
virtual void | Destroy (MxBool p_fromDestructor) |
[AI] Cleans up the entity, detaching ROI and releasing references. More... | |
virtual void | ParseAction (char *p_extra) |
[AI] Parses an action description string (usually from script "extra" data) and sets up this entity's action state. More... | |
virtual void | SetROI (LegoROI *p_roi, MxBool p_bool1, MxBool p_bool2) |
[AI] Assigns a 3D ROI (3D object instance) to this entity, controlling how it appears/acts in the world. More... | |
virtual void | SetWorldTransform (const Vector3 &p_location, const Vector3 &p_direction, const Vector3 &p_up) |
[AI] Explicitly sets the world transformation (location, direction, up vector) for this entity. More... | |
virtual void | ResetWorldTransform (MxBool p_cameraFlag) |
[AI] Resets the transformation for this entity (e.g., used with camera transitions). More... | |
virtual void | SetWorldSpeed (MxFloat p_worldSpeed) |
[AI] Sets the current world speed value for this entity (used to control motion/animation rate). More... | |
virtual void | ClickSound (MxBool p_und) |
[AI] Plays a click sound, typically in response to user/AI actions, according to entity type. More... | |
virtual void | ClickAnimation () |
[AI] Plays a context-sensitive click animation, driven by current entity type and state. [AI] More... | |
virtual void | SwitchVariant () |
[AI] Switches variants for this entity (e.g., different animation, mesh, or texture variant), based on type. [AI] More... | |
virtual void | SwitchSound () |
[AI] Triggers a context-dependent audio/sound variant switch for this entity. [AI] More... | |
virtual void | SwitchMove () |
[AI] Switches movement/animation variant for this entity, if applicable (e.g., walking/running state). [AI] More... | |
virtual void | SwitchColor (LegoROI *p_roi) |
[AI] Switches the color or texture variant for this entity (or target ROI). More... | |
virtual void | SwitchMood () |
[AI] Triggers a mood/state switch for this entity (if supported), often for characters. [AI] More... | |
void | FUN_10010c30 () |
[AI] Updates the camera transformation when this entity is the camera target. Used after movement or position updates. [AI] More... | |
void | SetType (MxU8 p_type) |
[AI] Sets the entity's type (actor/plant/building/etc.) [AI] More... | |
void | SetLocation (const Vector3 &p_location, const Vector3 &p_direction, const Vector3 &p_up, MxBool p_und) |
[AI] Sets the world-space location, direction, and up, applying normalization and transformation. More... | |
Mx3DPointFloat | GetWorldDirection () |
[AI] Gets the normalized world-space direction vector, optionally updating from ROI. [AI] More... | |
Mx3DPointFloat | GetWorldUp () |
[AI] Gets the normalized world-space up vector, optionally updating from ROI. [AI] More... | |
Mx3DPointFloat | GetWorldPosition () |
[AI] Gets the world-space position vector, optionally updating from ROI. [AI] More... | |
MxBool | GetUnknown0x10IsSet (MxU8 p_flag) |
[AI] Checks if a bit flag in m_unk0x10 is set (purpose: state/animation suppression lock). More... | |
MxBool | GetFlagsIsSet (MxU8 p_flag) |
[AI] Checks if a flag is set in the primary flags byte (m_flags). More... | |
MxU8 | GetFlags () |
[AI] Returns the value of the flag byte. [AI] More... | |
MxFloat | GetWorldSpeed () |
[AI] Gets the entity's current world speed state. [AI] More... | |
LegoROI * | GetROI () |
[AI] Gets the ROI (Realtime Object Instance) associated with this entity. [AI] More... | |
MxU8 | GetType () |
[AI] Gets the type of this entity (one of the enum Type values). [AI] More... | |
MxBool | GetCameraFlag () |
[AI] Returns whether this entity is flagged as camera (affects world/camera synchronization). [AI] More... | |
void | SetFlags (MxU8 p_flags) |
[AI] Sets all entity flags at once (replaces previous). More... | |
void | SetFlag (MxU8 p_flag) |
[AI] Sets the given flag in the flags byte. More... | |
void | ClearFlag (MxU8 p_flag) |
[AI] Clears the given flag in the flags byte. More... | |
void | SetUnknown0x10Flag (MxU8 p_flag) |
[AI] Sets the given bit in the unknown (usually internal action suppression) flag byte. More... | |
void | ClearUnknown0x10Flag (MxU8 p_flag) |
[AI] Clears the given bit in the unknown flag byte. More... | |
![]() | |
MxEntity () | |
Default constructor. More... | |
~MxEntity () override | |
Virtual destructor for MxEntity. More... | |
const char * | ClassName () const override |
Returns the class name for type introspection. More... | |
MxBool | IsA (const char *p_name) const override |
Checks if the object is of the given class name or a parent type. More... | |
virtual MxResult | Create (MxS32 p_entityId, const MxAtomId &p_atomId) |
Initializes the entity from a given entity ID and AtomId. More... | |
MxResult | Create (MxDSAction &p_dsAction) |
Initializes the entity from a MxDSAction object. More... | |
MxS32 | GetEntityId () |
Returns the current entity ID. More... | |
MxAtomId & | GetAtomId () |
Returns a reference to the entity AtomId. More... | |
void | SetEntityId (MxS32 p_entityId) |
Sets the entity ID to the given value. More... | |
void | SetAtomId (const MxAtomId &p_atomId) |
Sets the AtomId to the given value. More... | |
![]() | |
MxCore () | |
[AI] Constructs a new MxCore object and assigns it a unique id. More... | |
virtual | ~MxCore () |
[AI] Virtual destructor. Required for correct polymorphic cleanup in derived classes. More... | |
virtual MxLong | Notify (MxParam &p_param) |
[AI] Virtual callback notification mechanism. More... | |
virtual MxResult | Tickle () |
[AI] Called by tickle managers to allow the object to update itself. More... | |
virtual const char * | ClassName () const |
[AI] Returns the runtime class name of this object. More... | |
virtual MxBool | IsA (const char *p_name) const |
[AI] Checks whether this object's class type or parents match the given name. More... | |
MxU32 | GetId () |
[AI] Gets the unique (per-process) id assigned to this object instance. More... | |
Additional Inherited Members | |
![]() | |
enum | StartupTicks { e_start = 0 , e_one , e_two , e_three , e_four } |
Ticks for world startup sequencing. More... | |
![]() | |
enum | Type { e_actor = 0 , e_unk1 , e_plant , e_building , e_autoROI } |
[AI] Types of LegoEntity (Actor, Plant, Building, Auto ROI, etc.) [AI] More... | |
enum | { c_bit1 = 0x01 , c_managerOwned = 0x02 } |
[AI] Bit flag constants for entity state management [AI] More... | |
enum | { c_altBit1 = 0x01 } |
[AI] Secondary bit flag constants [AI] More... | |
![]() | |
static const char * | HandlerClassName () |
[AI] Gets the handler class name string for this class ("LegoRace"). More... | |
![]() | |
void | Init () |
[AI] Initializes the entity's members to default/neutral values (utility for constructors and resets). [AI] More... | |
void | SetWorld () |
[AI] Registers/attaches this entity to the current world if not already; called on create or location change. [AI] More... | |
![]() | |
MxS32 | m_unk0xf8 |
[AI] Unknown (race-specific state/control variable). More... | |
MxS32 | m_unk0xfc |
[AI] Unknown (race-specific state/control variable). More... | |
MxS32 | m_unk0x100 |
[AI] Unknown (race-specific state/control variable). More... | |
MxS32 | m_unk0x104 |
[AI] Unknown (race-specific state/control variable). More... | |
MxS32 | m_unk0x108 |
[AI] Unknown (race-specific state/control variable). More... | |
MxS32 | m_unk0x10c |
[AI] Unknown (race-specific state/control variable). More... | |
LegoRaceMap * | m_maps [3] |
[AI] Map objects used by this race (main, alternate, or lap variants). More... | |
LegoGameState::Area | m_destLocation |
[AI] Destination location (area to switch to after race/transition). More... | |
LegoPathActor * | m_pathActor |
[AI] User's path actor for the race event. More... | |
Act1State * | m_act1State |
[AI] Pointer to Act1State (first act/sequence logic). More... | |
MxStillPresenter * | m_unk0x128 |
[AI] Unknown, likely for presenting stills during race transitions or cutscenes. More... | |
MxStillPresenter * | m_unk0x12c |
[AI] Unknown, likely for presenting stills during race transitions or cutscenes. More... | |
MxRect32 | m_unk0x130 |
[AI] Unknown 32-bit rectangle, possible HUD/viewport region. More... | |
RaceState * | m_raceState |
[AI] Stores persistent race state/results for the race world instance. More... | |
![]() | |
LegoPathControllerList | m_pathControllerList |
List of all path controllers currently managing pathing in this world. More... | |
MxPresenterList | m_animPresenters |
List of active animation presenters (anims, hide/show, looping, etc.). More... | |
LegoCameraController * | m_cameraController |
Camera controller for world's main view. More... | |
LegoEntityList * | m_entityList |
List of all main world entities, such as actors and objects. More... | |
LegoCacheSoundList * | m_cacheSoundList |
List of cached sounds for faster access during this world's lifetime. More... | |
MxBool | m_destroyed |
Indicates if the world has been destroyed or is pending destruction. More... | |
MxCoreSet | m_set0xa8 |
Set of 'auxiliary' objects, including presenters, that aren't core entity or animation, but still must be managed. More... | |
MxPresenterList | m_controlPresenters |
List of control presenters (UI, input, cutscene control, etc.). More... | |
MxCoreSet | m_set0xd0 |
Set of currently paused/disconnected objects when world is disabled. More... | |
list< LegoROI * > | m_roiList |
List of all visible LegoROI objects in the world, used for rendering and selection. More... | |
LegoOmni::World | m_worldId |
Currently assigned world id, corresponding to an enum in LegoOmni. More... | |
LegoHideAnimPresenter * | m_hideAnim |
Animation presenter for ROI hide (vanish, fade, etc.) sequences. More... | |
MxS16 | m_startupTicks |
Current world startup tick countdown—controls staged world startup logic. More... | |
MxBool | m_worldStarted |
Indicates if the world has successfully started and is considered active. More... | |
undefined | m_unk0xf7 |
Unknown, probably flags or padding. More... | |
![]() | |
MxU8 | m_unk0x10 |
[AI] Unknown state/flag, used mainly to guard against repeated actions or manage animation/sound state. [AI] More... | |
MxU8 | m_flags |
[AI] Primary entity flags (bitfield); tracks per-entity management status, internal update locks, etc. [AI] More... | |
Mx3DPointFloat | m_worldLocation |
[AI] Entity location in world coordinates. [AI] More... | |
Mx3DPointFloat | m_worldDirection |
[AI] Entity direction vector in world space (normalized). [AI] More... | |
Mx3DPointFloat | m_worldUp |
[AI] Entity up vector in world space (normalized). [AI] More... | |
MxFloat | m_worldSpeed |
[AI] World-relative speed (can affect animation/movement logic). [AI] More... | |
LegoROI * | m_roi |
[AI] Pointer to this entity's currently assigned ROI (3D instance in the world). [AI] More... | |
MxBool | m_cameraFlag |
[AI] Set to TRUE if this entity is currently the camera target. [AI] More... | |
MxU8 | m_type |
[AI] The entity type (Type enum value). [AI] More... | |
Extra::ActionType | m_actionType |
[AI] Action type, parsed from script/extra string (e.g., openram/run/exit); guides Notify() and click logic. [AI] More... | |
char * | m_siFile |
[AI] When parsing ACTION command, this is the SI script/filename to execute (owned, heap-allocated). [AI] More... | |
MxS32 | m_targetEntityId |
[AI] When parsing ACTION command, this is the target entity ID for the action (or -1 for none). [AI] More... | |
![]() | |
MxS32 | m_entityId |
The unique entity ID, typically used for lookup and reference. More... | |
MxAtomId | m_atomId |
The AtomId associated with this entity, used for resource and script identification. More... | |
Implements the LEGO Island car race game mode.
[AI]
[AI] CarRace manages the entire lifecycle of the car racing mini-game, handling object creation, race state management, notifications (clicks, race progress), setting up the 3D scene, handling transitions, updating visual feedback, and interfacing with other game systems (scripts, animation, audio, variable table, etc). [AI]
When started, CarRace configures the player and NPC racers, prepares UI and world, handles animations, sound, and user interaction/input, and manages progression and finish logic. [AI]
CarRace::CarRace | ( | ) |
Constructs a CarRace instance and initializes member variables.
[AI]
Definition at line 71 of file carrace.cpp.
|
inlineoverridevirtual |
|
overridevirtual |
Initializes the car racing game mode and underlying state based on the supplied DSAction.
[AI]
p_dsAction | Script action (usually from SI files) to create the race context. [AI] |
[AI] This sets up controllers, audio, variables, scripts, and state tracking for the car race sequence. [AI]
Reimplemented from LegoEntity.
Definition at line 79 of file carrace.cpp.
|
overridevirtual |
Handles the user-initiated escape/action to quit or exit the car race mini-game.
[AI]
[AI] Stops race-specific actions, resets relevant state and transitions back to main menu/other area. [AI]
Reimplemented from LegoWorld.
Definition at line 412 of file carrace.cpp.
Updates the location of still presenters for UI progress based on race advancement.
[AI]
p_param1 | Entity group/type (11 for car 1, 12 for car 2). [AI] |
p_param2 | Race segment index reached to update the position for. [AI] |
[AI] Moves UI elements to reflect race progress for secondary actors (NPC vehicles). [AI]
Definition at line 386 of file carrace.cpp.
|
inline |
|
overridevirtual |
Handles click input in the context of the car race UI (such as quit buttons).
[AI]
p_param | The click notification details. [AI] |
[AI] Processes which UI object was clicked and handles stop transitions, variable updates, and game state changes. [AI]
Implements LegoRace.
Definition at line 336 of file carrace.cpp.
|
overridevirtual |
Handles the ending of scripted race actions.
[AI]
p_param | Notification for actions (e.g., animations, audio) completing. [AI] |
[AI] Used to chain script events and update post-race animations, dialog, and state changes. [AI]
Reimplemented from LegoRace.
Definition at line 144 of file carrace.cpp.
|
overridevirtual |
Handles race progress triggers from path segments.
[AI]
p_param | Notification about an entity passing a trigger point along the race path. [AI] |
[AI] Updates position, win/lose logic, UI position, sets variables for distance/lap completion, and handles transitions and mute on race finish. [AI]
Reimplemented from LegoRace.
Definition at line 178 of file carrace.cpp.
|
overridevirtual |
Handles notifications of an unclassified ("type 0") game event in this game mode.
[AI]
param | Game notification parameter. [AI] |
[AI] Used to monitor and react to generic notifications, such as state transitions at the end of the race. [AI]
Reimplemented from LegoRace.
Definition at line 375 of file carrace.cpp.
|
inlineoverridevirtual |
Checks if this object is the specified class or inherits from it.
[AI]
p_name | Class name to check against. [AI] |
[AI] Performs a string comparison and delegates up to LegoRace if there is no match. [AI]
Reimplemented from MxCore.
|
overridevirtual |
Prepares the car race world and all interactive actors, UI, and animations.
[AI]
[AI] This runs post-initialization before the first race frame. It activates HUD, inputs, animation, race progress tracking, positions UI presenters, and sets race distance. [AI]
Reimplemented from LegoWorld.
Definition at line 115 of file carrace.cpp.
|
inline |