diff options
author | Philipp Sehmisch <tmw@crushnet.org> | 2007-12-12 15:45:25 +0000 |
---|---|---|
committer | Philipp Sehmisch <tmw@crushnet.org> | 2007-12-12 15:45:25 +0000 |
commit | 040380b706249fa55fca2778251382f0d4450125 (patch) | |
tree | 160bc37a69077501e01ea261ced18625bad3eed5 /tools/tmxcopy/map.hpp | |
parent | a98d02eaf287932e3e83a980bac41ecc01f254f6 (diff) | |
download | mana-040380b706249fa55fca2778251382f0d4450125.tar.gz mana-040380b706249fa55fca2778251382f0d4450125.tar.bz2 mana-040380b706249fa55fca2778251382f0d4450125.tar.xz mana-040380b706249fa55fca2778251382f0d4450125.zip |
Added my tmxcopy tool for copying parts of maps to other maps.
Diffstat (limited to 'tools/tmxcopy/map.hpp')
-rw-r--r-- | tools/tmxcopy/map.hpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/tools/tmxcopy/map.hpp b/tools/tmxcopy/map.hpp new file mode 100644 index 00000000..89ae1405 --- /dev/null +++ b/tools/tmxcopy/map.hpp @@ -0,0 +1,81 @@ +/* + * TMXCopy + * Copyright 2007 Philipp Sehmisch + * + * + * TMXCopy 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 + * any later version. + * + * TMXCopy 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 TMXCopy; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include <string> +#include <vector> +#include <set> +#include <libxml/parser.h> + +struct Tileset +{ + std::string imagefile; + int firstgid; + std::string name; + int tilewidth; + int tileheight; + + bool operator== (Tileset const& a) + { + return (imagefile == a.imagefile && + tilewidth == a.tilewidth && + tileheight == a.tileheight + ); + } +}; + +struct Tile +{ + int tileset; // number of tileset + size_t index; // index in said tileset +}; + +typedef std::vector<Tile> Layer; + +class Map +{ + public: + Map(std::string filename); + + bool overwrite( Map* srcMap, + int srcX, int srcY, int srcWidth, int srcHeight, + int destX, int destY); + + int save(std::string filename); + + int getNumberOfLayers() { return mLayers.size(); } + + Layer* getLayer(size_t num) { return mLayers.at(num); } + + std::vector<Tileset*>* getTilesets() { return &mTilesets; } + + int getWidth() { return mWidth; } + int getHeight() { return mHeight; } + + private: + std::vector<Layer*> mLayers; + + int mWidth; + int mHeight; + int mMaxGid; + + std::vector<Tileset*> mTilesets; + + xmlDocPtr mXmlDoc; +}; |