summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-06-20 12:40:34 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-06-20 12:40:34 (GMT)
commite81e18238df47212d84fa00422a64983857e1ea1 (patch)
tree67c973f1f3666f9f4b230524575cda5dd6cc4cd6 /src/game
parent2be9c925088c16beb144dd9932202416d00ff581 (diff)
parentf6403958de1f67d3bce47f56b40de254c30f5ba4 (diff)
downloadpowder-e81e18238df47212d84fa00422a64983857e1ea1.zip
powder-e81e18238df47212d84fa00422a64983857e1ea1.tar.gz
Merge branch 'master' of github.com:FacialTurd/PowderToypp
Diffstat (limited to 'src/game')
-rw-r--r--src/game/Brush.h12
-rw-r--r--src/game/EllipseBrush.h4
-rw-r--r--src/game/GameController.cpp3
-rw-r--r--src/game/GameModel.cpp32
-rw-r--r--src/game/Menu.h9
5 files changed, 39 insertions, 21 deletions
diff --git a/src/game/Brush.h b/src/game/Brush.h
index 34354c0..0adcd95 100644
--- a/src/game/Brush.h
+++ b/src/game/Brush.h
@@ -25,8 +25,8 @@ protected:
if(!bitmap)
return;
if(outline)
- free(outline);
- outline = (unsigned char *)calloc(size.X*size.Y, sizeof(unsigned char));
+ delete[] outline;
+ outline = new unsigned char[size.X*size.Y];
for(int x = 0; x < size.X; x++)
{
for(int y = 0; y < size.Y; y++)
@@ -69,9 +69,9 @@ public:
}
virtual ~Brush() {
if(bitmap)
- delete bitmap;
+ delete[] bitmap;
if(outline)
- delete outline;
+ delete[] outline;
}
virtual void RenderRect(Graphics * g, ui::Point position1, ui::Point position2)
{
@@ -109,8 +109,8 @@ public:
virtual void GenerateBitmap()
{
if(bitmap)
- free(bitmap);
- bitmap = (unsigned char *)calloc((size.X*size.Y), sizeof(unsigned char));
+ delete[] bitmap;
+ bitmap = new unsigned char[size.X*size.Y];
for(int x = 0; x < size.X; x++)
{
for(int y = 0; y < size.Y; y++)
diff --git a/src/game/EllipseBrush.h b/src/game/EllipseBrush.h
index a02516e..9a75dfb 100644
--- a/src/game/EllipseBrush.h
+++ b/src/game/EllipseBrush.h
@@ -22,8 +22,8 @@ public:
virtual void GenerateBitmap()
{
if(bitmap)
- free(bitmap);
- bitmap = (unsigned char*)calloc((size.X*size.Y), sizeof(unsigned char));
+ delete[] bitmap;
+ bitmap = new unsigned char[size.X*size.Y];
int rx = radius.X;
int ry = radius.Y;
for(int x = 0; x <= radius.X*2; x++)
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp
index dfbd935..6ed6e0f 100644
--- a/src/game/GameController.cpp
+++ b/src/game/GameController.cpp
@@ -39,7 +39,7 @@ public:
{
try
{
- cc->gameModel->SetSave(new SaveInfo(*(cc->search->GetLoadedSave())));
+ cc->gameModel->SetSave(cc->search->GetLoadedSave());
}
catch(GameModelException & ex)
{
@@ -163,6 +163,7 @@ GameController::~GameController()
ui::Engine::Ref().CloseWindow();
}
delete gameModel;
+ delete gameView;
}
GameView * GameController::GetView()
diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp
index 054a415..7a1d231 100644
--- a/src/game/GameModel.cpp
+++ b/src/game/GameModel.cpp
@@ -170,10 +170,6 @@ GameModel::~GameModel()
for(int i = 0; i < menuList.size(); i++)
{
- for(int j = 0; i < menuList[i]->GetToolList().size(); i++)
- {
- delete menuList[i]->GetToolList()[j];
- }
delete menuList[i];
}
for(int i = 0; i < brushList.size(); i++)
@@ -186,6 +182,8 @@ GameModel::~GameModel()
delete clipboard;
if(stamp)
delete stamp;
+ if(currentSave)
+ delete currentSave;
//if(activeTools)
// delete[] activeTools;
}
@@ -282,8 +280,15 @@ SaveInfo * GameModel::GetSave()
void GameModel::SetSave(SaveInfo * newSave)
{
if(currentSave != newSave)
- delete currentSave;
- currentSave = newSave;
+ {
+ if(currentSave)
+ delete currentSave;
+ if(newSave == NULL)
+ currentSave = NULL;
+ else
+ currentSave = new SaveInfo(*newSave);
+ }
+
if(currentSave && currentSave->GetGameSave())
{
GameSave * saveData = currentSave->GetGameSave();
@@ -451,12 +456,15 @@ void GameModel::ClearSimulation()
void GameModel::SetStamp(GameSave * save)
{
- if(stamp)
- delete stamp;
- if(save)
- stamp = new GameSave(*save);
- else
- stamp = NULL;
+ if(stamp != save)
+ {
+ if(stamp)
+ delete stamp;
+ if(save)
+ stamp = new GameSave(*save);
+ else
+ stamp = NULL;
+ }
}
void GameModel::SetPlaceSave(GameSave * save)
diff --git a/src/game/Menu.h b/src/game/Menu.h
index 1824190..261193e 100644
--- a/src/game/Menu.h
+++ b/src/game/Menu.h
@@ -24,6 +24,15 @@ public:
}
+ virtual ~Menu()
+ {
+ for(int i = 0; i < tools.size(); i++)
+ {
+ delete tools[i];
+ }
+ tools.clear();
+ }
+
vector<Tool*> GetToolList()
{
return tools;