Cut region, fixes #105

This commit is contained in:
Simon Robertshaw 2012-08-14 16:28:44 +01:00
parent 70758cc70e
commit e13476a406
4 changed files with 19 additions and 1 deletions

View File

@ -432,6 +432,12 @@ void GameController::CopyRegion(ui::Point point1, ui::Point point2)
gameModel->SetClipboard(newSave); gameModel->SetClipboard(newSave);
} }
void GameController::CutRegion(ui::Point point1, ui::Point point2)
{
CopyRegion(point1, point2);
gameModel->GetSimulation()->clear_area(point1.X, point1.Y, point2.X-point1.X, point2.Y-point1.Y);
}
bool GameController::MouseMove(int x, int y, int dx, int dy) bool GameController::MouseMove(int x, int y, int dx, int dy)
{ {
return commandInterface->OnMouseMove(x, y, dx, dy); return commandInterface->OnMouseMove(x, y, dx, dy);

View File

@ -81,6 +81,7 @@ public:
void DrawFill(int toolSelection, ui::Point point); void DrawFill(int toolSelection, ui::Point point);
void StampRegion(ui::Point point1, ui::Point point2); void StampRegion(ui::Point point1, ui::Point point2);
void CopyRegion(ui::Point point1, ui::Point point2); void CopyRegion(ui::Point point1, ui::Point point2);
void CutRegion(ui::Point point1, ui::Point point2);
void Update(); void Update();
void SetPaused(bool pauseState); void SetPaused(bool pauseState);
void SetPaused(); void SetPaused();

View File

@ -1032,6 +1032,8 @@ void GameView::OnMouseUp(int x, int y, unsigned button)
{ {
if(selectMode==SelectCopy) if(selectMode==SelectCopy)
c->CopyRegion(ui::Point(x1, y1), ui::Point(x2, y2)); c->CopyRegion(ui::Point(x1, y1), ui::Point(x2, y2));
else if(selectMode==SelectCut)
c->CutRegion(ui::Point(x1, y1), ui::Point(x2, y2));
else if(selectMode==SelectStamp) else if(selectMode==SelectStamp)
c->StampRegion(ui::Point(x1, y1), ui::Point(x2, y2)); c->StampRegion(ui::Point(x1, y1), ui::Point(x2, y2));
} }
@ -1299,6 +1301,15 @@ void GameView::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool
infoTipPresence = 120; infoTipPresence = 120;
} }
break; break;
case 'x':
if(ctrl)
{
selectMode = SelectCut;
selectPoint1 = ui::Point(-1, -1);
infoTip = "\x0F\xEF\xEF\x10Select an area to cut";
infoTipPresence = 120;
}
break;
case 'v': case 'v':
if(ctrl) if(ctrl)
{ {

View File

@ -26,7 +26,7 @@ enum DrawMode
enum SelectMode enum SelectMode
{ {
SelectNone, SelectStamp, SelectCopy, PlaceSave SelectNone, SelectStamp, SelectCopy, SelectCut, PlaceSave
}; };
class GameController; class GameController;