mirror of
https://github.com/isledecomp/isle.git
synced 2024-11-26 17:46:38 -05:00
The IslePathActor's (#113)
* pizza: fix type m_unk90 * Initial implementation of a lot of IslePathActor's All IslePathActor's seem to have (for the most part), the same few variables in common, probably some ID. SkateBoard, Pizza and TowTrack seem to be a bit more complicated with additional fields surrounding it. * Add missing ClassName(s) and IsA(s) * Add decomp size asserts * Fix size assertions * Make legopathactor fields protected for now, fix a type in Pizza * Fix TowTrack structure --------- Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
parent
c4453fe49f
commit
1fa2fd9737
15 changed files with 159 additions and 22 deletions
|
@ -1,7 +1,21 @@
|
||||||
#include "ambulance.h"
|
#include "ambulance.h"
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x10035ee0 STUB
|
#include "decomp.h"
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(Ambulance, 0x184);
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x10035ee0
|
||||||
Ambulance::Ambulance()
|
Ambulance::Ambulance()
|
||||||
{
|
{
|
||||||
// TODO
|
this->m_unk168 = 0;
|
||||||
|
this->m_unk16a = -1;
|
||||||
|
this->m_unk164 = 0;
|
||||||
|
this->m_unk16c = 0;
|
||||||
|
this->m_unk174 = -1;
|
||||||
|
this->m_unk16e = 0;
|
||||||
|
this->m_unk178 = -1;
|
||||||
|
this->m_unk170 = 0;
|
||||||
|
this->m_unk172 = 0;
|
||||||
|
this->m_unk13c = 40.0;
|
||||||
|
this->m_unk17c = 1.0;
|
||||||
}
|
}
|
|
@ -22,7 +22,20 @@ class Ambulance : public IslePathActor
|
||||||
{
|
{
|
||||||
return !strcmp(name, Ambulance::ClassName()) || IslePathActor::IsA(name);
|
return !strcmp(name, Ambulance::ClassName()) || IslePathActor::IsA(name);
|
||||||
}
|
}
|
||||||
|
private:
|
||||||
|
// TODO: Ambulance fields
|
||||||
|
undefined m_unk160[4];
|
||||||
|
MxS32 m_unk164;
|
||||||
|
MxS16 m_unk168;
|
||||||
|
MxS16 m_unk16a;
|
||||||
|
MxS16 m_unk16c;
|
||||||
|
MxS16 m_unk16e;
|
||||||
|
MxS16 m_unk170;
|
||||||
|
MxS16 m_unk172;
|
||||||
|
MxS32 m_unk174;
|
||||||
|
MxS32 m_unk178;
|
||||||
|
MxFloat m_unk17c;
|
||||||
|
undefined m_unk180[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // AMBULANCE_H
|
#endif // AMBULANCE_H
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
#include "bike.h"
|
#include "bike.h"
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x10076670 STUB
|
DECOMP_SIZE_ASSERT(Bike, 0x164);
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x10076670
|
||||||
Bike::Bike()
|
Bike::Bike()
|
||||||
{
|
{
|
||||||
// TODO
|
this->m_unk13c = 20.0;
|
||||||
|
this->m_unk150 = 3.0;
|
||||||
|
this->m_unk148 = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef BIKE_H
|
#ifndef BIKE_H
|
||||||
#define BIKE_H
|
#define BIKE_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
#include "islepathactor.h"
|
#include "islepathactor.h"
|
||||||
|
|
||||||
// VTABLE 0x100d9808
|
// VTABLE 0x100d9808
|
||||||
|
@ -22,7 +23,9 @@ class Bike : public IslePathActor
|
||||||
{
|
{
|
||||||
return !strcmp(name, Bike::ClassName()) || IslePathActor::IsA(name);
|
return !strcmp(name, Bike::ClassName()) || IslePathActor::IsA(name);
|
||||||
}
|
}
|
||||||
|
private:
|
||||||
|
// TODO: Bike fields
|
||||||
|
undefined m_unk160[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
#include "dunebuggy.h"
|
#include "dunebuggy.h"
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x10067bb0 STUB
|
#include "decomp.h"
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(DuneBuggy, 0x16c);
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x10067bb0
|
||||||
DuneBuggy::DuneBuggy()
|
DuneBuggy::DuneBuggy()
|
||||||
{
|
{
|
||||||
// TODO
|
this->m_unk13c = 25.0;
|
||||||
|
this->m_unk164 = 1.0;
|
||||||
}
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef DUNEBUGGY_H
|
#ifndef DUNEBUGGY_H
|
||||||
#define DUNEBUGGY_H
|
#define DUNEBUGGY_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
#include "islepathactor.h"
|
#include "islepathactor.h"
|
||||||
|
|
||||||
// VTABLE 0x100d8f98
|
// VTABLE 0x100d8f98
|
||||||
|
@ -22,7 +23,11 @@ class DuneBuggy : public IslePathActor
|
||||||
{
|
{
|
||||||
return !strcmp(name, DuneBuggy::ClassName()) || IslePathActor::IsA(name);
|
return !strcmp(name, DuneBuggy::ClassName()) || IslePathActor::IsA(name);
|
||||||
}
|
}
|
||||||
|
private:
|
||||||
|
// TODO: Double check DuneBuggy field types
|
||||||
|
undefined4 m_unk160;
|
||||||
|
MxFloat m_unk164;
|
||||||
|
undefined4 m_unk168;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DUNEBUGGY_H
|
#endif // DUNEBUGGY_H
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
#include "jetski.h"
|
#include "jetski.h"
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x1007e3b0 STUB
|
DECOMP_SIZE_ASSERT(Jetski, 0x164);
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x1007e3b0
|
||||||
Jetski::Jetski()
|
Jetski::Jetski()
|
||||||
{
|
{
|
||||||
// TODO
|
this->m_unk13c = 25.0;
|
||||||
|
this->m_unk150 = 2.0;
|
||||||
|
this->m_unk148 = 1;
|
||||||
}
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef JETSKI_H
|
#ifndef JETSKI_H
|
||||||
#define JETSKI_H
|
#define JETSKI_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
#include "islepathactor.h"
|
#include "islepathactor.h"
|
||||||
|
|
||||||
// VTABLE 0x100d9ec8
|
// VTABLE 0x100d9ec8
|
||||||
|
@ -22,7 +23,9 @@ class Jetski : public IslePathActor
|
||||||
{
|
{
|
||||||
return !strcmp(name, Jetski::ClassName()) || IslePathActor::IsA(name);
|
return !strcmp(name, Jetski::ClassName()) || IslePathActor::IsA(name);
|
||||||
}
|
}
|
||||||
|
private:
|
||||||
|
// TODO: Jetski fields
|
||||||
|
undefined m_unk160[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -25,11 +25,15 @@ class LegoPathActor : public LegoActor
|
||||||
{
|
{
|
||||||
return !strcmp(name, LegoPathActor::ClassName()) || LegoActor::IsA(name);
|
return !strcmp(name, LegoPathActor::ClassName()) || LegoActor::IsA(name);
|
||||||
}
|
}
|
||||||
|
protected:
|
||||||
// TODO: the types. Pizza needs this as public:
|
// TODO: the types
|
||||||
undefined unk78[0xc4];
|
undefined unk78[0xc4];
|
||||||
MxS32 m_unk13c;
|
MxFloat m_unk13c;
|
||||||
undefined unk140[0x14];
|
MxS32 m_unk140;
|
||||||
|
MxS32 m_unk144;
|
||||||
|
undefined m_unk148;
|
||||||
|
MxS32 m_unk14c;
|
||||||
|
MxFloat m_unk150;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LEGOPATHACTOR_H
|
#endif // LEGOPATHACTOR_H
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
#include "racecar.h"
|
#include "racecar.h"
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x10028200 STUB
|
DECOMP_SIZE_ASSERT(RaceCar, 0x164);
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x10028200
|
||||||
RaceCar::RaceCar()
|
RaceCar::RaceCar()
|
||||||
{
|
{
|
||||||
// TODO
|
this->m_unk13c = 40.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x10028420 STUB
|
// OFFSET: LEGO1 0x10028420 STUB
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef RACECAR_H
|
#ifndef RACECAR_H
|
||||||
#define RACECAR_H
|
#define RACECAR_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
#include "islepathactor.h"
|
#include "islepathactor.h"
|
||||||
|
|
||||||
// VTABLE 0x100d6918
|
// VTABLE 0x100d6918
|
||||||
|
@ -10,6 +11,22 @@ class RaceCar : public IslePathActor
|
||||||
public:
|
public:
|
||||||
RaceCar();
|
RaceCar();
|
||||||
virtual ~RaceCar() override; // vtable+0x0
|
virtual ~RaceCar() override; // vtable+0x0
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x10028270
|
||||||
|
inline virtual const char *ClassName() const override // vtable+0x0c
|
||||||
|
{
|
||||||
|
// 0x100f03e0
|
||||||
|
return "RaceCar";
|
||||||
|
}
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x10028280
|
||||||
|
inline virtual MxBool IsA(const char *name) const override // vtable+0x10
|
||||||
|
{
|
||||||
|
return !strcmp(name, RaceCar::ClassName()) || IslePathActor::IsA(name);
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
// TODO: RaceCar fields
|
||||||
|
undefined m_unk160[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // RACECAR_H
|
#endif // RACECAR_H
|
||||||
|
|
|
@ -1,7 +1,17 @@
|
||||||
#include "skateboard.h"
|
#include "skateboard.h"
|
||||||
|
#include "mxomni.h"
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x1000fd40 STUB
|
#include "decomp.h"
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(SkateBoard, 0x168);
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x1000fd40
|
||||||
SkateBoard::SkateBoard()
|
SkateBoard::SkateBoard()
|
||||||
{
|
{
|
||||||
// TODO
|
this->m_unk160 = 0;
|
||||||
|
this->m_unk13c = 15.0;
|
||||||
|
this->m_unk150 = 3.5;
|
||||||
|
this->m_unk148 = 1;
|
||||||
|
|
||||||
|
NotificationManager()->Register(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef SKATEBOARD_H
|
#ifndef SKATEBOARD_H
|
||||||
#define SKATEBOARD_H
|
#define SKATEBOARD_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
#include "islepathactor.h"
|
#include "islepathactor.h"
|
||||||
|
|
||||||
// VTABLE 0x100d55f0
|
// VTABLE 0x100d55f0
|
||||||
|
@ -10,6 +11,22 @@ class SkateBoard : public IslePathActor
|
||||||
public:
|
public:
|
||||||
SkateBoard();
|
SkateBoard();
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x1000fdd0
|
||||||
|
inline virtual const char *ClassName() const override // vtable+0x0c
|
||||||
|
{
|
||||||
|
// 0x100f041c
|
||||||
|
return "SkateBoard";
|
||||||
|
}
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x1000fde0
|
||||||
|
inline virtual MxBool IsA(const char *name) const override // vtable+0x10
|
||||||
|
{
|
||||||
|
return !strcmp(name, SkateBoard::ClassName()) || IslePathActor::IsA(name);
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
// TODO: SkateBoard types
|
||||||
|
undefined m_unk160;
|
||||||
|
undefined m_unk161[0x7];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SKATEBOARD_H
|
#endif // SKATEBOARD_H
|
||||||
|
|
|
@ -1,7 +1,17 @@
|
||||||
#include "towtrack.h"
|
#include "towtrack.h"
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x1004c720 STUB
|
DECOMP_SIZE_ASSERT(TowTrack, 0x180);
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x1004c720
|
||||||
TowTrack::TowTrack()
|
TowTrack::TowTrack()
|
||||||
{
|
{
|
||||||
// TODO
|
this->m_unk168 = 0;
|
||||||
|
this->m_unk16a = -1;
|
||||||
|
this->m_unk164 = 0;
|
||||||
|
this->m_unk16c = 0;
|
||||||
|
this->m_unk170 = -1;
|
||||||
|
this->m_unk16e = 0;
|
||||||
|
this->m_unk174 = -1;
|
||||||
|
this->m_unk13c = 40.0;
|
||||||
|
this->m_unk178 = 1.0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef TOWTRACK_H
|
#ifndef TOWTRACK_H
|
||||||
#define TOWTRACK_H
|
#define TOWTRACK_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
#include "islepathactor.h"
|
#include "islepathactor.h"
|
||||||
|
|
||||||
// VTABLE 0x100d7ee0
|
// VTABLE 0x100d7ee0
|
||||||
|
@ -10,6 +11,31 @@ class TowTrack : public IslePathActor
|
||||||
public:
|
public:
|
||||||
TowTrack();
|
TowTrack();
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x1004c7c0
|
||||||
|
inline virtual const char *ClassName() const override // vtable+0x0c
|
||||||
|
{
|
||||||
|
// 0x100f03b8
|
||||||
|
return "TowTrack";
|
||||||
|
}
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x1004c7d0
|
||||||
|
inline virtual MxBool IsA(const char *name) const override // vtable+0x10
|
||||||
|
{
|
||||||
|
return !strcmp(name, TowTrack::ClassName()) || IslePathActor::IsA(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
// TODO: TowTrack field types
|
||||||
|
undefined m_unk154[4];
|
||||||
|
MxS32 m_unk164;
|
||||||
|
MxS16 m_unk168;
|
||||||
|
MxS16 m_unk16a;
|
||||||
|
MxS16 m_unk16c;
|
||||||
|
MxS16 m_unk16e;
|
||||||
|
MxS32 m_unk170;
|
||||||
|
MxS32 m_unk174;
|
||||||
|
MxFloat m_unk178;
|
||||||
|
undefined4 m_unk17c;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue