-/*
- * Area.h
- *
- * Created on: Sep 26, 2012
- * Author: holy
- */
-
#ifndef MAP_AREA_H_
#define MAP_AREA_H_
-#include "fwd.h"
-#include "../geometry/Vector.h"
-#include "../graphics/Sprite.h"
+namespace graphics {
+ class Sprite;
+}
+namespace map {
+ class Tile;
+}
+
+#include "../math/Vector.h"
#include <SDL.h>
namespace map {
+/// Defines a rectangular section of a map.
+/// Tiles are rendered ltr with a row break each width tiles.
+/// Missing tiles in the last row are possible but don't fool yourself.
class Area {
+public:
+ static const int TYPE_ID = 601;
+
public:
Area();
~Area() { }
public:
+ /// Get the width in tiles.
int Width() const { return width; }
+ /// Get the height in tiles.
int Height() const { return numTiles / width + (numTiles % width ? 1 : 0); }
- geometry::Vector<int> Size() const { return geometry::Vector<int>(Width(), Height()); }
- const Tile &TileAt(const geometry::Vector<int> &) const;
+ /// Get the size in tiles.
+ math::Vector<int> Size() const { return math::Vector<int>(Width(), Height()); }
+ /// Get a tile by tile coordinates (not pixel coordinates!).
+ Tile *TileAt(const math::Vector<int> &);
+ const Tile *TileAt(const math::Vector<int> &) const;
+
+ /// Get the default battle background for this area.
+ SDL_Surface *BattleBackground() { return battlebg; }
+
+ void Render(SDL_Surface *dest, const graphics::Sprite *tileset, const math::Vector<int> &offset) const;
+ void RenderDebug(SDL_Surface *dest, const graphics::Sprite *tileset, const math::Vector<int> &offset) const;
- void Render(SDL_Surface *dest, const graphics::Sprite *tileset, const geometry::Vector<int> &offset) const;
+ static void CreateTypeDescription();
+ static void Construct(void *);
// temporary setters
public:
- void SetTiles(const Tile *t, int num) { tiles = t; numTiles = num; }
+ void SetTiles(Tile *t, int num) { tiles = t; numTiles = num; }
void SetWidth(int w) { width = w; }
private:
- const Tile *tiles;
+ SDL_Surface *battlebg;
+ Tile *tiles;
int numTiles;
int width;
}
-#endif /* MAP_AREA_H_ */
+#endif