summaryrefslogtreecommitdiffstats
path: root/src/vehicles/Boat.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/vehicles/Boat.cpp41
1 files changed, 32 insertions, 9 deletions
diff --git a/src/vehicles/Boat.cpp b/src/vehicles/Boat.cpp
index 14eb2f05..348f2732 100644
--- a/src/vehicles/Boat.cpp
+++ b/src/vehicles/Boat.cpp
@@ -32,6 +32,13 @@ float WAKE_LIFETIME = 400.0f;
CBoat *CBoat::apFrameWakeGeneratingBoats[4];
+const uint32 CBoat::nSaveStructSize =
+#ifdef COMPATIBLE_SAVES
+ 1156;
+#else
+ sizeof(CBoat);
+#endif
+
CBoat::CBoat(int mi, uint8 owner) : CVehicle(owner)
{
CVehicleModelInfo *minfo = (CVehicleModelInfo*)CModelInfo::GetModelInfo(mi);
@@ -137,7 +144,7 @@ CBoat::ProcessControl(void)
ProcessCarAlarm();
- switch(m_status){
+ switch(GetStatus()){
case STATUS_PLAYER:
m_bIsAnchored = false;
m_fOrientation = INVALID_ORIENTATION;
@@ -176,7 +183,7 @@ CBoat::ProcessControl(void)
}
float collisionDamage = pHandling->fCollisionDamageMultiplier * m_fDamageImpulse;
- if(collisionDamage > 25.0f && m_status != STATUS_WRECKED && m_fHealth >= 150.0f){
+ if(collisionDamage > 25.0f && GetStatus() != STATUS_WRECKED && m_fHealth >= 150.0f){
float prevHealth = m_fHealth;
if(this == FindPlayerVehicle()){
if(bTakeLessDamage)
@@ -199,7 +206,7 @@ CBoat::ProcessControl(void)
}
// Damage particles
- if(m_fHealth <= 600.0f && m_status != STATUS_WRECKED &&
+ if(m_fHealth <= 600.0f && GetStatus() != STATUS_WRECKED &&
Abs(GetPosition().x - TheCamera.GetPosition().x) < 200.0f &&
Abs(GetPosition().y - TheCamera.GetPosition().y) < 200.0f){
float speedSq = m_vecMoveSpeed.MagnitudeSqr();
@@ -283,7 +290,7 @@ CBoat::ProcessControl(void)
AddWakePoint(GetPosition());
float steerFactor = 1.0f - DotProduct(m_vecMoveSpeed, GetForward());
- if(m_modelIndex == MI_GHOST)
+ if (GetModelIndex() == MI_GHOST)
steerFactor = 1.0f - DotProduct(m_vecMoveSpeed, GetForward())*0.3f;
if(steerFactor < 0.0f) steerFactor = 0.0f;
@@ -326,7 +333,7 @@ CBoat::ProcessControl(void)
// Spray some particles
CVector jetDir = -0.04f * force;
if(m_fGasPedal > 0.0f){
- if(m_status == STATUS_PLAYER){
+ if(GetStatus() == STATUS_PLAYER){
bool cameraHack = TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_TOPDOWN ||
TheCamera.WhoIsInControlOfTheCamera == CAMCONTROL_OBBE;
CVector sternPos = GetColModel()->boundingBox.min;
@@ -513,7 +520,7 @@ CBoat::ProcessControl(void)
// is this some inlined CPlaceable method?
CVector pos = GetPosition();
GetMatrix().RotateZ(m_fOrientation - GetForward().Heading());
- GetPosition() = pos;
+ GetMatrix().GetPosition() = pos;
}
}
@@ -597,7 +604,7 @@ CBoat::BlowUpCar(CEntity *culprit)
// explosion pushes vehicle up
m_vecMoveSpeed.z += 0.13f;
- m_status = STATUS_WRECKED;
+ SetStatus(STATUS_WRECKED);
bRenderScorched = true;
m_fHealth = 0.0;
@@ -673,7 +680,7 @@ CBoat::BlowUpCar(CEntity *culprit)
dist.Normalise();
if(GetUp().z > 0.0f)
dist += GetUp();
- obj->GetPosition() += GetUp();
+ obj->GetMatrix().GetPosition() += GetUp();
CWorld::Add(obj);
@@ -764,7 +771,7 @@ void
CBoat::Teleport(CVector v)
{
CWorld::Remove(this);
- GetPosition() = v;
+ SetPosition(v);
SetOrientation(0.0f, 0.0f, 0.0f);
SetMoveSpeed(0.0f, 0.0f, 0.0f);
SetTurnSpeed(0.0f, 0.0f, 0.0f);
@@ -899,3 +906,19 @@ CBoat::AddWakePoint(CVector point)
m_nNumWakePoints = 1;
}
}
+
+#ifdef COMPATIBLE_SAVES
+void
+CBoat::Save(uint8*& buf)
+{
+ CVehicle::Save(buf);
+ SkipSaveBuf(buf, 1156 - 648);
+}
+
+void
+CBoat::Load(uint8*& buf)
+{
+ CVehicle::Load(buf);
+ SkipSaveBuf(buf, 1156 - 648);
+}
+#endif