summaryrefslogtreecommitdiff
path: root/src/map.cpp
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2005-03-02 00:15:20 +0000
committerBjørn Lindeijer <bjorn@lindeijer.nl>2005-03-02 00:15:20 +0000
commit8501e358510dac20b7aa457408e36c48fe387df0 (patch)
tree46d9baeae1ed466d79b1b0b33151dac8c9ba1157 /src/map.cpp
parentb7cded07732a85204b7e251d51cf4538a58ce374 (diff)
downloadmana-client-8501e358510dac20b7aa457408e36c48fe387df0.tar.gz
mana-client-8501e358510dac20b7aa457408e36c48fe387df0.tar.bz2
mana-client-8501e358510dac20b7aa457408e36c48fe387df0.tar.xz
mana-client-8501e358510dac20b7aa457408e36c48fe387df0.zip
Moved map drawing loop into the Map class and made it safer (it doesn't try to
draw tiles outside of the map area). The tmw.ini file was removed, we're using config.xml now.
Diffstat (limited to 'src/map.cpp')
-rw-r--r--src/map.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/map.cpp b/src/map.cpp
index 8b90df06..ede85d00 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -182,6 +182,30 @@ void Map::setSize(int width, int height)
tiles = new Image*[width * height * 3];
}
+void Map::draw(Graphics *graphics, int scrollX, int scrollY, int layer)
+{
+ int startX = scrollX / 32;
+ int startY = scrollY / 32;
+ int endX = (graphics->getWidth() + scrollX + 31) / 32;
+ int endY = (graphics->getHeight() + scrollY + 31) / 32;
+
+ if (startX < 0) startX = 0;
+ if (startY < 0) startY = 0;
+ if (endX >= width) endX = width - 1;
+ if (endY >= height) endY = height - 1;
+
+ for (int y = startY; y < endY; y++)
+ {
+ for (int x = startX; x < endX; x++)
+ {
+ Image *img = getTile(x, y, layer);
+ if (img) {
+ img->draw(screen, x * 32 - scrollX, y * 32 - scrollY);
+ }
+ }
+ }
+}
+
void Map::setWalk(int x, int y, bool walkable)
{
metaTiles[x + y * width].walkable = walkable;