summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authorBryan Hoyle <starfoxprime@gmail.com>2012-11-16 21:51:55 (GMT)
committer Bryan Hoyle <starfoxprime@gmail.com>2012-11-16 21:51:55 (GMT)
commit874cd400093c38e67fde4a1861603bce83135539 (patch)
treee9c8b31b7cc752133dd0e110c652ed9775e859d5 /src/game
parente0aa92b017a8d5602ce8b43f6e240ab42a25fac4 (diff)
parentd8be547c734cfaa3d121412b11381b4787380762 (diff)
downloadpowder-874cd400093c38e67fde4a1861603bce83135539.zip
powder-874cd400093c38e67fde4a1861603bce83135539.tar.gz
Merge branch 'master' of github.com:FacialTurd/PowderToypp
Diffstat (limited to 'src/game')
-rw-r--r--src/game/Brush.cpp11
-rw-r--r--src/game/GameController.cpp8
-rw-r--r--src/game/GameModel.cpp6
3 files changed, 17 insertions, 8 deletions
diff --git a/src/game/Brush.cpp b/src/game/Brush.cpp
index 5341f60..38dd809 100644
--- a/src/game/Brush.cpp
+++ b/src/game/Brush.cpp
@@ -18,9 +18,14 @@ void Brush::RenderRect(Renderer * ren, ui::Point position1, ui::Point position2)
}
ren->xor_line(position1.X, position1.Y, position1.X+width, position1.Y);
- ren->xor_line(position1.X, position1.Y+height, position1.X+width, position1.Y+height);
- ren->xor_line(position1.X+width, position1.Y+1, position1.X+width, position1.Y+height-1);
- ren->xor_line(position1.X, position1.Y+1, position1.X, position1.Y+height-1);
+ if(height>0){
+ ren->xor_line(position1.X, position1.Y+height, position1.X+width, position1.Y+height);
+ if(height>1){
+ ren->xor_line(position1.X+width, position1.Y+1, position1.X+width, position1.Y+height-1);
+ if(width>0)
+ ren->xor_line(position1.X, position1.Y+1, position1.X, position1.Y+height-1);
+ }
+ }
}
void Brush::RenderLine(Renderer * ren, ui::Point position1, ui::Point position2)
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp
index 0f3d92e..0cff7d2 100644
--- a/src/game/GameController.cpp
+++ b/src/game/GameController.cpp
@@ -240,7 +240,7 @@ void GameController::PlaceSave(ui::Point position)
if(gameModel->GetPlaceSave())
{
gameModel->GetSimulation()->Load(position.X, position.Y, gameModel->GetPlaceSave());
- gameModel->SetPaused(gameModel->GetPaused());
+ gameModel->SetPaused(gameModel->GetPlaceSave()->paused | gameModel->GetPaused());
}
}
@@ -489,7 +489,10 @@ void GameController::StampRegion(ui::Point point1, ui::Point point2)
GameSave * newSave;
newSave = gameModel->GetSimulation()->Save(point1.X, point1.Y, point2.X, point2.Y);
if(newSave)
+ {
+ newSave->paused = gameModel->GetPaused();
gameModel->AddStamp(newSave);
+ }
else
new ErrorMessage("Could not create stamp", "Error generating save file");
}
@@ -499,7 +502,10 @@ void GameController::CopyRegion(ui::Point point1, ui::Point point2)
GameSave * newSave;
newSave = gameModel->GetSimulation()->Save(point1.X, point1.Y, point2.X, point2.Y);
if(newSave)
+ {
+ newSave->paused = gameModel->GetPaused();
gameModel->SetClipboard(newSave);
+ }
}
void GameController::CutRegion(ui::Point point1, ui::Point point2)
diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp
index 4a11d55..5c4ee97 100644
--- a/src/game/GameModel.cpp
+++ b/src/game/GameModel.cpp
@@ -587,7 +587,7 @@ void GameModel::SetSaveFile(SaveFile * newSave)
if(newSave && newSave->GetGameSave())
{
GameSave * saveData = newSave->GetGameSave();
- SetPaused(saveData->paused & GetPaused());
+ SetPaused(saveData->paused | GetPaused());
sim->gravityMode = saveData->gravityMode;
sim->air->airMode = saveData->airMode;
sim->legacy_enable = saveData->legacyEnable;
@@ -823,17 +823,15 @@ void GameModel::FrameStep(int frames)
void GameModel::ClearSimulation()
{
- sim->clear_sim();
- ren->ClearAccumulation();
//Load defaults
- SetPaused(false);
sim->gravityMode = 0;
sim->air->airMode = 0;
sim->legacy_enable = false;
sim->water_equal_test = false;
sim->grav->stop_grav_async();
sim->SetEdgeMode(edgeMode);
+
sim->clear_sim();
ren->ClearAccumulation();