summaryrefslogtreecommitdiff
path: root/src/resources/map/tileanimation.h
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-05-11 14:22:50 +0300
committerAndrei Karas <akaras@inbox.ru>2014-05-11 14:22:50 +0300
commit47ac70cdddac59f6fcaf339295801191aef5b50b (patch)
tree7a89975482b2a83a518da1ffa6b4d71e7f3fa1cb /src/resources/map/tileanimation.h
parentdcac10d557a1e6e0b5854a1400d02fe106d5c027 (diff)
downloadmv-47ac70cdddac59f6fcaf339295801191aef5b50b.tar.gz
mv-47ac70cdddac59f6fcaf339295801191aef5b50b.tar.bz2
mv-47ac70cdddac59f6fcaf339295801191aef5b50b.tar.xz
mv-47ac70cdddac59f6fcaf339295801191aef5b50b.zip
Move tileanimation into separate file.
Diffstat (limited to 'src/resources/map/tileanimation.h')
-rw-r--r--src/resources/map/tileanimation.h65
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