mirror of
				https://github.com/isledecomp/isle.git
				synced 2025-10-25 17:34:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			151 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef ISLEPATHACTOR_H
 | |
| #define ISLEPATHACTOR_H
 | |
| 
 | |
| #include "legogamestate.h"
 | |
| #include "legopathactor.h"
 | |
| #include "mxtypes.h"
 | |
| #include "roi/legoroi.h"
 | |
| 
 | |
| class LegoControlManagerNotificationParam;
 | |
| class LegoEndAnimNotificationParam;
 | |
| class LegoWorld;
 | |
| class LegoPathStructNotificationParam;
 | |
| 
 | |
| // VTABLE: LEGO1 0x100d4398
 | |
| // SIZE 0x160
 | |
| class IslePathActor : public LegoPathActor {
 | |
| public:
 | |
| 	enum {
 | |
| 		c_LOCATIONS_NUM = 29
 | |
| 	};
 | |
| 
 | |
| 	enum {
 | |
| 		c_spawnBit1 = 0x01,
 | |
| 		c_playMusic = 0x02,
 | |
| 		c_spawnBit3 = 0x04
 | |
| 	};
 | |
| 
 | |
| 	// SIZE 0x38
 | |
| 	struct SpawnLocation {
 | |
| 		SpawnLocation() {}
 | |
| 
 | |
| 		// FUNCTION: LEGO1 0x1001b1b0
 | |
| 		SpawnLocation(
 | |
| 			LegoGameState::Area p_area,
 | |
| 			MxAtomId* p_script,
 | |
| 			MxS32 p_entityId,
 | |
| 			const char* p_name,
 | |
| 			MxS16 p_src,
 | |
| 			float p_srcScale,
 | |
| 			MxS16 p_dest,
 | |
| 			float p_destScale,
 | |
| 			MxU32 p_location,
 | |
| 			JukeboxScript::Script p_music
 | |
| 		)
 | |
| 		{
 | |
| 			m_area = p_area;
 | |
| 			m_script = p_script;
 | |
| 			m_entityId = p_entityId;
 | |
| 			strcpy(m_name, p_name);
 | |
| 			m_src = p_src;
 | |
| 			m_srcScale = p_srcScale;
 | |
| 			m_dest = p_dest;
 | |
| 			m_destScale = p_destScale;
 | |
| 			m_location = p_location;
 | |
| 			m_music = p_music;
 | |
| 		}
 | |
| 
 | |
| 		// FUNCTION: LEGO1 0x1001b230
 | |
| 		SpawnLocation& operator=(const SpawnLocation& p_location)
 | |
| 		{
 | |
| 			m_area = p_location.m_area;
 | |
| 			m_script = p_location.m_script;
 | |
| 			m_entityId = p_location.m_entityId;
 | |
| 			strcpy(m_name, p_location.m_name);
 | |
| 			m_src = p_location.m_src;
 | |
| 			m_srcScale = p_location.m_srcScale;
 | |
| 			m_dest = p_location.m_dest;
 | |
| 			m_destScale = p_location.m_destScale;
 | |
| 			m_location = p_location.m_location;
 | |
| 			m_music = p_location.m_music;
 | |
| 			return *this;
 | |
| 		}
 | |
| 
 | |
| 		LegoGameState::Area m_area;    // 0x00
 | |
| 		MxAtomId* m_script;            // 0x04
 | |
| 		MxS32 m_entityId;              // 0x08
 | |
| 		char m_name[20];               // 0x0c
 | |
| 		MxS16 m_src;                   // 0x20
 | |
| 		float m_srcScale;              // 0x24
 | |
| 		MxS16 m_dest;                  // 0x28
 | |
| 		float m_destScale;             // 0x2c
 | |
| 		MxU32 m_location;              // 0x30
 | |
| 		JukeboxScript::Script m_music; // 0x34
 | |
| 	};
 | |
| 
 | |
| 	IslePathActor();
 | |
| 
 | |
| 	// FUNCTION: LEGO1 0x10002e10
 | |
| 	~IslePathActor() override { IslePathActor::Destroy(TRUE); }
 | |
| 
 | |
| 	MxLong Notify(MxParam& p_param) override; // vtable+0x04
 | |
| 
 | |
| 	// FUNCTION: LEGO1 0x10002ea0
 | |
| 	const char* ClassName() const override // vtable+0x0c
 | |
| 	{
 | |
| 		// STRING: LEGO1 0x100f0104
 | |
| 		return "IslePathActor";
 | |
| 	}
 | |
| 
 | |
| 	// FUNCTION: LEGO1 0x10002eb0
 | |
| 	MxBool IsA(const char* p_name) const override // vtable+0x10
 | |
| 	{
 | |
| 		return !strcmp(p_name, IslePathActor::ClassName()) || LegoPathActor::IsA(p_name);
 | |
| 	}
 | |
| 
 | |
| 	MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
 | |
| 	void Destroy(MxBool p_fromDestructor) override;   // vtable+0x1c
 | |
| 
 | |
| 	// FUNCTION: LEGO1 0x10002e70
 | |
| 	virtual MxLong HandleClick() { return 0; } // vtable+0xcc
 | |
| 
 | |
| 	// FUNCTION: LEGO1 0x10002df0
 | |
| 	virtual MxLong HandleNotification0() { return 0; } // vtable+0xd0
 | |
| 
 | |
| 	// FUNCTION: LEGO1 0x10002e80
 | |
| 	virtual MxLong HandleControl(LegoControlManagerNotificationParam&) { return 0; } // vtable+0xd4
 | |
| 
 | |
| 	// FUNCTION: LEGO1 0x10002e90
 | |
| 	virtual MxLong HandleEndAnim(LegoEndAnimNotificationParam&) { return 0; } // vtable+0xd8
 | |
| 
 | |
| 	// FUNCTION: LEGO1 0x10002e00
 | |
| 	virtual MxLong HandlePathStruct(LegoPathStructNotificationParam&) { return 0; } // vtable+0xdc
 | |
| 
 | |
| 	virtual void Enter();                                                                        // vtable+0xe0
 | |
| 	virtual void Exit();                                                                         // vtable+0xe4
 | |
| 	virtual void SpawnPlayer(LegoGameState::Area p_area, MxBool p_enter, MxU8 p_flags);          // vtable+0xe8
 | |
| 	virtual void VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundary, MxBool p_reset); // vtable+0xec
 | |
| 
 | |
| 	// SYNTHETIC: LEGO1 0x10002ff0
 | |
| 	// IslePathActor::`scalar deleting destructor'
 | |
| 
 | |
| 	void FUN_1001b660();
 | |
| 
 | |
| 	void Reset()
 | |
| 	{
 | |
| 		m_roi->SetVisibility(TRUE);
 | |
| 		SetState(0);
 | |
| 	}
 | |
| 
 | |
| 	void SetWorld(LegoWorld* p_world) { m_world = p_world; }
 | |
| 
 | |
| 	static void RegisterSpawnLocations();
 | |
| 
 | |
| protected:
 | |
| 	LegoWorld* m_world;             // 0x154
 | |
| 	LegoPathActor* m_previousActor; // 0x158
 | |
| 	MxFloat m_previousVel;          // 0x15c
 | |
| };
 | |
| 
 | |
| #endif // ISLEPATHACTOR_H
 | 
