fix ambient heat not loading in ctrl+c paste, fix pressure resetting to 0 when loading saves without pressure
This commit is contained in:
parent
78fb27b354
commit
3529f6f468
@ -32,6 +32,8 @@ hasOriginalData(save.hasOriginalData),
|
|||||||
originalData(save.originalData)
|
originalData(save.originalData)
|
||||||
{
|
{
|
||||||
InitData();
|
InitData();
|
||||||
|
hasPressure = save.hasPressure;
|
||||||
|
hasAmbientHeat = save.hasAmbientHeat;
|
||||||
if (save.expanded)
|
if (save.expanded)
|
||||||
{
|
{
|
||||||
setSize(save.blockWidth, save.blockHeight);
|
setSize(save.blockWidth, save.blockHeight);
|
||||||
@ -149,6 +151,7 @@ void GameSave::InitData()
|
|||||||
velocityY = NULL;
|
velocityY = NULL;
|
||||||
ambientHeat = NULL;
|
ambientHeat = NULL;
|
||||||
fromNewerVersion = false;
|
fromNewerVersion = false;
|
||||||
|
hasPressure = false;
|
||||||
hasAmbientHeat = false;
|
hasAmbientHeat = false;
|
||||||
authors.clear();
|
authors.clear();
|
||||||
}
|
}
|
||||||
@ -843,6 +846,7 @@ void GameSave::readOPS(char * data, int dataLength)
|
|||||||
pressure[blockY+y][blockX+x] = ((i+(i2<<8))/128.0f)-256;
|
pressure[blockY+y][blockX+x] = ((i+(i2<<8))/128.0f)-256;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
hasPressure = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Read vx data
|
//Read vx data
|
||||||
|
@ -32,6 +32,7 @@ public:
|
|||||||
|
|
||||||
int blockWidth, blockHeight;
|
int blockWidth, blockHeight;
|
||||||
bool fromNewerVersion;
|
bool fromNewerVersion;
|
||||||
|
bool hasPressure;
|
||||||
bool hasAmbientHeat;
|
bool hasAmbientHeat;
|
||||||
|
|
||||||
//Simulation data
|
//Simulation data
|
||||||
|
@ -244,10 +244,13 @@ int Simulation::Load(int fullX, int fullY, GameSave * save, bool includePressure
|
|||||||
fvy[saveBlockY+blockY][saveBlockX+blockX] = save->fanVelY[saveBlockY][saveBlockX];
|
fvy[saveBlockY+blockY][saveBlockX+blockX] = save->fanVelY[saveBlockY][saveBlockX];
|
||||||
}
|
}
|
||||||
if (includePressure)
|
if (includePressure)
|
||||||
|
{
|
||||||
|
if (save->hasPressure)
|
||||||
{
|
{
|
||||||
pv[saveBlockY+blockY][saveBlockX+blockX] = save->pressure[saveBlockY][saveBlockX];
|
pv[saveBlockY+blockY][saveBlockX+blockX] = save->pressure[saveBlockY][saveBlockX];
|
||||||
vx[saveBlockY+blockY][saveBlockX+blockX] = save->velocityX[saveBlockY][saveBlockX];
|
vx[saveBlockY+blockY][saveBlockX+blockX] = save->velocityX[saveBlockY][saveBlockX];
|
||||||
vy[saveBlockY+blockY][saveBlockX+blockX] = save->velocityY[saveBlockY][saveBlockX];
|
vy[saveBlockY+blockY][saveBlockX+blockX] = save->velocityY[saveBlockY][saveBlockX];
|
||||||
|
}
|
||||||
if (save->hasAmbientHeat)
|
if (save->hasAmbientHeat)
|
||||||
hv[saveBlockY+blockY][saveBlockX+blockX] = save->ambientHeat[saveBlockY][saveBlockX];
|
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->velocityX[saveBlockY][saveBlockX] = vx[saveBlockY+blockY][saveBlockX+blockX];
|
||||||
newSave->velocityY[saveBlockY][saveBlockX] = vy[saveBlockY+blockY][saveBlockX+blockX];
|
newSave->velocityY[saveBlockY][saveBlockX] = vy[saveBlockY+blockY][saveBlockX+blockX];
|
||||||
newSave->ambientHeat[saveBlockY][saveBlockX] = hv[saveBlockY+blockY][saveBlockX+blockX];
|
newSave->ambientHeat[saveBlockY][saveBlockX] = hv[saveBlockY+blockY][saveBlockX+blockX];
|
||||||
|
newSave->hasPressure = true;
|
||||||
newSave->hasAmbientHeat = true;
|
newSave->hasAmbientHeat = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user