summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2018-11-05 11:12:09 +0100
committerErich Eckner <git@eckner.net>2018-11-16 19:11:46 +0100
commita4701d576e54a47745a19d89e691c791a4f181ed (patch)
treef5ca7a7f7479bf169b9ae92cd2367317edf76f74
parent5430113f4a842e519d2661a490022dcdf86f5247 (diff)
downloadopenttd-a4701d576e54a47745a19d89e691c791a4f181ed.tar.xz
src/landscape.cpp, src/tile_map.h: fix bug which makes assert fail
-rw-r--r--src/landscape.cpp30
-rw-r--r--src/tile_map.h7
2 files changed, 21 insertions, 16 deletions
diff --git a/src/landscape.cpp b/src/landscape.cpp
index 18f27807d..152aceda7 100644
--- a/src/landscape.cpp
+++ b/src/landscape.cpp
@@ -35,6 +35,7 @@
#include "framerate_type.h"
#include <list>
#include <set>
+#include "layer_func.h"
#include "table/strings.h"
#include "table/sprites.h"
@@ -760,22 +761,25 @@ void RunTileLoop()
void InitializeLandscape()
{
- uint maxx = MapMaxX();
- uint maxy = MapMaxY();
+ uint maxx = LayerMaxX();
+ uint maxy = LayerMaxY();
uint sizex = MapSizeX();
-
- uint y;
- for (y = _settings_game.construction.freeform_edges ? 1 : 0; y < maxy; y++) {
- uint x;
- for (x = _settings_game.construction.freeform_edges ? 1 : 0; x < maxx; x++) {
- MakeClear(sizex * y + x, CLEAR_GRASS, 3);
- SetTileHeight(sizex * y + x, 0);
- SetTropicZone(sizex * y + x, TROPICZONE_NORMAL);
- ClearBridgeMiddle(sizex * y + x);
+ uint layersize = LayerSize();
+
+ FOR_ALL_LAYERS(layer) {
+ uint y;
+ for (y = _settings_game.construction.freeform_edges ? 1 : 0; y < maxy; y++) {
+ uint x;
+ for (x = _settings_game.construction.freeform_edges ? 1 : 0; x < maxx; x++) {
+ MakeClear(layer * layersize + sizex * y + x, CLEAR_GRASS, 3);
+ SetTileHeight(layer * layersize + sizex * y + x, 0);
+ SetTropicZone(layer * layersize + sizex * y + x, TROPICZONE_NORMAL);
+ ClearBridgeMiddle(layer * layersize + sizex * y + x);
+ }
+ MakeVoid(layer * layersize + sizex * y + x);
}
- MakeVoid(sizex * y + x);
+ for (uint x = 0; x < sizex; x++) MakeVoid(layer * layersize + sizex * y + x);
}
- for (uint x = 0; x < sizex; x++) MakeVoid(sizex * y + x);
}
static const byte _genterrain_tbl_1[5] = { 10, 22, 33, 37, 4 };
diff --git a/src/tile_map.h b/src/tile_map.h
index 58dff2cb0..0e2cc8ec2 100644
--- a/src/tile_map.h
+++ b/src/tile_map.h
@@ -16,6 +16,7 @@
#include "map_func.h"
#include "core/bitmath_func.hpp"
#include "settings_type.h"
+#include "layer_func.h"
/**
* Returns the height of a tile
@@ -103,10 +104,10 @@ static inline bool IsInnerTile(TileIndex tile)
{
assert(tile < MapSize());
- uint x = TileX(tile);
- uint y = TileY(tile);
+ uint x = LayerX(tile);
+ uint y = LayerY(tile);
- return x < MapMaxX() && y < MapMaxY() && ((x > 0 && y > 0) || !_settings_game.construction.freeform_edges);
+ return x < LayerMaxX() && y < LayerMaxY() && ((x > 0 && y > 0) || !_settings_game.construction.freeform_edges);
}
/**