diff options
author | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2005-03-02 00:15:20 +0000 |
---|---|---|
committer | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2005-03-02 00:15:20 +0000 |
commit | 8501e358510dac20b7aa457408e36c48fe387df0 (patch) | |
tree | 46d9baeae1ed466d79b1b0b33151dac8c9ba1157 /src/map.cpp | |
parent | b7cded07732a85204b7e251d51cf4538a58ce374 (diff) | |
download | mana-8501e358510dac20b7aa457408e36c48fe387df0.tar.gz mana-8501e358510dac20b7aa457408e36c48fe387df0.tar.bz2 mana-8501e358510dac20b7aa457408e36c48fe387df0.tar.xz mana-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.cpp | 24 |
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; |