fix ambient heat not loading in ctrl+c paste, fix pressure resetting to 0 when loading saves without pressure

This commit is contained in:
jacob1 2017-11-23 22:09:33 -05:00
parent 78fb27b354
commit 3529f6f468
3 changed files with 26 additions and 17 deletions

View File

@ -32,6 +32,8 @@ hasOriginalData(save.hasOriginalData),
originalData(save.originalData)
{
InitData();
hasPressure = save.hasPressure;
hasAmbientHeat = save.hasAmbientHeat;
if (save.expanded)
{
setSize(save.blockWidth, save.blockHeight);
@ -149,6 +151,7 @@ void GameSave::InitData()
velocityY = NULL;
ambientHeat = NULL;
fromNewerVersion = false;
hasPressure = false;
hasAmbientHeat = false;
authors.clear();
}
@ -843,6 +846,7 @@ void GameSave::readOPS(char * data, int dataLength)
pressure[blockY+y][blockX+x] = ((i+(i2<<8))/128.0f)-256;
}
}
hasPressure = true;
}
//Read vx data

View File

@ -32,6 +32,7 @@ public:
int blockWidth, blockHeight;
bool fromNewerVersion;
bool hasPressure;
bool hasAmbientHeat;
//Simulation data

View File

@ -244,10 +244,13 @@ int Simulation::Load(int fullX, int fullY, GameSave * save, bool includePressure
fvy[saveBlockY+blockY][saveBlockX+blockX] = save->fanVelY[saveBlockY][saveBlockX];
}
if (includePressure)
{
if (save->hasPressure)
{
pv[saveBlockY+blockY][saveBlockX+blockX] = save->pressure[saveBlockY][saveBlockX];
vx[saveBlockY+blockY][saveBlockX+blockX] = save->velocityX[saveBlockY][saveBlockX];
vy[saveBlockY+blockY][saveBlockX+blockX] = save->velocityY[saveBlockY][saveBlockX];
}
if (save->hasAmbientHeat)
hv[saveBlockY+blockY][saveBlockX+blockX] = save->ambientHeat[saveBlockY][saveBlockX];
}
@ -387,6 +390,7 @@ GameSave * Simulation::Save(int fullX, int fullY, int fullX2, int fullY2, bool i
newSave->velocityX[saveBlockY][saveBlockX] = vx[saveBlockY+blockY][saveBlockX+blockX];
newSave->velocityY[saveBlockY][saveBlockX] = vy[saveBlockY+blockY][saveBlockX+blockX];
newSave->ambientHeat[saveBlockY][saveBlockX] = hv[saveBlockY+blockY][saveBlockX+blockX];
newSave->hasPressure = true;
newSave->hasAmbientHeat = true;
}
}