mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
- savegames prior to r5471 (Sandro's new features) are now compatible with the current version
- fix: incorrect group deletion caused crash when switching from assignment to truck git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5474 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+29
-12
@@ -1740,24 +1740,41 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile)
|
||||
numBytesRead = ReadFieldByField(hFile, &this->bTargetCubeLevel, sizeof(bTargetCubeLevel), sizeof(INT8), numBytesRead);
|
||||
numBytesRead = ReadFieldByField(hFile, &this->sLastTarget, sizeof(sLastTarget), sizeof(INT32), numBytesRead);
|
||||
if(guiCurrentSaveGameVersion >= NCTH_DATATYPE_CHANGE){
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dPrevMuzzleOffsetX, sizeof(dPrevMuzzleOffsetX), sizeof(FLOAT), numBytesRead);
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dPrevMuzzleOffsetY, sizeof(dPrevMuzzleOffsetY), sizeof(FLOAT), numBytesRead);
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dPrevCounterForceX, sizeof(dPrevCounterForceX), sizeof(FLOAT), numBytesRead);
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dPrevCounterForceY, sizeof(dPrevCounterForceY), sizeof(FLOAT), numBytesRead);
|
||||
|
||||
// Flugente: Sandro increased the size of these 4 varisbles to 2 (was 1) when the version got to DUAL_BURST_ADDED.
|
||||
// So if we load an old game, we set the second value to 0.0f and pretend we read it. This way old savegames will be savegame compatible
|
||||
if(guiCurrentSaveGameVersion < DUAL_BURST_ADDED)
|
||||
{
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dPrevMuzzleOffsetX, sizeof(FLOAT), sizeof(FLOAT), numBytesRead);
|
||||
this->dPrevMuzzleOffsetX[1] = 0.0f;
|
||||
buffer += sizeof(FLOAT);
|
||||
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dPrevMuzzleOffsetY, sizeof(FLOAT), sizeof(FLOAT), numBytesRead);
|
||||
this->dPrevMuzzleOffsetY[1] = 0.0f;
|
||||
buffer += sizeof(FLOAT);
|
||||
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dPrevCounterForceX, sizeof(FLOAT), sizeof(FLOAT), numBytesRead);
|
||||
this->dPrevCounterForceX[1] = 0.0f;
|
||||
buffer += sizeof(FLOAT);
|
||||
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dPrevCounterForceY, sizeof(FLOAT), sizeof(FLOAT), numBytesRead);
|
||||
this->dPrevCounterForceY[1] = 0.0f;
|
||||
buffer += sizeof(FLOAT);
|
||||
}
|
||||
else
|
||||
{
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dPrevMuzzleOffsetX, sizeof(dPrevMuzzleOffsetX), sizeof(FLOAT), numBytesRead);
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dPrevMuzzleOffsetY, sizeof(dPrevMuzzleOffsetY), sizeof(FLOAT), numBytesRead);
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dPrevCounterForceX, sizeof(dPrevCounterForceX), sizeof(FLOAT), numBytesRead);
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dPrevCounterForceY, sizeof(dPrevCounterForceY), sizeof(FLOAT), numBytesRead);
|
||||
}
|
||||
} else {
|
||||
buffer += sizeof(FLOAT);
|
||||
buffer += sizeof(FLOAT);
|
||||
buffer += sizeof(FLOAT);
|
||||
buffer += sizeof(FLOAT);
|
||||
}
|
||||
// SANDRO: my attempt at making older save games compatible (usually fails, dunno why)
|
||||
// with dual bursts, dPrevMuzzleOffsetX,dPrevMuzzleOffsetY,dPrevCounterForceX,dPrevCounterForceY was made dPrevMuzzleOffsetX[2], etc.
|
||||
if(guiCurrentSaveGameVersion < DUAL_BURST_ADDED) {
|
||||
buffer += sizeof(FLOAT);
|
||||
buffer += sizeof(FLOAT);
|
||||
buffer += sizeof(FLOAT);
|
||||
buffer += sizeof(FLOAT);
|
||||
}
|
||||
|
||||
if(guiCurrentSaveGameVersion >= NCTH_AUTOFIRE_UPDATE){
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dInitialMuzzleOffsetX, sizeof(dInitialMuzzleOffsetX), sizeof(FLOAT), numBytesRead);
|
||||
numBytesRead = ReadFieldByField(hFile, &this->dInitialMuzzleOffsetY, sizeof(dInitialMuzzleOffsetY), sizeof(FLOAT), numBytesRead);
|
||||
|
||||
Reference in New Issue
Block a user