diff --git a/source/tools/atlas/AtlasUI/ScenarioEditor/Tools/FillTerrain.cpp b/source/tools/atlas/AtlasUI/ScenarioEditor/Tools/FillTerrain.cpp new file mode 100644 index 0000000000..005d025a63 --- /dev/null +++ b/source/tools/atlas/AtlasUI/ScenarioEditor/Tools/FillTerrain.cpp @@ -0,0 +1,77 @@ +/* Copyright (C) 2011 Wildfire Games. + * This file is part of 0 A.D. + * + * 0 A.D. is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * 0 A.D. is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with 0 A.D. If not, see . + */ + +#include "precompiled.h" + +#include "ScenarioEditor/ScenarioEditor.h" +#include "Common/Tools.h" +#include "Common/Brushes.h" +#include "Common/MiscState.h" +#include "GameInterface/Messages.h" + +using AtlasMessage::Position; + +class FillTerrain : public StateDrivenTool +{ + DECLARE_DYNAMIC_CLASS(FillTerrain); + + Position m_Pos; + Brush m_Brush; + +public: + FillTerrain() + { + m_Brush.SetSquare(2); + SetState(&Waiting); + } + + void OnEnable() + { + m_Brush.MakeActive(); + } + + void OnDisable() + { + POST_MESSAGE(BrushPreview, (false, Position())); + } + + struct sWaiting : public State + { + bool OnMouse(FillTerrain* WXUNUSED(obj), wxMouseEvent& evt) + { + if (evt.LeftDown()) + { + Position pos(evt.GetPosition()); + POST_MESSAGE(BrushPreview, (true, pos)); + POST_COMMAND(FillTerrain, (pos, g_SelectedTexture.c_str())); + return true; + } + else if (evt.Moving()) + { + POST_MESSAGE(BrushPreview, (true, Position(evt.GetPosition()))); + return true; + } + else + { + return false; + } + } + } + Waiting; +}; + +IMPLEMENT_DYNAMIC_CLASS(FillTerrain, StateDrivenTool);