mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-07-31 05:30:23 +02:00
GameSave.cpp 2D array cleanup
This commit is contained in:
@@ -36,11 +36,11 @@ originalData(save.originalData)
|
|||||||
setSize(save.blockWidth, save.blockHeight);
|
setSize(save.blockWidth, save.blockHeight);
|
||||||
|
|
||||||
std::copy(save.particles, save.particles+NPART, particles);
|
std::copy(save.particles, save.particles+NPART, particles);
|
||||||
std::copy(save.blockMapPtr, save.blockMapPtr+(blockHeight*blockWidth), blockMapPtr);
|
|
||||||
std::copy(save.fanVelXPtr, save.fanVelXPtr+(blockHeight*blockWidth), fanVelXPtr);
|
|
||||||
std::copy(save.fanVelYPtr, save.fanVelYPtr+(blockHeight*blockWidth), fanVelYPtr);
|
|
||||||
for (int j = 0; j < blockHeight; j++)
|
for (int j = 0; j < blockHeight; j++)
|
||||||
{
|
{
|
||||||
|
std::copy(save.blockMap[j], save.blockMap[j]+blockWidth, blockMap[j]);
|
||||||
|
std::copy(save.fanVelX[j], save.fanVelX[j]+blockWidth, fanVelX[j]);
|
||||||
|
std::copy(save.fanVelY[j], save.fanVelY[j]+blockWidth, fanVelY[j]);
|
||||||
std::copy(save.pressure[j], save.pressure[j]+blockWidth, pressure[j]);
|
std::copy(save.pressure[j], save.pressure[j]+blockWidth, pressure[j]);
|
||||||
std::copy(save.velocityX[j], save.velocityX[j]+blockWidth, velocityX[j]);
|
std::copy(save.velocityX[j], save.velocityX[j]+blockWidth, velocityX[j]);
|
||||||
std::copy(save.velocityY[j], save.velocityY[j]+blockWidth, velocityY[j]);
|
std::copy(save.velocityY[j], save.velocityY[j]+blockWidth, velocityY[j]);
|
||||||
@@ -144,11 +144,8 @@ GameSave::GameSave(char * data, int dataSize)
|
|||||||
void GameSave::InitData()
|
void GameSave::InitData()
|
||||||
{
|
{
|
||||||
blockMap = NULL;
|
blockMap = NULL;
|
||||||
blockMapPtr = NULL;
|
|
||||||
fanVelX = NULL;
|
fanVelX = NULL;
|
||||||
fanVelXPtr = NULL;
|
|
||||||
fanVelY = NULL;
|
fanVelY = NULL;
|
||||||
fanVelYPtr = NULL;
|
|
||||||
particles = NULL;
|
particles = NULL;
|
||||||
pressure = NULL;
|
pressure = NULL;
|
||||||
velocityX = NULL;
|
velocityX = NULL;
|
||||||
@@ -245,23 +242,9 @@ void GameSave::setSize(int newWidth, int newHeight)
|
|||||||
particlesCount = 0;
|
particlesCount = 0;
|
||||||
particles = new Particle[NPART];
|
particles = new Particle[NPART];
|
||||||
|
|
||||||
blockMapPtr = new unsigned char[blockHeight*blockWidth];
|
blockMap = Allocate2DArray<unsigned char>(blockWidth, blockHeight, 0);
|
||||||
std::fill(blockMapPtr, blockMapPtr+(blockHeight*blockWidth), 0);
|
fanVelX = Allocate2DArray<float>(blockWidth, blockHeight, 0.0f);
|
||||||
fanVelXPtr = new float[(blockHeight)*(blockWidth)];
|
fanVelY = Allocate2DArray<float>(blockWidth, blockHeight, 0.0f);
|
||||||
std::fill(fanVelXPtr, fanVelXPtr+((blockHeight)*(blockWidth)), 0.0f);
|
|
||||||
fanVelYPtr = new float[(blockHeight)*(blockWidth)];
|
|
||||||
std::fill(fanVelYPtr, fanVelYPtr+((blockHeight)*(blockWidth)), 0.0f);
|
|
||||||
|
|
||||||
blockMap = new unsigned char*[blockHeight];
|
|
||||||
for(int y = 0; y < blockHeight; y++)
|
|
||||||
blockMap[y] = &blockMapPtr[y*blockWidth];
|
|
||||||
fanVelX = new float*[blockHeight];
|
|
||||||
for(int y = 0; y < blockHeight; y++)
|
|
||||||
fanVelX[y] = &fanVelXPtr[y*(blockWidth)];
|
|
||||||
fanVelY = new float*[blockHeight];
|
|
||||||
for(int y = 0; y < blockHeight; y++)
|
|
||||||
fanVelY[y] = &fanVelYPtr[y*blockWidth];
|
|
||||||
|
|
||||||
pressure = Allocate2DArray<float>(blockWidth, blockHeight, 0.0f);
|
pressure = Allocate2DArray<float>(blockWidth, blockHeight, 0.0f);
|
||||||
velocityX = Allocate2DArray<float>(blockWidth, blockHeight, 0.0f);
|
velocityX = Allocate2DArray<float>(blockWidth, blockHeight, 0.0f);
|
||||||
velocityY = Allocate2DArray<float>(blockWidth, blockHeight, 0.0f);
|
velocityY = Allocate2DArray<float>(blockWidth, blockHeight, 0.0f);
|
||||||
@@ -319,26 +302,9 @@ void GameSave::Transform(matrix2d transform, vector2d translate)
|
|||||||
float ** velocityXNew;
|
float ** velocityXNew;
|
||||||
float ** velocityYNew;
|
float ** velocityYNew;
|
||||||
|
|
||||||
float * fanVelXPtrNew;
|
blockMapNew = Allocate2DArray<unsigned char>(newBlockWidth, newBlockHeight, 0);
|
||||||
float * fanVelYPtrNew;
|
fanVelXNew = Allocate2DArray<float>(newBlockWidth, newBlockHeight, 0.0f);
|
||||||
unsigned char * blockMapPtrNew;
|
fanVelYNew = Allocate2DArray<float>(newBlockWidth, newBlockHeight, 0.0f);
|
||||||
|
|
||||||
blockMapPtrNew = new unsigned char[newBlockHeight*newBlockWidth];
|
|
||||||
std::fill(blockMapPtrNew, blockMapPtrNew+(newBlockHeight*newBlockWidth), 0);
|
|
||||||
fanVelXPtrNew = new float[newBlockHeight*newBlockWidth];
|
|
||||||
std::fill(fanVelXPtrNew, fanVelXPtrNew+(newBlockHeight*newBlockWidth), 0.0f);
|
|
||||||
fanVelYPtrNew = new float[(newBlockHeight)*(newBlockWidth)];
|
|
||||||
std::fill(fanVelYPtrNew, fanVelYPtrNew+(newBlockHeight*newBlockWidth), 0.0f);
|
|
||||||
|
|
||||||
blockMapNew = new unsigned char*[newBlockHeight];
|
|
||||||
for(int y = 0; y < newBlockHeight; y++)
|
|
||||||
blockMapNew[y] = &blockMapPtrNew[y*newBlockWidth];
|
|
||||||
fanVelXNew = new float*[newBlockHeight];
|
|
||||||
for(int y = 0; y < newBlockHeight; y++)
|
|
||||||
fanVelXNew[y] = &fanVelXPtrNew[y*newBlockWidth];
|
|
||||||
fanVelYNew = new float*[newBlockHeight];
|
|
||||||
for(int y = 0; y < newBlockHeight; y++)
|
|
||||||
fanVelYNew[y] = &fanVelYPtrNew[y*newBlockWidth];
|
|
||||||
pressureNew = Allocate2DArray<float>(newBlockWidth, newBlockHeight, 0.0f);
|
pressureNew = Allocate2DArray<float>(newBlockWidth, newBlockHeight, 0.0f);
|
||||||
velocityXNew = Allocate2DArray<float>(newBlockWidth, newBlockHeight, 0.0f);
|
velocityXNew = Allocate2DArray<float>(newBlockWidth, newBlockHeight, 0.0f);
|
||||||
velocityYNew = Allocate2DArray<float>(newBlockWidth, newBlockHeight, 0.0f);
|
velocityYNew = Allocate2DArray<float>(newBlockWidth, newBlockHeight, 0.0f);
|
||||||
@@ -404,6 +370,9 @@ void GameSave::Transform(matrix2d transform, vector2d translate)
|
|||||||
|
|
||||||
for (int j = 0; j < blockHeight; j++)
|
for (int j = 0; j < blockHeight; j++)
|
||||||
{
|
{
|
||||||
|
delete[] blockMap[j];
|
||||||
|
delete[] fanVelX[j];
|
||||||
|
delete[] fanVelY[j];
|
||||||
delete[] pressure[j];
|
delete[] pressure[j];
|
||||||
delete[] velocityX[j];
|
delete[] velocityX[j];
|
||||||
delete[] velocityY[j];
|
delete[] velocityY[j];
|
||||||
@@ -419,20 +388,12 @@ void GameSave::Transform(matrix2d transform, vector2d translate)
|
|||||||
delete[] velocityX;
|
delete[] velocityX;
|
||||||
delete[] velocityY;
|
delete[] velocityY;
|
||||||
|
|
||||||
delete[] blockMapPtr;
|
|
||||||
delete[] fanVelXPtr;
|
|
||||||
delete[] fanVelYPtr;
|
|
||||||
|
|
||||||
blockMap = blockMapNew;
|
blockMap = blockMapNew;
|
||||||
fanVelX = fanVelXNew;
|
fanVelX = fanVelXNew;
|
||||||
fanVelY = fanVelYNew;
|
fanVelY = fanVelYNew;
|
||||||
pressure = pressureNew;
|
pressure = pressureNew;
|
||||||
velocityX = velocityXNew;
|
velocityX = velocityXNew;
|
||||||
velocityY = velocityYNew;
|
velocityY = velocityYNew;
|
||||||
|
|
||||||
blockMapPtr = (unsigned char*)blockMapPtrNew;
|
|
||||||
fanVelXPtr = (float*)fanVelXPtrNew;
|
|
||||||
fanVelYPtr = (float*)fanVelYPtrNew;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void bson_error_handler(const char *err)
|
void bson_error_handler(const char *err)
|
||||||
@@ -2464,41 +2425,14 @@ void GameSave::Deallocate2DArray(T ***array, int blockHeight)
|
|||||||
|
|
||||||
void GameSave::dealloc()
|
void GameSave::dealloc()
|
||||||
{
|
{
|
||||||
if(particles)
|
if (particles)
|
||||||
{
|
{
|
||||||
delete[] particles;
|
delete[] particles;
|
||||||
particles = NULL;
|
particles = NULL;
|
||||||
}
|
}
|
||||||
if(blockMap)
|
Deallocate2DArray<unsigned char>(&blockMap, blockHeight);
|
||||||
{
|
Deallocate2DArray<float>(&fanVelX, blockHeight);
|
||||||
delete[] blockMap;
|
Deallocate2DArray<float>(&fanVelY, blockHeight);
|
||||||
blockMap = NULL;
|
|
||||||
}
|
|
||||||
if(blockMapPtr)
|
|
||||||
{
|
|
||||||
delete[] blockMapPtr;
|
|
||||||
blockMapPtr = NULL;
|
|
||||||
}
|
|
||||||
if(fanVelX)
|
|
||||||
{
|
|
||||||
delete[] fanVelX;
|
|
||||||
fanVelX = NULL;
|
|
||||||
}
|
|
||||||
if(fanVelXPtr)
|
|
||||||
{
|
|
||||||
delete[] fanVelXPtr;
|
|
||||||
fanVelXPtr = NULL;
|
|
||||||
}
|
|
||||||
if(fanVelY)
|
|
||||||
{
|
|
||||||
delete[] fanVelY;
|
|
||||||
fanVelY = NULL;
|
|
||||||
}
|
|
||||||
if(fanVelYPtr)
|
|
||||||
{
|
|
||||||
delete[] fanVelYPtr;
|
|
||||||
fanVelYPtr = NULL;
|
|
||||||
}
|
|
||||||
Deallocate2DArray<float>(&pressure, blockHeight);
|
Deallocate2DArray<float>(&pressure, blockHeight);
|
||||||
Deallocate2DArray<float>(&velocityX, blockHeight);
|
Deallocate2DArray<float>(&velocityX, blockHeight);
|
||||||
Deallocate2DArray<float>(&velocityY, blockHeight);
|
Deallocate2DArray<float>(&velocityY, blockHeight);
|
||||||
|
@@ -94,9 +94,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
bool expanded;
|
bool expanded;
|
||||||
bool hasOriginalData;
|
bool hasOriginalData;
|
||||||
float * fanVelXPtr;
|
|
||||||
float * fanVelYPtr;
|
|
||||||
unsigned char * blockMapPtr;
|
|
||||||
|
|
||||||
std::vector<char> originalData;
|
std::vector<char> originalData;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user