diff options
Diffstat (limited to 'src/map.h')
-rw-r--r-- | src/map.h | 60 |
1 files changed, 47 insertions, 13 deletions
@@ -25,8 +25,11 @@ #include <list> #include <vector> +#include "position.h" #include "properties.h" +#include "simpleanimation.h" + class AmbientOverlay; class Graphics; class Image; @@ -35,8 +38,6 @@ class Particle; class Sprite; class Tileset; -struct PATH_NODE; - typedef std::vector<Tileset*> Tilesets; typedef std::list<Sprite*> Sprites; typedef Sprites::iterator SpriteIterator; @@ -55,13 +56,30 @@ struct MetaTile MetaTile():whichList(0) {}; // Pathfinding members - int Fcost; /**< Estimation of total path cost */ - int Gcost; /**< Cost from start to this location */ - int Hcost; /**< Estimated cost to goal */ - int whichList; /**< No list, open list or closed list */ - int parentX; /**< X coordinate of parent tile */ - int parentY; /**< Y coordinate of parent tile */ - bool walkable; /**< Can beings walk on this tile */ + int Fcost; /**< Estimation of total path cost */ + int Gcost; /**< Cost from start to this location */ + int Hcost; /**< Estimated cost to goal */ + int whichList; /**< No list, open list or closed list */ + int parentX; /**< X coordinate of parent tile */ + int parentY; /**< Y coordinate of parent tile */ + bool walkable; /**< Can beings walk on this tile */ +}; + +/** + * Animation cycle of a tile image which changes the map accordingly. + */ +class TileAnimation +{ + public: + TileAnimation(Animation *ani); + void update(); + void addAffectedTile(MapLayer *layer, int index) + { mAffected.push_back(std::make_pair(layer, index)); } + private: + std::list<std::pair<MapLayer*, int> > mAffected; + SimpleAnimation mAnimation; + int mLastUpdate; + Image* mLastImage; }; /** @@ -89,6 +107,11 @@ class MapLayer void setTile(int x, int y, Image *img); /** + * Set tile image with x + y * width already known. + */ + void setTile(int index, Image *img) { mTiles[index] = img; } + + /** * Get tile image, with x and y in layer coordinates. */ Image *getTile(int x, int y) const; @@ -204,8 +227,7 @@ class Map : public Properties /** * Find a path from one location to the next. */ - std::list<PATH_NODE> - findPath(int startX, int startY, int destX, int destY); + Path findPath(int startX, int startY, int destX, int destY); /** * Adds a sprite to the map. @@ -227,8 +249,18 @@ class Map : public Properties /** * Initializes all added particle effects */ - void - initializeParticleEffects(Particle* particleEngine); + void initializeParticleEffects(Particle* particleEngine); + + /** + * Adds a tile animation to the map + */ + void addAnimation(int gid, TileAnimation *animation) + { mTileAnimations[gid] = animation; } + + /** + * Gets the tile animation for a specific gid + */ + TileAnimation *getAnimationForGid(int gid); private: /** @@ -272,6 +304,8 @@ class Map : public Properties int y; }; std::list<ParticleEffectData> particleEffects; + + std::map<int, TileAnimation*> mTileAnimations; }; #endif |