diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-05-11 14:22:50 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-05-11 14:22:50 +0300 |
commit | 47ac70cdddac59f6fcaf339295801191aef5b50b (patch) | |
tree | 7a89975482b2a83a518da1ffa6b4d71e7f3fa1cb /src/resources/map/tileanimation.h | |
parent | dcac10d557a1e6e0b5854a1400d02fe106d5c027 (diff) | |
download | manaplus-47ac70cdddac59f6fcaf339295801191aef5b50b.tar.gz manaplus-47ac70cdddac59f6fcaf339295801191aef5b50b.tar.bz2 manaplus-47ac70cdddac59f6fcaf339295801191aef5b50b.tar.xz manaplus-47ac70cdddac59f6fcaf339295801191aef5b50b.zip |
Move tileanimation into separate file.
Diffstat (limited to 'src/resources/map/tileanimation.h')
-rw-r--r-- | src/resources/map/tileanimation.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/resources/map/tileanimation.h b/src/resources/map/tileanimation.h new file mode 100644 index 000000000..9ada8b0bd --- /dev/null +++ b/src/resources/map/tileanimation.h @@ -0,0 +1,65 @@ +/* + * The ManaPlus Client + * Copyright (C) 2004-2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program 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. + * + * This program 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 this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef RESOURCES_MAP_TILEANIMATION_H +#define RESOURCES_MAP_TILEANIMATION_H + +#include <map> +#include <vector> + +#include "localconsts.h" + +class Animation; +class Image; +class MapLayer; +class SimpleAnimation; + +typedef std::vector<std::pair<MapLayer*, int> > TilePairVector; +typedef TilePairVector::const_iterator TilePairVectorCIter; + +/** + * Animation cycle of a tile image which changes the map accordingly. + */ +class TileAnimation final +{ + public: + explicit TileAnimation(Animation *const ani); + + ~TileAnimation(); + + A_DELETE_COPY(TileAnimation) + + bool update(const int ticks = 1); + + void addAffectedTile(MapLayer *const layer, const int index) + { mAffected.push_back(std::make_pair(layer, index)); } + + private: + TilePairVector mAffected; + SimpleAnimation *mAnimation; + Image *mLastImage; +}; + +typedef std::map<int, TileAnimation*> TileAnimationMap; +typedef TileAnimationMap::const_iterator TileAnimationMapCIter; + +#endif // RESOURCES_MAP_TILEANIMATION_H |