diff options
Diffstat (limited to 'src/vehicles/Cranes.cpp')
-rw-r--r-- | src/vehicles/Cranes.cpp | 95 |
1 files changed, 38 insertions, 57 deletions
diff --git a/src/vehicles/Cranes.cpp b/src/vehicles/Cranes.cpp index db9d2e00..934ccb08 100644 --- a/src/vehicles/Cranes.cpp +++ b/src/vehicles/Cranes.cpp @@ -38,7 +38,7 @@ #define DEFAULT_OFFSET (20.0f) #ifdef COMPATIBLE_SAVES -#define CRANES_SAVE_SIZE 0x400 +#define CRANES_SAVE_SIZE 0x3E0 #else #define CRANES_SAVE_SIZE sizeof(aCranes) #endif @@ -59,16 +59,22 @@ void CCranes::InitCranes(void) CEntity* pEntity = (CEntity*)pNode->item; if (MODELID_CRANE_1 == pEntity->GetModelIndex() || MODELID_CRANE_2 == pEntity->GetModelIndex() || - MODELID_CRANE_3 == pEntity->GetModelIndex()) + MODELID_CRANE_3 == pEntity->GetModelIndex() || + MODELID_CRANE_4 == pEntity->GetModelIndex() || + MODELID_CRANE_5 == pEntity->GetModelIndex() || + MODELID_CRANE_6 == pEntity->GetModelIndex()) AddThisOneCrane(pEntity); } } } - for (CPtrNode* pNode = CWorld::GetBigBuildingList(LEVEL_INDUSTRIAL).first; pNode; pNode = pNode->next) { + for (CPtrNode* pNode = CWorld::GetBigBuildingList(LEVEL_MAINLAND).first; pNode; pNode = pNode->next) { CEntity* pEntity = (CEntity*)pNode->item; if (MODELID_CRANE_1 == pEntity->GetModelIndex() || MODELID_CRANE_2 == pEntity->GetModelIndex() || - MODELID_CRANE_3 == pEntity->GetModelIndex()) + MODELID_CRANE_3 == pEntity->GetModelIndex() || + MODELID_CRANE_4 == pEntity->GetModelIndex() || + MODELID_CRANE_5 == pEntity->GetModelIndex() || + MODELID_CRANE_6 == pEntity->GetModelIndex()) AddThisOneCrane(pEntity); } } @@ -90,23 +96,8 @@ void CCranes::AddThisOneCrane(CEntity* pEntity) pCrane->m_nTimeForNextCheck = 0; pCrane->m_nCraneState = CCrane::IDLE; pCrane->m_bWasMilitaryCrane = false; - pCrane->m_nAudioEntity = DMAudio.CreateEntity(AUDIOTYPE_CRANE, &aCranes[NumCranes]); - if (pCrane->m_nAudioEntity >= 0) - DMAudio.SetEntityStatus(pCrane->m_nAudioEntity, TRUE); pCrane->m_bIsTop = (MODELID_CRANE_1 != pEntity->GetModelIndex()); - // Is this used to avoid military crane? - if (pCrane->m_bIsTop || pEntity->GetPosition().y > 0.0f) { - CObject* pHook = new CObject(MI_MAGNET, false); - pHook->ObjectCreatedBy = MISSION_OBJECT; - pHook->bUsesCollision = false; - pHook->bExplosionProof = true; - pHook->bAffectedByGravity = false; - pCrane->m_pHook = pHook; - pCrane->CalcHookCoordinates(&pCrane->m_vecHookCurPos.x, &pCrane->m_vecHookCurPos.y, &pCrane->m_vecHookCurPos.z); - pCrane->SetHookMatrix(); - } - else - pCrane->m_pHook = nil; + pCrane->m_pHook = nil; NumCranes++; } @@ -275,7 +266,6 @@ void CCrane::Update(void) m_pVehiclePickedUp->bUsesCollision = false; if (m_bIsCrusher) m_pVehiclePickedUp->bCollisionProof = true; - DMAudio.PlayOneShot(m_nAudioEntity, SOUND_CRANE_PICKUP, 0.0f); } } } @@ -455,8 +445,6 @@ bool CCrane::DoesCranePickUpThisCarType(uint32 mi) mi != MI_TRASH && #ifdef FIX_BUGS mi != MI_COACH && -#else - mi != MI_BLISTA && #endif mi != MI_SECURICA && mi != MI_BUS && @@ -467,7 +455,7 @@ bool CCrane::DoesCranePickUpThisCarType(uint32 mi) return mi == MI_FIRETRUCK || mi == MI_AMBULAN || mi == MI_ENFORCER || - mi == MI_FBICAR || + mi == MI_FBIRANCH || mi == MI_RHINO || mi == MI_BARRACKS || mi == MI_POLICE; @@ -481,7 +469,7 @@ bool CCranes::DoesMilitaryCraneHaveThisOneAlready(uint32 mi) case MI_FIRETRUCK: return (CarsCollectedMilitaryCrane & 1); case MI_AMBULAN: return (CarsCollectedMilitaryCrane & 2); case MI_ENFORCER: return (CarsCollectedMilitaryCrane & 4); - case MI_FBICAR: return (CarsCollectedMilitaryCrane & 8); + case MI_FBIRANCH: return (CarsCollectedMilitaryCrane & 8); case MI_RHINO: return (CarsCollectedMilitaryCrane & 0x10); case MI_BARRACKS: return (CarsCollectedMilitaryCrane & 0x20); case MI_POLICE: return (CarsCollectedMilitaryCrane & 0x40); @@ -496,7 +484,7 @@ void CCranes::RegisterCarForMilitaryCrane(uint32 mi) case MI_FIRETRUCK: CarsCollectedMilitaryCrane |= 1; break; case MI_AMBULAN: CarsCollectedMilitaryCrane |= 2; break; case MI_ENFORCER: CarsCollectedMilitaryCrane |= 4; break; - case MI_FBICAR: CarsCollectedMilitaryCrane |= 8; break; + case MI_FBIRANCH: CarsCollectedMilitaryCrane |= 8; break; case MI_RHINO: CarsCollectedMilitaryCrane |= 0x10; break; case MI_BARRACKS: CarsCollectedMilitaryCrane |= 0x20; break; case MI_POLICE: CarsCollectedMilitaryCrane |= 0x40; break; @@ -649,7 +637,6 @@ void CCranes::Save(uint8* buf, uint32* size) WriteSaveBuf(buf, tmp); tmp = aCranes[i].m_pHook != nil ? CPools::GetObjectPool()->GetJustIndex_NoFreeAssert(aCranes[i].m_pHook) + 1 : 0; WriteSaveBuf(buf, tmp); - WriteSaveBuf(buf, aCranes[i].m_nAudioEntity); WriteSaveBuf(buf, aCranes[i].m_fPickupX1); WriteSaveBuf(buf, aCranes[i].m_fPickupX2); WriteSaveBuf(buf, aCranes[i].m_fPickupY1); @@ -706,34 +693,33 @@ void CCranes::Load(uint8* buf, uint32 size) aCranes[i].m_pCraneEntity = tmp != 0 ? CPools::GetBuildingPool()->GetSlot(tmp - 1) : nil; ReadSaveBuf(&tmp, buf); aCranes[i].m_pHook = tmp != 0 ? CPools::GetObjectPool()->GetSlot(tmp - 1) : nil; - ReadSaveBuf(&aCranes[i].m_nAudioEntity, buf);
- ReadSaveBuf(&aCranes[i].m_fPickupX1, buf);
- ReadSaveBuf(&aCranes[i].m_fPickupX2, buf);
- ReadSaveBuf(&aCranes[i].m_fPickupY1, buf);
- ReadSaveBuf(&aCranes[i].m_fPickupY2, buf);
- ReadSaveBuf(&aCranes[i].m_vecDropoffTarget, buf);
- ReadSaveBuf(&aCranes[i].m_fDropoffHeading, buf);
- ReadSaveBuf(&aCranes[i].m_fPickupAngle, buf);
- ReadSaveBuf(&aCranes[i].m_fDropoffAngle, buf);
- ReadSaveBuf(&aCranes[i].m_fPickupDistance, buf);
- ReadSaveBuf(&aCranes[i].m_fDropoffDistance, buf);
- ReadSaveBuf(&aCranes[i].m_fPickupHeight, buf);
- ReadSaveBuf(&aCranes[i].m_fDropoffHeight, buf);
- ReadSaveBuf(&aCranes[i].m_fHookAngle, buf);
- ReadSaveBuf(&aCranes[i].m_fHookOffset, buf);
- ReadSaveBuf(&aCranes[i].m_fHookHeight, buf);
- ReadSaveBuf(&aCranes[i].m_vecHookInitPos, buf);
- ReadSaveBuf(&aCranes[i].m_vecHookCurPos, buf);
+ ReadSaveBuf(&aCranes[i].m_fPickupX1, buf); + ReadSaveBuf(&aCranes[i].m_fPickupX2, buf); + ReadSaveBuf(&aCranes[i].m_fPickupY1, buf); + ReadSaveBuf(&aCranes[i].m_fPickupY2, buf); + ReadSaveBuf(&aCranes[i].m_vecDropoffTarget, buf); + ReadSaveBuf(&aCranes[i].m_fDropoffHeading, buf); + ReadSaveBuf(&aCranes[i].m_fPickupAngle, buf); + ReadSaveBuf(&aCranes[i].m_fDropoffAngle, buf); + ReadSaveBuf(&aCranes[i].m_fPickupDistance, buf); + ReadSaveBuf(&aCranes[i].m_fDropoffDistance, buf); + ReadSaveBuf(&aCranes[i].m_fPickupHeight, buf); + ReadSaveBuf(&aCranes[i].m_fDropoffHeight, buf); + ReadSaveBuf(&aCranes[i].m_fHookAngle, buf); + ReadSaveBuf(&aCranes[i].m_fHookOffset, buf); + ReadSaveBuf(&aCranes[i].m_fHookHeight, buf); + ReadSaveBuf(&aCranes[i].m_vecHookInitPos, buf); + ReadSaveBuf(&aCranes[i].m_vecHookCurPos, buf); ReadSaveBuf(&aCranes[i].m_vecHookVelocity, buf); ReadSaveBuf(&tmp, buf); aCranes[i].m_pVehiclePickedUp = tmp != 0 ? CPools::GetVehiclePool()->GetSlot(tmp - 1) : nil; - ReadSaveBuf(&aCranes[i].m_nTimeForNextCheck, buf);
- ReadSaveBuf(&aCranes[i].m_nCraneStatus, buf);
- ReadSaveBuf(&aCranes[i].m_nCraneState, buf);
- ReadSaveBuf(&aCranes[i].m_nVehiclesCollected, buf);
- ReadSaveBuf(&aCranes[i].m_bIsCrusher, buf);
- ReadSaveBuf(&aCranes[i].m_bIsMilitaryCrane, buf);
- ReadSaveBuf(&aCranes[i].m_bWasMilitaryCrane, buf);
+ ReadSaveBuf(&aCranes[i].m_nTimeForNextCheck, buf); + ReadSaveBuf(&aCranes[i].m_nCraneStatus, buf); + ReadSaveBuf(&aCranes[i].m_nCraneState, buf); + ReadSaveBuf(&aCranes[i].m_nVehiclesCollected, buf); + ReadSaveBuf(&aCranes[i].m_bIsCrusher, buf); + ReadSaveBuf(&aCranes[i].m_bIsMilitaryCrane, buf); + ReadSaveBuf(&aCranes[i].m_bWasMilitaryCrane, buf); ReadSaveBuf(&aCranes[i].m_bIsTop, buf); SkipSaveBuf(buf, 1); #else @@ -749,11 +735,6 @@ void CCranes::Load(uint8* buf, uint32 size) pCrane->m_pVehiclePickedUp = CPools::GetVehiclePool()->GetSlot((uintptr)pCrane->m_pVehiclePickedUp - 1); #endif } - for (int i = 0; i < NUM_CRANES; i++) { - aCranes[i].m_nAudioEntity = DMAudio.CreateEntity(AUDIOTYPE_CRANE, &aCranes[i]); - if (aCranes[i].m_nAudioEntity != 0) - DMAudio.SetEntityStatus(aCranes[i].m_nAudioEntity, TRUE); - } VALIDATESAVEBUF(size); } |