Isle
Loading...
Searching...
No Matches
act3actors.h
Go to the documentation of this file.
1#ifndef ACT3ACTORS_H
2#define ACT3ACTORS_H
3
4#include "legoanimactor.h"
5
6// File name verified by multiple assertions, e.g. BETA10 0x10018391 [AI]
7
8class Act3Ammo;
10struct LegoPlantInfo;
11class LegoWorld;
12
13// VTABLE: LEGO1 0x100d7920 LegoPathActor [AI]
14// VTABLE: LEGO1 0x100d79f0 LegoAnimActor [AI]
15// SIZE 0x1a8 [AI]
21class Act3Shark : public LegoAnimActor {
22public:
26 Act3Shark();
27
32 void ParseAction(char*) override; // vtable+0x20
33
38 void Animate(float p_time) override; // vtable+0x70
39
45 virtual MxResult EatPizza(Act3Ammo* p_ammo); // vtable+0x10
46
51 const char* ClassName() const override // vtable+0x0c
52 {
53 // Does not exist in BETA10 [AI]
54 // STRING: LEGO1 0x100f03a0 [AI]
55 return "Act3Shark";
56 }
57
62 MxFloat GetUnknown0x2c() { return m_unk0x2c; }
63
68 void SetUnknown0x2c(MxFloat p_unk0x2c) { m_unk0x2c = p_unk0x2c; }
69
70 // SYNTHETIC: LEGO1 0x10043030 [AI]
71 // Act3Shark::`scalar deleting destructor' [AI]
72
73private:
74 list<Act3Ammo*> m_eatPizzas;
75 Act3Ammo* m_nextPizza;
76 MxFloat m_unk0x2c;
77 LegoWorld* m_world;
78 LegoAnimActorStruct* m_unk0x34;
79 LegoROI* m_unk0x38;
80 Mx3DPointFloat m_unk0x3c;
81};
82
83// VTABLE: LEGO1 0x100d7668 LegoPathActor [AI]
84// VTABLE: LEGO1 0x100d7738 LegoAnimActor [AI]
85// VTABLE: BETA10 0x101b8a98 LegoPathActor [AI]
86// VTABLE: BETA10 0x101b8b88 LegoAnimActor [AI]
87// SIZE 0x178 [AI]
93class Act3Actor : public LegoAnimActor {
94public:
98 Act3Actor();
99
106 MxU32 VTable0x90(float p_time, Matrix4& p_transform) override; // vtable+0x90
107
114 MxResult HitActor(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
115
120 const char* ClassName() const override // vtable+0x0c
121 {
122 // STRING: LEGO1 0x100f03ac [AI]
123 return "Act3Actor";
124 }
125
130 MxFloat GetUnknown0x1c() { return m_unk0x1c; }
131
136 void SetUnknown0x1c(MxFloat p_unk0x1c) { m_unk0x1c = p_unk0x1c; }
137
138 // SYNTHETIC: LEGO1 0x10043330 [AI]
139 // Act3Actor::`scalar deleting destructor' [AI]
140
141 // SYNTHETIC: LEGO1 0x10040fa0 [AI]
142 // Act3Actor::~Act3Actor [AI]
143
144private:
145 static Mx3DPointFloat g_unk0x10104ef0;
146
147 MxFloat m_unk0x1c;
148};
149
150// VTABLE: LEGO1 0x100d7750 LegoPathActor [AI]
151// VTABLE: LEGO1 0x100d7820 LegoAnimActor [AI]
152// SIZE 0x188 [AI]
158class Act3Cop : public Act3Actor {
159public:
163 struct Act3CopDest {
164 const char* m_bName;
168 };
169
173 Act3Cop();
174
179 void ParseAction(char* p_extra) override; // vtable+0x20
180
185 void Animate(float p_time) override; // vtable+0x70
186
193 MxResult HitActor(LegoPathActor*, MxBool) override; // vtable+0x94
194
199 MxResult VTable0x9c() override; // vtable+0x9c
200
205 MxFloat GetUnknown0x20() { return m_unk0x20; }
206
211 void SetUnknown0x20(MxFloat p_unk0x20) { m_unk0x20 = p_unk0x20; }
212
219 MxResult FUN_10040350(Act3Ammo& p_ammo, const Vector3&);
220
226
227 // SYNTHETIC: LEGO1 0x10043120 [AI]
228 // Act3Cop::`scalar deleting destructor' [AI]
229
230private:
231 MxFloat m_unk0x20;
232 LegoWorld* m_world;
233 LegoAnimActorStruct* m_eatAnim;
234 undefined4 m_unk0x2c;
235};
236
237// VTABLE: LEGO1 0x100d7838 LegoPathActor [AI]
238// VTABLE: LEGO1 0x100d7908 LegoAnimActor [AI]
239// SIZE 0x1b4 [AI]
245class Act3Brickster : public Act3Actor {
246public:
251
255 ~Act3Brickster() override;
256
261 void ParseAction(char* p_extra) override; // vtable+0x20
262
267 void Animate(float p_time) override; // vtable+0x70
268
275 MxResult HitActor(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
276
283 void SwitchBoundary(
284 LegoPathBoundary*& p_boundary,
285 LegoUnknown100db7f4*& p_edge,
286 float& p_unk0xe4
287 ) override; // vtable+0x98
288
293 MxResult VTable0x9c() override; // vtable+0x9c
294
299 MxFloat GetUnknown0x20() { return m_unk0x20; }
304 MxFloat GetUnknown0x24() { return m_unk0x24; }
309 MxFloat GetUnknown0x50() { return m_unk0x50; }
310
315 void SetUnknown0x20(MxFloat p_unk0x20) { m_unk0x20 = p_unk0x20; }
316 void SetUnknown0x24(MxFloat p_unk0x24) { m_unk0x24 = p_unk0x24; }
317 void SetUnknown0x50(MxFloat p_unk0x50) { m_unk0x50 = p_unk0x50; }
318
325 MxResult FUN_100417a0(Act3Ammo& p_ammo, const Vector3&);
326
332
333 // SYNTHETIC: LEGO1 0x10043250 [AI]
334 // Act3Brickster::`scalar deleting destructor' [AI]
335
336private:
341 MxS32 FUN_10042300();
342
343 MxFloat m_unk0x20;
344 MxFloat m_unk0x24;
345 LegoWorld* m_world;
346 LegoPlantInfo* m_pInfo;
347 LegoBuildingInfo* m_bInfo;
348 LegoAnimActorStruct* m_shootAnim;
349 undefined4 m_unk0x38;
350 Mx3DPointFloat m_unk0x3c;
351 MxFloat m_unk0x50;
352 MxFloat m_unk0x54;
353 MxU8 m_unk0x58;
354};
355
356// FUNCTION: LEGO1 0x1003ff10 [AI]
357// Act3Actor::`vbase destructor' [AI]
358
359// TEMPLATE: LEGO1 0x10042c20
360// list<Act3Ammo *,allocator<Act3Ammo *> >::~list<Act3Ammo *,allocator<Act3Ammo *> > [AI]
361
362// TEMPLATE: LEGO1 0x10042c90
363// List<Act3Ammo *>::~List<Act3Ammo *> [AI]
364
365// TEMPLATE: LEGO1 0x10042ee0
366// list<Act3Ammo *,allocator<Act3Ammo *> >::erase [AI]
367
368// GLOBAL: LEGO1 0x100d7660
369// Act3Actor::`vbtable' [AI]
370
371// GLOBAL: LEGO1 0x100d7748
372// Act3Cop::`vbtable' [AI]
373
374// GLOBAL: LEGO1 0x100d7830
375// Act3Brickster::`vbtable' [AI]
376
377// GLOBAL: LEGO1 0x100d7918
378// Act3Shark::`vbtable' [AI]
379
380#endif // ACT3ACTORS_H
[AI] Represents a generic animatable actor in Act 3, supporting path following and custom animation t...
Definition: act3actors.h:93
MxFloat GetUnknown0x1c()
[AI] Gets the custom time marker or value for animation/transformation logic.
Definition: act3actors.h:130
Act3Actor()
[AI] Constructs a new Act3Actor, initializing state.
Definition: act3actors.cpp:96
void SetUnknown0x1c(MxFloat p_unk0x1c)
[AI] Sets the custom time marker or value.
Definition: act3actors.h:136
const char * ClassName() const override
[AI] Returns the class name string for debugging/instancing.
Definition: act3actors.h:120
MxResult HitActor(LegoPathActor *p_actor, MxBool p_bool) override
[AI] Called when this actor is hit/collided by another actor, such as a projectile or another charact...
Definition: act3actors.cpp:152
MxU32 VTable0x90(float p_time, Matrix4 &p_transform) override
[AI] Handles transformation updates for the actor.
Definition: act3actors.cpp:103
Represents an ammo object (pizza or donut) used in Act 3 gameplay sequence.
Definition: act3ammo.h:15
[AI] Represents the Brickster actor in Act 3, with AI and scene logic for stealing pizzas and causing...
Definition: act3actors.h:245
MxResult HitActor(LegoPathActor *p_actor, MxBool p_bool) override
[AI] Handles Brickster being hit by an actor (e.g., cop, pizza ammo), processes pizza counters and de...
Definition: act3actors.cpp:741
MxResult FUN_100417c0()
[AI] Recalculates Brickster's navigation to a new plant/building/target as dictated by AI logic.
Definition: act3actors.cpp:788
MxFloat GetUnknown0x50()
[AI] Gets the duration/target for building/plant attack animation.
Definition: act3actors.h:309
MxFloat GetUnknown0x24()
[AI] Gets another stateful marker (delays, cooldown, or pizza effect timer).
Definition: act3actors.h:304
void Animate(float p_time) override
[AI] Main logic for Brickster's per-frame AI behavior: handles pizza seeking, plant/building attacks,...
Definition: act3actors.cpp:571
void SetUnknown0x20(MxFloat p_unk0x20)
[AI] Sets custom Brickster timers/markers (see getters).
Definition: act3actors.h:315
MxFloat GetUnknown0x20()
[AI] Gets a custom timer or marker for the Brickster state machine.
Definition: act3actors.h:299
void ParseAction(char *p_extra) override
[AI] Parses Brickster-specific commands from action strings; sets its world reference and triggers th...
Definition: act3actors.cpp:552
~Act3Brickster() override
[AI] Frees Brickster resources, implemented for correct inheritance.
Definition: act3actors.cpp:545
Act3Brickster()
[AI] Constructs a Brickster character, setting default animation and navigation state.
Definition: act3actors.cpp:526
void SetUnknown0x50(MxFloat p_unk0x50)
Definition: act3actors.h:317
MxResult FUN_100417a0(Act3Ammo &p_ammo, const Vector3 &)
[AI] Triggers the Brickster to react to a thrown pizza.
Definition: act3actors.cpp:777
MxResult VTable0x9c() override
[AI] Handles AI updates post pathfinding/state transition recalculation.
void SetUnknown0x24(MxFloat p_unk0x24)
Definition: act3actors.h:316
void SwitchBoundary(LegoPathBoundary *&p_boundary, LegoUnknown100db7f4 *&p_edge, float &p_unk0xe4) override
[AI] Switches navigation/path boundary for Brickster and updates edge and offset (stateful for when e...
[AI] Represents a police officer actor in Act 3, supporting specific cop AI actions,...
Definition: act3actors.h:158
MxResult FUN_10040360()
[AI] Internal: recalculates cop movement/path container target.
Definition: act3actors.cpp:326
void Animate(float p_time) override
[AI] Per-frame animation update, handles cop AI state switching to seek donuts, interact with Brickst...
Definition: act3actors.cpp:283
Act3Cop()
[AI] Constructs a new police officer actor, initializing references and default patrol states.
Definition: act3actors.cpp:177
MxResult VTable0x9c() override
[AI] Performs path container recalculation for cop AI movement.
Definition: act3actors.cpp:511
MxResult HitActor(LegoPathActor *, MxBool) override
[AI] Processes collision with another actor, especially for handling donut pickups and Brickster inte...
Definition: act3actors.cpp:186
MxFloat GetUnknown0x20()
[AI] Gets a cop-specific timer used for movement or eating actions.
Definition: act3actors.h:205
MxResult FUN_10040350(Act3Ammo &p_ammo, const Vector3 &)
[AI] Triggers the cop to attempt to intercept or react to a thrown donut.
Definition: act3actors.cpp:319
void ParseAction(char *p_extra) override
[AI] Parses incoming action command strings for cop-specific data and registers itself with the world...
Definition: act3actors.cpp:221
void SetUnknown0x20(MxFloat p_unk0x20)
[AI] Sets the cop timer for eating/movement delays.
Definition: act3actors.h:211
[AI] Represents the shark actor for Act 3 of the LEGO Island game.
Definition: act3actors.h:21
MxFloat GetUnknown0x2c()
[AI] Gets the timestamp or value representing current animation time progress or state.
Definition: act3actors.h:62
Act3Shark()
[AI] Constructs a new Act3Shark object, initializing internal state.
void SetUnknown0x2c(MxFloat p_unk0x2c)
[AI] Sets the timestamp or value representing animation progress/state.
Definition: act3actors.h:68
const char * ClassName() const override
[AI] Returns the class name string for debugging/instancing.
Definition: act3actors.h:51
void Animate(float p_time) override
[AI] Handles per-frame animation updates for the shark, synchronizing animation with pizza consumptio...
virtual MxResult EatPizza(Act3Ammo *p_ammo)
[AI] Called when the shark "eats" a pizza.
void ParseAction(char *) override
[AI] Handles additional parsing logic for shark-specific actions, such as animation triggers.
[AI] Path-based actor which supports skeletal/mesh animation via an animation tree and multiple anima...
Definition: legoanimactor.h:49
[AI] An actor that moves along a predefined path, supporting boundary transitions,...
Definition: legopathactor.h:32
[AI] Represents a path segment or boundary in the navigation network for actors (vehicles,...
[AI] Represents a Real-time Object Instance enriched with LEGO-specific functionality.
Definition: legoroi.h:43
Represents the active 3D world, holding all entity, animation, sound, path, and ROI objects.
Definition: legoworld.h:49
4x4 Matrix class with virtual interface for manipulation and transformation.
Definition: matrix.h:24
[AI] Represents a 3D point with floating-point precision, inheriting from Vector3.
Definition: mxgeometry3d.h:14
[AI] 3D vector class, providing vector and cross-product operations in 3D space.
Definition: vector.h:249
#define override
Definition: compat.h:21
unsigned int undefined4
Definition: decomp.h:28
MxU8 MxBool
[AI]
Definition: mxtypes.h:124
MxLong MxResult
[AI]
Definition: mxtypes.h:106
float MxFloat
[AI]
Definition: mxtypes.h:68
unsigned char MxU8
[AI]
Definition: mxtypes.h:8
signed int MxS32
[AI]
Definition: mxtypes.h:38
unsigned int MxU32
[AI]
Definition: mxtypes.h:32
[AI] Structure containing cop destination information for patrol paths, boundaries,...
Definition: act3actors.h:163
LegoPathBoundary * m_boundary
[AI] Cached pointer to the boundary object after resolving m_bName
Definition: act3actors.h:165
MxFloat m_unk0x14[3]
[AI] Direction or reference vector for this destination [AI_SUGGESTED_NAME: destinationDir]
Definition: act3actors.h:167
MxFloat m_unk0x08[3]
[AI] World coordinates for the destination or checkpoint [AI_SUGGESTED_NAME: destinationPos]
Definition: act3actors.h:166
const char * m_bName
[AI] Path boundary name used for seeking path destinations
Definition: act3actors.h:164
[AI] Holds per-animation instance data for a LegoAnimActor.
Definition: legoanimactor.h:13
[AI] Describes the state, configuration, and world placement of a single LEGO building entity,...
[AI] Struct representing a single plant's static configuration on LEGO Island, including placement,...
Definition: legoplants.h:18
[AI] Represents an advanced edge in the LEGO Island geometry system, with direction,...