From 39d39a5c612a3315a4255b6a008edb2291316043 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sun, 6 Mar 2022 02:05:12 +0000 Subject: [PATCH] Reduce duplication in desert or rainforeset data search arrays --- src/landscape.cpp | 34 +- src/table/genland.h | 3058 +------------------------------------------ 2 files changed, 90 insertions(+), 3002 deletions(-) diff --git a/src/landscape.cpp b/src/landscape.cpp index f0cff8cbd4..a9c985b592 100644 --- a/src/landscape.cpp +++ b/src/landscape.cpp @@ -1001,7 +1001,7 @@ static void GenerateTerrain(int type, uint flag) #include "table/genland.h" -static std::pair GetDesertOrRainforestData() +static std::pair GetDesertOrRainforestData() { switch (_settings_game.game_creation.coast_tropics_width) { case 0: @@ -1017,22 +1017,35 @@ static std::pair GetDesertOrRain } } +template +void DesertOrRainforestProcessTiles(const std::pair desert_rainforest_data, const Rect16 *&data, TileIndex tile, F handle_tile) +{ + for (data = desert_rainforest_data.first; data != desert_rainforest_data.second; ++data) { + const Rect16 r = *data; + for (int16 x = r.left; x <= r.right; x++) { + for (int16 y = r.top; y <= r.bottom; y++) { + TileIndex t = AddTileIndexDiffCWrap(tile, { x, y }); + if (handle_tile(t)) return; + } + } + } +} + static void CreateDesertOrRainForest(uint desert_tropic_line) { TileIndex update_freq = MapSize() / 4; - const TileIndexDiffC *data; + const Rect16 *data; - const std::pair desert_rainforest_data = GetDesertOrRainforestData(); + const std::pair desert_rainforest_data = GetDesertOrRainforestData(); for (TileIndex tile = 0; tile != MapSize(); ++tile) { if ((tile % update_freq) == 0) IncreaseGeneratingWorldProgress(GWP_LANDSCAPE); if (!IsValidTile(tile)) continue; - for (data = desert_rainforest_data.first; data != desert_rainforest_data.second; ++data) { - TileIndex t = AddTileIndexDiffCWrap(tile, *data); - if (t != INVALID_TILE && (TileHeight(t) >= desert_tropic_line || IsTileType(t, MP_WATER))) break; - } + DesertOrRainforestProcessTiles(desert_rainforest_data, data, tile, [&](TileIndex t) -> bool { + return (t != INVALID_TILE && (TileHeight(t) >= desert_tropic_line || IsTileType(t, MP_WATER))); + }); if (data == desert_rainforest_data.second) { SetTropicZone(tile, TROPICZONE_DESERT); } @@ -1049,10 +1062,9 @@ static void CreateDesertOrRainForest(uint desert_tropic_line) if (!IsValidTile(tile)) continue; - for (data = desert_rainforest_data.first; data != desert_rainforest_data.second; ++data) { - TileIndex t = AddTileIndexDiffCWrap(tile, *data); - if (t != INVALID_TILE && IsTileType(t, MP_CLEAR) && IsClearGround(t, CLEAR_DESERT)) break; - } + DesertOrRainforestProcessTiles(desert_rainforest_data, data, tile, [&](TileIndex t) -> bool { + return (t != INVALID_TILE && IsTileType(t, MP_CLEAR) && IsClearGround(t, CLEAR_DESERT)); + }); if (data == desert_rainforest_data.second) { SetTropicZone(tile, TROPICZONE_RAINFOREST); } diff --git a/src/table/genland.h b/src/table/genland.h index 9e448df04c..3ddc0e05f3 100644 --- a/src/table/genland.h +++ b/src/table/genland.h @@ -7,3006 +7,82 @@ /** @file genland.h Table used to generate deserts and/or rain forests. */ -#define M(x, y) {x, y} +#define R(x1, x2, y1, y2) {x1, y1, x2, y2} // This default array draws a filled circle 13 tiles in diameter -static const TileIndexDiffC _make_desert_or_rainforest_data[] = { - M(-5, -5), - M(-4, -5), - M(-3, -5), - M(-2, -5), - M(-1, -5), - M( 0, -5), - M( 1, -5), - M( 2, -5), - M( 3, -5), - M( 4, -5), - M( 5, -5), - M(-5, -4), - M(-4, -4), - M(-3, -4), - M(-2, -4), - M(-1, -4), - M( 0, -4), - M( 1, -4), - M( 2, -4), - M( 3, -4), - M( 4, -4), - M( 5, -4), - M(-5, -3), - M(-4, -3), - M(-3, -3), - M(-2, -3), - M(-1, -3), - M( 0, -3), - M( 1, -3), - M( 2, -3), - M( 3, -3), - M( 4, -3), - M( 5, -3), - M(-5, -2), - M(-4, -2), - M(-3, -2), - M(-2, -2), - M(-1, -2), - M( 0, -2), - M( 1, -2), - M( 2, -2), - M( 3, -2), - M( 4, -2), - M( 5, -2), - M(-5, -1), - M(-4, -1), - M(-3, -1), - M(-2, -1), - M(-1, -1), - M( 0, -1), - M( 1, -1), - M( 2, -1), - M( 3, -1), - M( 4, -1), - M( 5, -1), - M(-5, 0), - M(-4, 0), - M(-3, 0), - M(-2, 0), - M(-1, 0), - M( 0, 0), - M( 1, 0), - M( 2, 0), - M( 3, 0), - M( 4, 0), - M( 5, 0), - M(-5, 1), - M(-4, 1), - M(-3, 1), - M(-2, 1), - M(-1, 1), - M( 0, 1), - M( 1, 1), - M( 2, 1), - M( 3, 1), - M( 4, 1), - M( 5, 1), - M(-5, 2), - M(-4, 2), - M(-3, 2), - M(-2, 2), - M(-1, 2), - M( 0, 2), - M( 1, 2), - M( 2, 2), - M( 3, 2), - M( 4, 2), - M( 5, 2), - M(-5, 3), - M(-4, 3), - M(-3, 3), - M(-2, 3), - M(-1, 3), - M( 0, 3), - M( 1, 3), - M( 2, 3), - M( 3, 3), - M( 4, 3), - M( 5, 3), - M(-5, 4), - M(-4, 4), - M(-3, 4), - M(-2, 4), - M(-1, 4), - M( 0, 4), - M( 1, 4), - M( 2, 4), - M( 3, 4), - M( 4, 4), - M( 5, 4), - M(-5, 5), - M(-4, 5), - M(-3, 5), - M(-2, 5), - M(-1, 5), - M( 0, 5), - M( 1, 5), - M( 2, 5), - M( 3, 5), - M( 4, 5), - M( 5, 5), - M( 6, -3), - M(-6, -3), - M(-3, 6), - M(-3, -6), - M( 6, -2), - M(-6, -2), - M(-2, 6), - M(-2, -6), - M( 6, -1), - M(-6, -1), - M(-1, 6), - M(-1, -6), - M( 6, 0), - M(-6, 0), - M( 0, 6), - M( 0, -6), - M( 6, 1), - M(-6, 1), - M( 1, 6), - M( 1, -6), - M( 6, 2), - M(-6, 2), - M( 2, 6), - M( 2, -6), - M( 6, 3), - M(-6, 3), - M( 3, 6), - M( 3, -6) +static const Rect16 _make_desert_or_rainforest_data[] = { + R(-5, 5, -5, 5), + R( 6, 6, -3, 3), + R(-6, -6, -3, 3), + R(-3, 3, 6, 6), + R(-3, 3, -6, -6) }; // This array draws a filled circle 19 tiles in diameter -static const TileIndexDiffC _make_desert_or_rainforest_data_medium[] = { - M(-3, -9), - M(-2, -9), - M(-1, -9), - M(0, -9), - M(1, -9), - M(2, -9), - M(3, -9), - M(-5, -8), - M(-4, -8), - M(-3, -8), - M(-2, -8), - M(-1, -8), - M(0, -8), - M(1, -8), - M(2, -8), - M(3, -8), - M(4, -8), - M(5, -8), - M(-6, -7), - M(-5, -7), - M(-4, -7), - M(-3, -7), - M(-2, -7), - M(-1, -7), - M(0, -7), - M(1, -7), - M(2, -7), - M(3, -7), - M(4, -7), - M(5, -7), - M(6, -7), - M(-7, -6), - M(-6, -6), - M(-5, -6), - M(-4, -6), - M(-3, -6), - M(-2, -6), - M(-1, -6), - M(0, -6), - M(1, -6), - M(2, -6), - M(3, -6), - M(4, -6), - M(5, -6), - M(6, -6), - M(7, -6), - M(-8, -5), - M(-7, -5), - M(-6, -5), - M(-5, -5), - M(-4, -5), - M(-3, -5), - M(-2, -5), - M(-1, -5), - M(0, -5), - M(1, -5), - M(2, -5), - M(3, -5), - M(4, -5), - M(5, -5), - M(6, -5), - M(7, -5), - M(8, -5), - M(-8, -4), - M(-7, -4), - M(-6, -4), - M(-5, -4), - M(-4, -4), - M(-3, -4), - M(-2, -4), - M(-1, -4), - M(0, -4), - M(1, -4), - M(2, -4), - M(3, -4), - M(4, -4), - M(5, -4), - M(6, -4), - M(7, -4), - M(8, -4), - M(-9, -3), - M(-8, -3), - M(-7, -3), - M(-6, -3), - M(-5, -3), - M(-4, -3), - M(-3, -3), - M(-2, -3), - M(-1, -3), - M(0, -3), - M(1, -3), - M(2, -3), - M(3, -3), - M(4, -3), - M(5, -3), - M(6, -3), - M(7, -3), - M(8, -3), - M(9, -3), - M(-9, -2), - M(-8, -2), - M(-7, -2), - M(-6, -2), - M(-5, -2), - M(-4, -2), - M(-3, -2), - M(-2, -2), - M(-1, -2), - M(0, -2), - M(1, -2), - M(2, -2), - M(3, -2), - M(4, -2), - M(5, -2), - M(6, -2), - M(7, -2), - M(8, -2), - M(9, -2), - M(-9, -1), - M(-8, -1), - M(-7, -1), - M(-6, -1), - M(-5, -1), - M(-4, -1), - M(-3, -1), - M(-2, -1), - M(-1, -1), - M(0, -1), - M(1, -1), - M(2, -1), - M(3, -1), - M(4, -1), - M(5, -1), - M(6, -1), - M(7, -1), - M(8, -1), - M(9, -1), - M(-9, 0), - M(-8, 0), - M(-7, 0), - M(-6, 0), - M(-5, 0), - M(-4, 0), - M(-3, 0), - M(-2, 0), - M(-1, 0), - M(0, 0), - M(1, 0), - M(2, 0), - M(3, 0), - M(4, 0), - M(5, 0), - M(6, 0), - M(7, 0), - M(8, 0), - M(9, 0), - M(-9, 1), - M(-8, 1), - M(-7, 1), - M(-6, 1), - M(-5, 1), - M(-4, 1), - M(-3, 1), - M(-2, 1), - M(-1, 1), - M(0, 1), - M(1, 1), - M(2, 1), - M(3, 1), - M(4, 1), - M(5, 1), - M(6, 1), - M(7, 1), - M(8, 1), - M(9, 1), - M(-9, 2), - M(-8, 2), - M(-7, 2), - M(-6, 2), - M(-5, 2), - M(-4, 2), - M(-3, 2), - M(-2, 2), - M(-1, 2), - M(0, 2), - M(1, 2), - M(2, 2), - M(3, 2), - M(4, 2), - M(5, 2), - M(6, 2), - M(7, 2), - M(8, 2), - M(9, 2), - M(-9, 3), - M(-8, 3), - M(-7, 3), - M(-6, 3), - M(-5, 3), - M(-4, 3), - M(-3, 3), - M(-2, 3), - M(-1, 3), - M(0, 3), - M(1, 3), - M(2, 3), - M(3, 3), - M(4, 3), - M(5, 3), - M(6, 3), - M(7, 3), - M(8, 3), - M(9, 3), - M(-8, 4), - M(-7, 4), - M(-6, 4), - M(-5, 4), - M(-4, 4), - M(-3, 4), - M(-2, 4), - M(-1, 4), - M(0, 4), - M(1, 4), - M(2, 4), - M(3, 4), - M(4, 4), - M(5, 4), - M(6, 4), - M(7, 4), - M(8, 4), - M(-8, 5), - M(-7, 5), - M(-6, 5), - M(-5, 5), - M(-4, 5), - M(-3, 5), - M(-2, 5), - M(-1, 5), - M(0, 5), - M(1, 5), - M(2, 5), - M(3, 5), - M(4, 5), - M(5, 5), - M(6, 5), - M(7, 5), - M(8, 5), - M(-7, 6), - M(-6, 6), - M(-5, 6), - M(-4, 6), - M(-3, 6), - M(-2, 6), - M(-1, 6), - M(0, 6), - M(1, 6), - M(2, 6), - M(3, 6), - M(4, 6), - M(5, 6), - M(6, 6), - M(7, 6), - M(-6, 7), - M(-5, 7), - M(-4, 7), - M(-3, 7), - M(-2, 7), - M(-1, 7), - M(0, 7), - M(1, 7), - M(2, 7), - M(3, 7), - M(4, 7), - M(5, 7), - M(6, 7), - M(-5, 8), - M(-4, 8), - M(-3, 8), - M(-2, 8), - M(-1, 8), - M(0, 8), - M(1, 8), - M(2, 8), - M(3, 8), - M(4, 8), - M(5, 8), - M(-3, 9), - M(-2, 9), - M(-1, 9), - M(0, 9), - M(1, 9), - M(2, 9), - M(3, 9) +static const Rect16 _make_desert_or_rainforest_data_medium[] = { + R(-3, 3, -9, -9), + R(-5, 5, -8, -8), + R(-6, 6, -7, -7), + R(-7, 7, -6, -6), + R(-8, 8, -5, -4), + R(-9, 9, -3, 3), + R(-8, 8, 4, 5), + R(-7, 7, 6, 6), + R(-6, 6, 7, 7), + R(-5, 5, 8, 8), + R(-3, 3, 9, 9) }; // This array draws a filled circle 25 tiles in diameter -static const TileIndexDiffC _make_desert_or_rainforest_data_large[] = { - M(-3, -12), - M(-2, -12), - M(-1, -12), - M(0, -12), - M(1, -12), - M(2, -12), - M(3, -12), - M(-5, -11), - M(-4, -11), - M(-3, -11), - M(-2, -11), - M(-1, -11), - M(0, -11), - M(1, -11), - M(2, -11), - M(3, -11), - M(4, -11), - M(5, -11), - M(-7, -10), - M(-6, -10), - M(-5, -10), - M(-4, -10), - M(-3, -10), - M(-2, -10), - M(-1, -10), - M(0, -10), - M(1, -10), - M(2, -10), - M(3, -10), - M(4, -10), - M(5, -10), - M(6, -10), - M(7, -10), - M(-8, -9), - M(-7, -9), - M(-6, -9), - M(-5, -9), - M(-4, -9), - M(-3, -9), - M(-2, -9), - M(-1, -9), - M(0, -9), - M(1, -9), - M(2, -9), - M(3, -9), - M(4, -9), - M(5, -9), - M(6, -9), - M(7, -9), - M(8, -9), - M(-9, -8), - M(-8, -8), - M(-7, -8), - M(-6, -8), - M(-5, -8), - M(-4, -8), - M(-3, -8), - M(-2, -8), - M(-1, -8), - M(0, -8), - M(1, -8), - M(2, -8), - M(3, -8), - M(4, -8), - M(5, -8), - M(6, -8), - M(7, -8), - M(8, -8), - M(9, -8), - M(-10, -7), - M(-9, -7), - M(-8, -7), - M(-7, -7), - M(-6, -7), - M(-5, -7), - M(-4, -7), - M(-3, -7), - M(-2, -7), - M(-1, -7), - M(0, -7), - M(1, -7), - M(2, -7), - M(3, -7), - M(4, -7), - M(5, -7), - M(6, -7), - M(7, -7), - M(8, -7), - M(9, -7), - M(10, -7), - M(-10, -6), - M(-9, -6), - M(-8, -6), - M(-7, -6), - M(-6, -6), - M(-5, -6), - M(-4, -6), - M(-3, -6), - M(-2, -6), - M(-1, -6), - M(0, -6), - M(1, -6), - M(2, -6), - M(3, -6), - M(4, -6), - M(5, -6), - M(6, -6), - M(7, -6), - M(8, -6), - M(9, -6), - M(10, -6), - M(-11, -5), - M(-10, -5), - M(-9, -5), - M(-8, -5), - M(-7, -5), - M(-6, -5), - M(-5, -5), - M(-4, -5), - M(-3, -5), - M(-2, -5), - M(-1, -5), - M(0, -5), - M(1, -5), - M(2, -5), - M(3, -5), - M(4, -5), - M(5, -5), - M(6, -5), - M(7, -5), - M(8, -5), - M(9, -5), - M(10, -5), - M(11, -5), - M(-11, -4), - M(-10, -4), - M(-9, -4), - M(-8, -4), - M(-7, -4), - M(-6, -4), - M(-5, -4), - M(-4, -4), - M(-3, -4), - M(-2, -4), - M(-1, -4), - M(0, -4), - M(1, -4), - M(2, -4), - M(3, -4), - M(4, -4), - M(5, -4), - M(6, -4), - M(7, -4), - M(8, -4), - M(9, -4), - M(10, -4), - M(11, -4), - M(-12, -3), - M(-11, -3), - M(-10, -3), - M(-9, -3), - M(-8, -3), - M(-7, -3), - M(-6, -3), - M(-5, -3), - M(-4, -3), - M(-3, -3), - M(-2, -3), - M(-1, -3), - M(0, -3), - M(1, -3), - M(2, -3), - M(3, -3), - M(4, -3), - M(5, -3), - M(6, -3), - M(7, -3), - M(8, -3), - M(9, -3), - M(10, -3), - M(11, -3), - M(12, -3), - M(-12, -2), - M(-11, -2), - M(-10, -2), - M(-9, -2), - M(-8, -2), - M(-7, -2), - M(-6, -2), - M(-5, -2), - M(-4, -2), - M(-3, -2), - M(-2, -2), - M(-1, -2), - M(0, -2), - M(1, -2), - M(2, -2), - M(3, -2), - M(4, -2), - M(5, -2), - M(6, -2), - M(7, -2), - M(8, -2), - M(9, -2), - M(10, -2), - M(11, -2), - M(12, -2), - M(-12, -1), - M(-11, -1), - M(-10, -1), - M(-9, -1), - M(-8, -1), - M(-7, -1), - M(-6, -1), - M(-5, -1), - M(-4, -1), - M(-3, -1), - M(-2, -1), - M(-1, -1), - M(0, -1), - M(1, -1), - M(2, -1), - M(3, -1), - M(4, -1), - M(5, -1), - M(6, -1), - M(7, -1), - M(8, -1), - M(9, -1), - M(10, -1), - M(11, -1), - M(12, -1), - M(-12, 0), - M(-11, 0), - M(-10, 0), - M(-9, 0), - M(-8, 0), - M(-7, 0), - M(-6, 0), - M(-5, 0), - M(-4, 0), - M(-3, 0), - M(-2, 0), - M(-1, 0), - M(0, 0), - M(1, 0), - M(2, 0), - M(3, 0), - M(4, 0), - M(5, 0), - M(6, 0), - M(7, 0), - M(8, 0), - M(9, 0), - M(10, 0), - M(11, 0), - M(12, 0), - M(-12, 1), - M(-11, 1), - M(-10, 1), - M(-9, 1), - M(-8, 1), - M(-7, 1), - M(-6, 1), - M(-5, 1), - M(-4, 1), - M(-3, 1), - M(-2, 1), - M(-1, 1), - M(0, 1), - M(1, 1), - M(2, 1), - M(3, 1), - M(4, 1), - M(5, 1), - M(6, 1), - M(7, 1), - M(8, 1), - M(9, 1), - M(10, 1), - M(11, 1), - M(12, 1), - M(-12, 2), - M(-11, 2), - M(-10, 2), - M(-9, 2), - M(-8, 2), - M(-7, 2), - M(-6, 2), - M(-5, 2), - M(-4, 2), - M(-3, 2), - M(-2, 2), - M(-1, 2), - M(0, 2), - M(1, 2), - M(2, 2), - M(3, 2), - M(4, 2), - M(5, 2), - M(6, 2), - M(7, 2), - M(8, 2), - M(9, 2), - M(10, 2), - M(11, 2), - M(12, 2), - M(-12, 3), - M(-11, 3), - M(-10, 3), - M(-9, 3), - M(-8, 3), - M(-7, 3), - M(-6, 3), - M(-5, 3), - M(-4, 3), - M(-3, 3), - M(-2, 3), - M(-1, 3), - M(0, 3), - M(1, 3), - M(2, 3), - M(3, 3), - M(4, 3), - M(5, 3), - M(6, 3), - M(7, 3), - M(8, 3), - M(9, 3), - M(10, 3), - M(11, 3), - M(12, 3), - M(-11, 4), - M(-10, 4), - M(-9, 4), - M(-8, 4), - M(-7, 4), - M(-6, 4), - M(-5, 4), - M(-4, 4), - M(-3, 4), - M(-2, 4), - M(-1, 4), - M(0, 4), - M(1, 4), - M(2, 4), - M(3, 4), - M(4, 4), - M(5, 4), - M(6, 4), - M(7, 4), - M(8, 4), - M(9, 4), - M(10, 4), - M(11, 4), - M(-11, 5), - M(-10, 5), - M(-9, 5), - M(-8, 5), - M(-7, 5), - M(-6, 5), - M(-5, 5), - M(-4, 5), - M(-3, 5), - M(-2, 5), - M(-1, 5), - M(0, 5), - M(1, 5), - M(2, 5), - M(3, 5), - M(4, 5), - M(5, 5), - M(6, 5), - M(7, 5), - M(8, 5), - M(9, 5), - M(10, 5), - M(11, 5), - M(-10, 6), - M(-9, 6), - M(-8, 6), - M(-7, 6), - M(-6, 6), - M(-5, 6), - M(-4, 6), - M(-3, 6), - M(-2, 6), - M(-1, 6), - M(0, 6), - M(1, 6), - M(2, 6), - M(3, 6), - M(4, 6), - M(5, 6), - M(6, 6), - M(7, 6), - M(8, 6), - M(9, 6), - M(10, 6), - M(-10, 7), - M(-9, 7), - M(-8, 7), - M(-7, 7), - M(-6, 7), - M(-5, 7), - M(-4, 7), - M(-3, 7), - M(-2, 7), - M(-1, 7), - M(0, 7), - M(1, 7), - M(2, 7), - M(3, 7), - M(4, 7), - M(5, 7), - M(6, 7), - M(7, 7), - M(8, 7), - M(9, 7), - M(10, 7), - M(-9, 8), - M(-8, 8), - M(-7, 8), - M(-6, 8), - M(-5, 8), - M(-4, 8), - M(-3, 8), - M(-2, 8), - M(-1, 8), - M(0, 8), - M(1, 8), - M(2, 8), - M(3, 8), - M(4, 8), - M(5, 8), - M(6, 8), - M(7, 8), - M(8, 8), - M(9, 8), - M(-8, 9), - M(-7, 9), - M(-6, 9), - M(-5, 9), - M(-4, 9), - M(-3, 9), - M(-2, 9), - M(-1, 9), - M(0, 9), - M(1, 9), - M(2, 9), - M(3, 9), - M(4, 9), - M(5, 9), - M(6, 9), - M(7, 9), - M(8, 9), - M(-7, 10), - M(-6, 10), - M(-5, 10), - M(-4, 10), - M(-3, 10), - M(-2, 10), - M(-1, 10), - M(0, 10), - M(1, 10), - M(2, 10), - M(3, 10), - M(4, 10), - M(5, 10), - M(6, 10), - M(7, 10), - M(-5, 11), - M(-4, 11), - M(-3, 11), - M(-2, 11), - M(-1, 11), - M(0, 11), - M(1, 11), - M(2, 11), - M(3, 11), - M(4, 11), - M(5, 11), - M(-3, 12), - M(-2, 12), - M(-1, 12), - M(0, 12), - M(1, 12), - M(2, 12), - M(3, 12), +static const Rect16 _make_desert_or_rainforest_data_large[] = { + R( -3, 3, -12, -12), + R( -5, 5, -11, -11), + R( -7, 7, -10, -10), + R( -8, 8, -9, -9), + R( -9, 9, -8, -8), + R(-10, 10, -7, -6), + R(-11, 11, -5, -4), + R(-12, 12, -3, 3), + R(-11, 11, 4, 5), + R(-10, 10, 6, 7), + R( -9, 9, 8, 8), + R( -8, 8, 9, 9), + R( -7, 7, 10, 10), + R( -5, 5, 11, 11), + R( -3, 3, 12, 12) }; -// This array draws a filled circle 51 tiles in diameter. This is stupid. -static const TileIndexDiffC _make_desert_or_rainforest_data_extralarge[] = { - M(-5, -25), - M(-4, -25), - M(-3, -25), - M(-2, -25), - M(-1, -25), - M(0, -25), - M(1, -25), - M(2, -25), - M(3, -25), - M(4, -25), - M(5, -25), - M(-8, -24), - M(-7, -24), - M(-6, -24), - M(-5, -24), - M(-4, -24), - M(-3, -24), - M(-2, -24), - M(-1, -24), - M(0, -24), - M(1, -24), - M(2, -24), - M(3, -24), - M(4, -24), - M(5, -24), - M(6, -24), - M(7, -24), - M(8, -24), - M(-11, -23), - M(-10, -23), - M(-9, -23), - M(-8, -23), - M(-7, -23), - M(-6, -23), - M(-5, -23), - M(-4, -23), - M(-3, -23), - M(-2, -23), - M(-1, -23), - M(0, -23), - M(1, -23), - M(2, -23), - M(3, -23), - M(4, -23), - M(5, -23), - M(6, -23), - M(7, -23), - M(8, -23), - M(9, -23), - M(10, -23), - M(11, -23), - M(-12, -22), - M(-11, -22), - M(-10, -22), - M(-9, -22), - M(-8, -22), - M(-7, -22), - M(-6, -22), - M(-5, -22), - M(-4, -22), - M(-3, -22), - M(-2, -22), - M(-1, -22), - M(0, -22), - M(1, -22), - M(2, -22), - M(3, -22), - M(4, -22), - M(5, -22), - M(6, -22), - M(7, -22), - M(8, -22), - M(9, -22), - M(10, -22), - M(11, -22), - M(12, -22), - M(-14, -21), - M(-13, -21), - M(-12, -21), - M(-11, -21), - M(-10, -21), - M(-9, -21), - M(-8, -21), - M(-7, -21), - M(-6, -21), - M(-5, -21), - M(-4, -21), - M(-3, -21), - M(-2, -21), - M(-1, -21), - M(0, -21), - M(1, -21), - M(2, -21), - M(3, -21), - M(4, -21), - M(5, -21), - M(6, -21), - M(7, -21), - M(8, -21), - M(9, -21), - M(10, -21), - M(11, -21), - M(12, -21), - M(13, -21), - M(14, -21), - M(-15, -20), - M(-14, -20), - M(-13, -20), - M(-12, -20), - M(-11, -20), - M(-10, -20), - M(-9, -20), - M(-8, -20), - M(-7, -20), - M(-6, -20), - M(-5, -20), - M(-4, -20), - M(-3, -20), - M(-2, -20), - M(-1, -20), - M(0, -20), - M(1, -20), - M(2, -20), - M(3, -20), - M(4, -20), - M(5, -20), - M(6, -20), - M(7, -20), - M(8, -20), - M(9, -20), - M(10, -20), - M(11, -20), - M(12, -20), - M(13, -20), - M(14, -20), - M(15, -20), - M(-17, -19), - M(-16, -19), - M(-15, -19), - M(-14, -19), - M(-13, -19), - M(-12, -19), - M(-11, -19), - M(-10, -19), - M(-9, -19), - M(-8, -19), - M(-7, -19), - M(-6, -19), - M(-5, -19), - M(-4, -19), - M(-3, -19), - M(-2, -19), - M(-1, -19), - M(0, -19), - M(1, -19), - M(2, -19), - M(3, -19), - M(4, -19), - M(5, -19), - M(6, -19), - M(7, -19), - M(8, -19), - M(9, -19), - M(10, -19), - M(11, -19), - M(12, -19), - M(13, -19), - M(14, -19), - M(15, -19), - M(16, -19), - M(17, -19), - M(-18, -18), - M(-17, -18), - M(-16, -18), - M(-15, -18), - M(-14, -18), - M(-13, -18), - M(-12, -18), - M(-11, -18), - M(-10, -18), - M(-9, -18), - M(-8, -18), - M(-7, -18), - M(-6, -18), - M(-5, -18), - M(-4, -18), - M(-3, -18), - M(-2, -18), - M(-1, -18), - M(0, -18), - M(1, -18), - M(2, -18), - M(3, -18), - M(4, -18), - M(5, -18), - M(6, -18), - M(7, -18), - M(8, -18), - M(9, -18), - M(10, -18), - M(11, -18), - M(12, -18), - M(13, -18), - M(14, -18), - M(15, -18), - M(16, -18), - M(17, -18), - M(18, -18), - M(-19, -17), - M(-18, -17), - M(-17, -17), - M(-16, -17), - M(-15, -17), - M(-14, -17), - M(-13, -17), - M(-12, -17), - M(-11, -17), - M(-10, -17), - M(-9, -17), - M(-8, -17), - M(-7, -17), - M(-6, -17), - M(-5, -17), - M(-4, -17), - M(-3, -17), - M(-2, -17), - M(-1, -17), - M(0, -17), - M(1, -17), - M(2, -17), - M(3, -17), - M(4, -17), - M(5, -17), - M(6, -17), - M(7, -17), - M(8, -17), - M(9, -17), - M(10, -17), - M(11, -17), - M(12, -17), - M(13, -17), - M(14, -17), - M(15, -17), - M(16, -17), - M(17, -17), - M(18, -17), - M(19, -17), - M(-19, -16), - M(-18, -16), - M(-17, -16), - M(-16, -16), - M(-15, -16), - M(-14, -16), - M(-13, -16), - M(-12, -16), - M(-11, -16), - M(-10, -16), - M(-9, -16), - M(-8, -16), - M(-7, -16), - M(-6, -16), - M(-5, -16), - M(-4, -16), - M(-3, -16), - M(-2, -16), - M(-1, -16), - M(0, -16), - M(1, -16), - M(2, -16), - M(3, -16), - M(4, -16), - M(5, -16), - M(6, -16), - M(7, -16), - M(8, -16), - M(9, -16), - M(10, -16), - M(11, -16), - M(12, -16), - M(13, -16), - M(14, -16), - M(15, -16), - M(16, -16), - M(17, -16), - M(18, -16), - M(19, -16), - M(-20, -15), - M(-19, -15), - M(-18, -15), - M(-17, -15), - M(-16, -15), - M(-15, -15), - M(-14, -15), - M(-13, -15), - M(-12, -15), - M(-11, -15), - M(-10, -15), - M(-9, -15), - M(-8, -15), - M(-7, -15), - M(-6, -15), - M(-5, -15), - M(-4, -15), - M(-3, -15), - M(-2, -15), - M(-1, -15), - M(0, -15), - M(1, -15), - M(2, -15), - M(3, -15), - M(4, -15), - M(5, -15), - M(6, -15), - M(7, -15), - M(8, -15), - M(9, -15), - M(10, -15), - M(11, -15), - M(12, -15), - M(13, -15), - M(14, -15), - M(15, -15), - M(16, -15), - M(17, -15), - M(18, -15), - M(19, -15), - M(20, -15), - M(-21, -14), - M(-20, -14), - M(-19, -14), - M(-18, -14), - M(-17, -14), - M(-16, -14), - M(-15, -14), - M(-14, -14), - M(-13, -14), - M(-12, -14), - M(-11, -14), - M(-10, -14), - M(-9, -14), - M(-8, -14), - M(-7, -14), - M(-6, -14), - M(-5, -14), - M(-4, -14), - M(-3, -14), - M(-2, -14), - M(-1, -14), - M(0, -14), - M(1, -14), - M(2, -14), - M(3, -14), - M(4, -14), - M(5, -14), - M(6, -14), - M(7, -14), - M(8, -14), - M(9, -14), - M(10, -14), - M(11, -14), - M(12, -14), - M(13, -14), - M(14, -14), - M(15, -14), - M(16, -14), - M(17, -14), - M(18, -14), - M(19, -14), - M(20, -14), - M(21, -14), - M(-21, -13), - M(-20, -13), - M(-19, -13), - M(-18, -13), - M(-17, -13), - M(-16, -13), - M(-15, -13), - M(-14, -13), - M(-13, -13), - M(-12, -13), - M(-11, -13), - M(-10, -13), - M(-9, -13), - M(-8, -13), - M(-7, -13), - M(-6, -13), - M(-5, -13), - M(-4, -13), - M(-3, -13), - M(-2, -13), - M(-1, -13), - M(0, -13), - M(1, -13), - M(2, -13), - M(3, -13), - M(4, -13), - M(5, -13), - M(6, -13), - M(7, -13), - M(8, -13), - M(9, -13), - M(10, -13), - M(11, -13), - M(12, -13), - M(13, -13), - M(14, -13), - M(15, -13), - M(16, -13), - M(17, -13), - M(18, -13), - M(19, -13), - M(20, -13), - M(21, -13), - M(-22, -12), - M(-21, -12), - M(-20, -12), - M(-19, -12), - M(-18, -12), - M(-17, -12), - M(-16, -12), - M(-15, -12), - M(-14, -12), - M(-13, -12), - M(-12, -12), - M(-11, -12), - M(-10, -12), - M(-9, -12), - M(-8, -12), - M(-7, -12), - M(-6, -12), - M(-5, -12), - M(-4, -12), - M(-3, -12), - M(-2, -12), - M(-1, -12), - M(0, -12), - M(1, -12), - M(2, -12), - M(3, -12), - M(4, -12), - M(5, -12), - M(6, -12), - M(7, -12), - M(8, -12), - M(9, -12), - M(10, -12), - M(11, -12), - M(12, -12), - M(13, -12), - M(14, -12), - M(15, -12), - M(16, -12), - M(17, -12), - M(18, -12), - M(19, -12), - M(20, -12), - M(21, -12), - M(22, -12), - M(-23, -11), - M(-22, -11), - M(-21, -11), - M(-20, -11), - M(-19, -11), - M(-18, -11), - M(-17, -11), - M(-16, -11), - M(-15, -11), - M(-14, -11), - M(-13, -11), - M(-12, -11), - M(-11, -11), - M(-10, -11), - M(-9, -11), - M(-8, -11), - M(-7, -11), - M(-6, -11), - M(-5, -11), - M(-4, -11), - M(-3, -11), - M(-2, -11), - M(-1, -11), - M(0, -11), - M(1, -11), - M(2, -11), - M(3, -11), - M(4, -11), - M(5, -11), - M(6, -11), - M(7, -11), - M(8, -11), - M(9, -11), - M(10, -11), - M(11, -11), - M(12, -11), - M(13, -11), - M(14, -11), - M(15, -11), - M(16, -11), - M(17, -11), - M(18, -11), - M(19, -11), - M(20, -11), - M(21, -11), - M(22, -11), - M(23, -11), - M(-23, -10), - M(-22, -10), - M(-21, -10), - M(-20, -10), - M(-19, -10), - M(-18, -10), - M(-17, -10), - M(-16, -10), - M(-15, -10), - M(-14, -10), - M(-13, -10), - M(-12, -10), - M(-11, -10), - M(-10, -10), - M(-9, -10), - M(-8, -10), - M(-7, -10), - M(-6, -10), - M(-5, -10), - M(-4, -10), - M(-3, -10), - M(-2, -10), - M(-1, -10), - M(0, -10), - M(1, -10), - M(2, -10), - M(3, -10), - M(4, -10), - M(5, -10), - M(6, -10), - M(7, -10), - M(8, -10), - M(9, -10), - M(10, -10), - M(11, -10), - M(12, -10), - M(13, -10), - M(14, -10), - M(15, -10), - M(16, -10), - M(17, -10), - M(18, -10), - M(19, -10), - M(20, -10), - M(21, -10), - M(22, -10), - M(23, -10), - M(-23, -9), - M(-22, -9), - M(-21, -9), - M(-20, -9), - M(-19, -9), - M(-18, -9), - M(-17, -9), - M(-16, -9), - M(-15, -9), - M(-14, -9), - M(-13, -9), - M(-12, -9), - M(-11, -9), - M(-10, -9), - M(-9, -9), - M(-8, -9), - M(-7, -9), - M(-6, -9), - M(-5, -9), - M(-4, -9), - M(-3, -9), - M(-2, -9), - M(-1, -9), - M(0, -9), - M(1, -9), - M(2, -9), - M(3, -9), - M(4, -9), - M(5, -9), - M(6, -9), - M(7, -9), - M(8, -9), - M(9, -9), - M(10, -9), - M(11, -9), - M(12, -9), - M(13, -9), - M(14, -9), - M(15, -9), - M(16, -9), - M(17, -9), - M(18, -9), - M(19, -9), - M(20, -9), - M(21, -9), - M(22, -9), - M(23, -9), - M(-24, -8), - M(-23, -8), - M(-22, -8), - M(-21, -8), - M(-20, -8), - M(-19, -8), - M(-18, -8), - M(-17, -8), - M(-16, -8), - M(-15, -8), - M(-14, -8), - M(-13, -8), - M(-12, -8), - M(-11, -8), - M(-10, -8), - M(-9, -8), - M(-8, -8), - M(-7, -8), - M(-6, -8), - M(-5, -8), - M(-4, -8), - M(-3, -8), - M(-2, -8), - M(-1, -8), - M(0, -8), - M(1, -8), - M(2, -8), - M(3, -8), - M(4, -8), - M(5, -8), - M(6, -8), - M(7, -8), - M(8, -8), - M(9, -8), - M(10, -8), - M(11, -8), - M(12, -8), - M(13, -8), - M(14, -8), - M(15, -8), - M(16, -8), - M(17, -8), - M(18, -8), - M(19, -8), - M(20, -8), - M(21, -8), - M(22, -8), - M(23, -8), - M(24, -8), - M(-24, -7), - M(-23, -7), - M(-22, -7), - M(-21, -7), - M(-20, -7), - M(-19, -7), - M(-18, -7), - M(-17, -7), - M(-16, -7), - M(-15, -7), - M(-14, -7), - M(-13, -7), - M(-12, -7), - M(-11, -7), - M(-10, -7), - M(-9, -7), - M(-8, -7), - M(-7, -7), - M(-6, -7), - M(-5, -7), - M(-4, -7), - M(-3, -7), - M(-2, -7), - M(-1, -7), - M(0, -7), - M(1, -7), - M(2, -7), - M(3, -7), - M(4, -7), - M(5, -7), - M(6, -7), - M(7, -7), - M(8, -7), - M(9, -7), - M(10, -7), - M(11, -7), - M(12, -7), - M(13, -7), - M(14, -7), - M(15, -7), - M(16, -7), - M(17, -7), - M(18, -7), - M(19, -7), - M(20, -7), - M(21, -7), - M(22, -7), - M(23, -7), - M(24, -7), - M(-24, -6), - M(-23, -6), - M(-22, -6), - M(-21, -6), - M(-20, -6), - M(-19, -6), - M(-18, -6), - M(-17, -6), - M(-16, -6), - M(-15, -6), - M(-14, -6), - M(-13, -6), - M(-12, -6), - M(-11, -6), - M(-10, -6), - M(-9, -6), - M(-8, -6), - M(-7, -6), - M(-6, -6), - M(-5, -6), - M(-4, -6), - M(-3, -6), - M(-2, -6), - M(-1, -6), - M(0, -6), - M(1, -6), - M(2, -6), - M(3, -6), - M(4, -6), - M(5, -6), - M(6, -6), - M(7, -6), - M(8, -6), - M(9, -6), - M(10, -6), - M(11, -6), - M(12, -6), - M(13, -6), - M(14, -6), - M(15, -6), - M(16, -6), - M(17, -6), - M(18, -6), - M(19, -6), - M(20, -6), - M(21, -6), - M(22, -6), - M(23, -6), - M(24, -6), - M(-25, -5), - M(-24, -5), - M(-23, -5), - M(-22, -5), - M(-21, -5), - M(-20, -5), - M(-19, -5), - M(-18, -5), - M(-17, -5), - M(-16, -5), - M(-15, -5), - M(-14, -5), - M(-13, -5), - M(-12, -5), - M(-11, -5), - M(-10, -5), - M(-9, -5), - M(-8, -5), - M(-7, -5), - M(-6, -5), - M(-5, -5), - M(-4, -5), - M(-3, -5), - M(-2, -5), - M(-1, -5), - M(0, -5), - M(1, -5), - M(2, -5), - M(3, -5), - M(4, -5), - M(5, -5), - M(6, -5), - M(7, -5), - M(8, -5), - M(9, -5), - M(10, -5), - M(11, -5), - M(12, -5), - M(13, -5), - M(14, -5), - M(15, -5), - M(16, -5), - M(17, -5), - M(18, -5), - M(19, -5), - M(20, -5), - M(21, -5), - M(22, -5), - M(23, -5), - M(24, -5), - M(25, -5), - M(-25, -4), - M(-24, -4), - M(-23, -4), - M(-22, -4), - M(-21, -4), - M(-20, -4), - M(-19, -4), - M(-18, -4), - M(-17, -4), - M(-16, -4), - M(-15, -4), - M(-14, -4), - M(-13, -4), - M(-12, -4), - M(-11, -4), - M(-10, -4), - M(-9, -4), - M(-8, -4), - M(-7, -4), - M(-6, -4), - M(-5, -4), - M(-4, -4), - M(-3, -4), - M(-2, -4), - M(-1, -4), - M(0, -4), - M(1, -4), - M(2, -4), - M(3, -4), - M(4, -4), - M(5, -4), - M(6, -4), - M(7, -4), - M(8, -4), - M(9, -4), - M(10, -4), - M(11, -4), - M(12, -4), - M(13, -4), - M(14, -4), - M(15, -4), - M(16, -4), - M(17, -4), - M(18, -4), - M(19, -4), - M(20, -4), - M(21, -4), - M(22, -4), - M(23, -4), - M(24, -4), - M(25, -4), - M(-25, -3), - M(-24, -3), - M(-23, -3), - M(-22, -3), - M(-21, -3), - M(-20, -3), - M(-19, -3), - M(-18, -3), - M(-17, -3), - M(-16, -3), - M(-15, -3), - M(-14, -3), - M(-13, -3), - M(-12, -3), - M(-11, -3), - M(-10, -3), - M(-9, -3), - M(-8, -3), - M(-7, -3), - M(-6, -3), - M(-5, -3), - M(-4, -3), - M(-3, -3), - M(-2, -3), - M(-1, -3), - M(0, -3), - M(1, -3), - M(2, -3), - M(3, -3), - M(4, -3), - M(5, -3), - M(6, -3), - M(7, -3), - M(8, -3), - M(9, -3), - M(10, -3), - M(11, -3), - M(12, -3), - M(13, -3), - M(14, -3), - M(15, -3), - M(16, -3), - M(17, -3), - M(18, -3), - M(19, -3), - M(20, -3), - M(21, -3), - M(22, -3), - M(23, -3), - M(24, -3), - M(25, -3), - M(-25, -2), - M(-24, -2), - M(-23, -2), - M(-22, -2), - M(-21, -2), - M(-20, -2), - M(-19, -2), - M(-18, -2), - M(-17, -2), - M(-16, -2), - M(-15, -2), - M(-14, -2), - M(-13, -2), - M(-12, -2), - M(-11, -2), - M(-10, -2), - M(-9, -2), - M(-8, -2), - M(-7, -2), - M(-6, -2), - M(-5, -2), - M(-4, -2), - M(-3, -2), - M(-2, -2), - M(-1, -2), - M(0, -2), - M(1, -2), - M(2, -2), - M(3, -2), - M(4, -2), - M(5, -2), - M(6, -2), - M(7, -2), - M(8, -2), - M(9, -2), - M(10, -2), - M(11, -2), - M(12, -2), - M(13, -2), - M(14, -2), - M(15, -2), - M(16, -2), - M(17, -2), - M(18, -2), - M(19, -2), - M(20, -2), - M(21, -2), - M(22, -2), - M(23, -2), - M(24, -2), - M(25, -2), - M(-25, -1), - M(-24, -1), - M(-23, -1), - M(-22, -1), - M(-21, -1), - M(-20, -1), - M(-19, -1), - M(-18, -1), - M(-17, -1), - M(-16, -1), - M(-15, -1), - M(-14, -1), - M(-13, -1), - M(-12, -1), - M(-11, -1), - M(-10, -1), - M(-9, -1), - M(-8, -1), - M(-7, -1), - M(-6, -1), - M(-5, -1), - M(-4, -1), - M(-3, -1), - M(-2, -1), - M(-1, -1), - M(0, -1), - M(1, -1), - M(2, -1), - M(3, -1), - M(4, -1), - M(5, -1), - M(6, -1), - M(7, -1), - M(8, -1), - M(9, -1), - M(10, -1), - M(11, -1), - M(12, -1), - M(13, -1), - M(14, -1), - M(15, -1), - M(16, -1), - M(17, -1), - M(18, -1), - M(19, -1), - M(20, -1), - M(21, -1), - M(22, -1), - M(23, -1), - M(24, -1), - M(25, -1), - M(-25, 0), - M(-24, 0), - M(-23, 0), - M(-22, 0), - M(-21, 0), - M(-20, 0), - M(-19, 0), - M(-18, 0), - M(-17, 0), - M(-16, 0), - M(-15, 0), - M(-14, 0), - M(-13, 0), - M(-12, 0), - M(-11, 0), - M(-10, 0), - M(-9, 0), - M(-8, 0), - M(-7, 0), - M(-6, 0), - M(-5, 0), - M(-4, 0), - M(-3, 0), - M(-2, 0), - M(-1, 0), - M(0, 0), - M(1, 0), - M(2, 0), - M(3, 0), - M(4, 0), - M(5, 0), - M(6, 0), - M(7, 0), - M(8, 0), - M(9, 0), - M(10, 0), - M(11, 0), - M(12, 0), - M(13, 0), - M(14, 0), - M(15, 0), - M(16, 0), - M(17, 0), - M(18, 0), - M(19, 0), - M(20, 0), - M(21, 0), - M(22, 0), - M(23, 0), - M(24, 0), - M(25, 0), - M(-25, 1), - M(-24, 1), - M(-23, 1), - M(-22, 1), - M(-21, 1), - M(-20, 1), - M(-19, 1), - M(-18, 1), - M(-17, 1), - M(-16, 1), - M(-15, 1), - M(-14, 1), - M(-13, 1), - M(-12, 1), - M(-11, 1), - M(-10, 1), - M(-9, 1), - M(-8, 1), - M(-7, 1), - M(-6, 1), - M(-5, 1), - M(-4, 1), - M(-3, 1), - M(-2, 1), - M(-1, 1), - M(0, 1), - M(1, 1), - M(2, 1), - M(3, 1), - M(4, 1), - M(5, 1), - M(6, 1), - M(7, 1), - M(8, 1), - M(9, 1), - M(10, 1), - M(11, 1), - M(12, 1), - M(13, 1), - M(14, 1), - M(15, 1), - M(16, 1), - M(17, 1), - M(18, 1), - M(19, 1), - M(20, 1), - M(21, 1), - M(22, 1), - M(23, 1), - M(24, 1), - M(25, 1), - M(-25, 2), - M(-24, 2), - M(-23, 2), - M(-22, 2), - M(-21, 2), - M(-20, 2), - M(-19, 2), - M(-18, 2), - M(-17, 2), - M(-16, 2), - M(-15, 2), - M(-14, 2), - M(-13, 2), - M(-12, 2), - M(-11, 2), - M(-10, 2), - M(-9, 2), - M(-8, 2), - M(-7, 2), - M(-6, 2), - M(-5, 2), - M(-4, 2), - M(-3, 2), - M(-2, 2), - M(-1, 2), - M(0, 2), - M(1, 2), - M(2, 2), - M(3, 2), - M(4, 2), - M(5, 2), - M(6, 2), - M(7, 2), - M(8, 2), - M(9, 2), - M(10, 2), - M(11, 2), - M(12, 2), - M(13, 2), - M(14, 2), - M(15, 2), - M(16, 2), - M(17, 2), - M(18, 2), - M(19, 2), - M(20, 2), - M(21, 2), - M(22, 2), - M(23, 2), - M(24, 2), - M(25, 2), - M(-25, 3), - M(-24, 3), - M(-23, 3), - M(-22, 3), - M(-21, 3), - M(-20, 3), - M(-19, 3), - M(-18, 3), - M(-17, 3), - M(-16, 3), - M(-15, 3), - M(-14, 3), - M(-13, 3), - M(-12, 3), - M(-11, 3), - M(-10, 3), - M(-9, 3), - M(-8, 3), - M(-7, 3), - M(-6, 3), - M(-5, 3), - M(-4, 3), - M(-3, 3), - M(-2, 3), - M(-1, 3), - M(0, 3), - M(1, 3), - M(2, 3), - M(3, 3), - M(4, 3), - M(5, 3), - M(6, 3), - M(7, 3), - M(8, 3), - M(9, 3), - M(10, 3), - M(11, 3), - M(12, 3), - M(13, 3), - M(14, 3), - M(15, 3), - M(16, 3), - M(17, 3), - M(18, 3), - M(19, 3), - M(20, 3), - M(21, 3), - M(22, 3), - M(23, 3), - M(24, 3), - M(25, 3), - M(-25, 4), - M(-24, 4), - M(-23, 4), - M(-22, 4), - M(-21, 4), - M(-20, 4), - M(-19, 4), - M(-18, 4), - M(-17, 4), - M(-16, 4), - M(-15, 4), - M(-14, 4), - M(-13, 4), - M(-12, 4), - M(-11, 4), - M(-10, 4), - M(-9, 4), - M(-8, 4), - M(-7, 4), - M(-6, 4), - M(-5, 4), - M(-4, 4), - M(-3, 4), - M(-2, 4), - M(-1, 4), - M(0, 4), - M(1, 4), - M(2, 4), - M(3, 4), - M(4, 4), - M(5, 4), - M(6, 4), - M(7, 4), - M(8, 4), - M(9, 4), - M(10, 4), - M(11, 4), - M(12, 4), - M(13, 4), - M(14, 4), - M(15, 4), - M(16, 4), - M(17, 4), - M(18, 4), - M(19, 4), - M(20, 4), - M(21, 4), - M(22, 4), - M(23, 4), - M(24, 4), - M(25, 4), - M(-25, 5), - M(-24, 5), - M(-23, 5), - M(-22, 5), - M(-21, 5), - M(-20, 5), - M(-19, 5), - M(-18, 5), - M(-17, 5), - M(-16, 5), - M(-15, 5), - M(-14, 5), - M(-13, 5), - M(-12, 5), - M(-11, 5), - M(-10, 5), - M(-9, 5), - M(-8, 5), - M(-7, 5), - M(-6, 5), - M(-5, 5), - M(-4, 5), - M(-3, 5), - M(-2, 5), - M(-1, 5), - M(0, 5), - M(1, 5), - M(2, 5), - M(3, 5), - M(4, 5), - M(5, 5), - M(6, 5), - M(7, 5), - M(8, 5), - M(9, 5), - M(10, 5), - M(11, 5), - M(12, 5), - M(13, 5), - M(14, 5), - M(15, 5), - M(16, 5), - M(17, 5), - M(18, 5), - M(19, 5), - M(20, 5), - M(21, 5), - M(22, 5), - M(23, 5), - M(24, 5), - M(25, 5), - M(-24, 6), - M(-23, 6), - M(-22, 6), - M(-21, 6), - M(-20, 6), - M(-19, 6), - M(-18, 6), - M(-17, 6), - M(-16, 6), - M(-15, 6), - M(-14, 6), - M(-13, 6), - M(-12, 6), - M(-11, 6), - M(-10, 6), - M(-9, 6), - M(-8, 6), - M(-7, 6), - M(-6, 6), - M(-5, 6), - M(-4, 6), - M(-3, 6), - M(-2, 6), - M(-1, 6), - M(0, 6), - M(1, 6), - M(2, 6), - M(3, 6), - M(4, 6), - M(5, 6), - M(6, 6), - M(7, 6), - M(8, 6), - M(9, 6), - M(10, 6), - M(11, 6), - M(12, 6), - M(13, 6), - M(14, 6), - M(15, 6), - M(16, 6), - M(17, 6), - M(18, 6), - M(19, 6), - M(20, 6), - M(21, 6), - M(22, 6), - M(23, 6), - M(24, 6), - M(-24, 7), - M(-23, 7), - M(-22, 7), - M(-21, 7), - M(-20, 7), - M(-19, 7), - M(-18, 7), - M(-17, 7), - M(-16, 7), - M(-15, 7), - M(-14, 7), - M(-13, 7), - M(-12, 7), - M(-11, 7), - M(-10, 7), - M(-9, 7), - M(-8, 7), - M(-7, 7), - M(-6, 7), - M(-5, 7), - M(-4, 7), - M(-3, 7), - M(-2, 7), - M(-1, 7), - M(0, 7), - M(1, 7), - M(2, 7), - M(3, 7), - M(4, 7), - M(5, 7), - M(6, 7), - M(7, 7), - M(8, 7), - M(9, 7), - M(10, 7), - M(11, 7), - M(12, 7), - M(13, 7), - M(14, 7), - M(15, 7), - M(16, 7), - M(17, 7), - M(18, 7), - M(19, 7), - M(20, 7), - M(21, 7), - M(22, 7), - M(23, 7), - M(24, 7), - M(-24, 8), - M(-23, 8), - M(-22, 8), - M(-21, 8), - M(-20, 8), - M(-19, 8), - M(-18, 8), - M(-17, 8), - M(-16, 8), - M(-15, 8), - M(-14, 8), - M(-13, 8), - M(-12, 8), - M(-11, 8), - M(-10, 8), - M(-9, 8), - M(-8, 8), - M(-7, 8), - M(-6, 8), - M(-5, 8), - M(-4, 8), - M(-3, 8), - M(-2, 8), - M(-1, 8), - M(0, 8), - M(1, 8), - M(2, 8), - M(3, 8), - M(4, 8), - M(5, 8), - M(6, 8), - M(7, 8), - M(8, 8), - M(9, 8), - M(10, 8), - M(11, 8), - M(12, 8), - M(13, 8), - M(14, 8), - M(15, 8), - M(16, 8), - M(17, 8), - M(18, 8), - M(19, 8), - M(20, 8), - M(21, 8), - M(22, 8), - M(23, 8), - M(24, 8), - M(-23, 9), - M(-22, 9), - M(-21, 9), - M(-20, 9), - M(-19, 9), - M(-18, 9), - M(-17, 9), - M(-16, 9), - M(-15, 9), - M(-14, 9), - M(-13, 9), - M(-12, 9), - M(-11, 9), - M(-10, 9), - M(-9, 9), - M(-8, 9), - M(-7, 9), - M(-6, 9), - M(-5, 9), - M(-4, 9), - M(-3, 9), - M(-2, 9), - M(-1, 9), - M(0, 9), - M(1, 9), - M(2, 9), - M(3, 9), - M(4, 9), - M(5, 9), - M(6, 9), - M(7, 9), - M(8, 9), - M(9, 9), - M(10, 9), - M(11, 9), - M(12, 9), - M(13, 9), - M(14, 9), - M(15, 9), - M(16, 9), - M(17, 9), - M(18, 9), - M(19, 9), - M(20, 9), - M(21, 9), - M(22, 9), - M(23, 9), - M(-23, 10), - M(-22, 10), - M(-21, 10), - M(-20, 10), - M(-19, 10), - M(-18, 10), - M(-17, 10), - M(-16, 10), - M(-15, 10), - M(-14, 10), - M(-13, 10), - M(-12, 10), - M(-11, 10), - M(-10, 10), - M(-9, 10), - M(-8, 10), - M(-7, 10), - M(-6, 10), - M(-5, 10), - M(-4, 10), - M(-3, 10), - M(-2, 10), - M(-1, 10), - M(0, 10), - M(1, 10), - M(2, 10), - M(3, 10), - M(4, 10), - M(5, 10), - M(6, 10), - M(7, 10), - M(8, 10), - M(9, 10), - M(10, 10), - M(11, 10), - M(12, 10), - M(13, 10), - M(14, 10), - M(15, 10), - M(16, 10), - M(17, 10), - M(18, 10), - M(19, 10), - M(20, 10), - M(21, 10), - M(22, 10), - M(23, 10), - M(-23, 11), - M(-22, 11), - M(-21, 11), - M(-20, 11), - M(-19, 11), - M(-18, 11), - M(-17, 11), - M(-16, 11), - M(-15, 11), - M(-14, 11), - M(-13, 11), - M(-12, 11), - M(-11, 11), - M(-10, 11), - M(-9, 11), - M(-8, 11), - M(-7, 11), - M(-6, 11), - M(-5, 11), - M(-4, 11), - M(-3, 11), - M(-2, 11), - M(-1, 11), - M(0, 11), - M(1, 11), - M(2, 11), - M(3, 11), - M(4, 11), - M(5, 11), - M(6, 11), - M(7, 11), - M(8, 11), - M(9, 11), - M(10, 11), - M(11, 11), - M(12, 11), - M(13, 11), - M(14, 11), - M(15, 11), - M(16, 11), - M(17, 11), - M(18, 11), - M(19, 11), - M(20, 11), - M(21, 11), - M(22, 11), - M(23, 11), - M(-22, 12), - M(-21, 12), - M(-20, 12), - M(-19, 12), - M(-18, 12), - M(-17, 12), - M(-16, 12), - M(-15, 12), - M(-14, 12), - M(-13, 12), - M(-12, 12), - M(-11, 12), - M(-10, 12), - M(-9, 12), - M(-8, 12), - M(-7, 12), - M(-6, 12), - M(-5, 12), - M(-4, 12), - M(-3, 12), - M(-2, 12), - M(-1, 12), - M(0, 12), - M(1, 12), - M(2, 12), - M(3, 12), - M(4, 12), - M(5, 12), - M(6, 12), - M(7, 12), - M(8, 12), - M(9, 12), - M(10, 12), - M(11, 12), - M(12, 12), - M(13, 12), - M(14, 12), - M(15, 12), - M(16, 12), - M(17, 12), - M(18, 12), - M(19, 12), - M(20, 12), - M(21, 12), - M(22, 12), - M(-21, 13), - M(-20, 13), - M(-19, 13), - M(-18, 13), - M(-17, 13), - M(-16, 13), - M(-15, 13), - M(-14, 13), - M(-13, 13), - M(-12, 13), - M(-11, 13), - M(-10, 13), - M(-9, 13), - M(-8, 13), - M(-7, 13), - M(-6, 13), - M(-5, 13), - M(-4, 13), - M(-3, 13), - M(-2, 13), - M(-1, 13), - M(0, 13), - M(1, 13), - M(2, 13), - M(3, 13), - M(4, 13), - M(5, 13), - M(6, 13), - M(7, 13), - M(8, 13), - M(9, 13), - M(10, 13), - M(11, 13), - M(12, 13), - M(13, 13), - M(14, 13), - M(15, 13), - M(16, 13), - M(17, 13), - M(18, 13), - M(19, 13), - M(20, 13), - M(21, 13), - M(-21, 14), - M(-20, 14), - M(-19, 14), - M(-18, 14), - M(-17, 14), - M(-16, 14), - M(-15, 14), - M(-14, 14), - M(-13, 14), - M(-12, 14), - M(-11, 14), - M(-10, 14), - M(-9, 14), - M(-8, 14), - M(-7, 14), - M(-6, 14), - M(-5, 14), - M(-4, 14), - M(-3, 14), - M(-2, 14), - M(-1, 14), - M(0, 14), - M(1, 14), - M(2, 14), - M(3, 14), - M(4, 14), - M(5, 14), - M(6, 14), - M(7, 14), - M(8, 14), - M(9, 14), - M(10, 14), - M(11, 14), - M(12, 14), - M(13, 14), - M(14, 14), - M(15, 14), - M(16, 14), - M(17, 14), - M(18, 14), - M(19, 14), - M(20, 14), - M(21, 14), - M(-20, 15), - M(-19, 15), - M(-18, 15), - M(-17, 15), - M(-16, 15), - M(-15, 15), - M(-14, 15), - M(-13, 15), - M(-12, 15), - M(-11, 15), - M(-10, 15), - M(-9, 15), - M(-8, 15), - M(-7, 15), - M(-6, 15), - M(-5, 15), - M(-4, 15), - M(-3, 15), - M(-2, 15), - M(-1, 15), - M(0, 15), - M(1, 15), - M(2, 15), - M(3, 15), - M(4, 15), - M(5, 15), - M(6, 15), - M(7, 15), - M(8, 15), - M(9, 15), - M(10, 15), - M(11, 15), - M(12, 15), - M(13, 15), - M(14, 15), - M(15, 15), - M(16, 15), - M(17, 15), - M(18, 15), - M(19, 15), - M(20, 15), - M(-19, 16), - M(-18, 16), - M(-17, 16), - M(-16, 16), - M(-15, 16), - M(-14, 16), - M(-13, 16), - M(-12, 16), - M(-11, 16), - M(-10, 16), - M(-9, 16), - M(-8, 16), - M(-7, 16), - M(-6, 16), - M(-5, 16), - M(-4, 16), - M(-3, 16), - M(-2, 16), - M(-1, 16), - M(0, 16), - M(1, 16), - M(2, 16), - M(3, 16), - M(4, 16), - M(5, 16), - M(6, 16), - M(7, 16), - M(8, 16), - M(9, 16), - M(10, 16), - M(11, 16), - M(12, 16), - M(13, 16), - M(14, 16), - M(15, 16), - M(16, 16), - M(17, 16), - M(18, 16), - M(19, 16), - M(-19, 17), - M(-18, 17), - M(-17, 17), - M(-16, 17), - M(-15, 17), - M(-14, 17), - M(-13, 17), - M(-12, 17), - M(-11, 17), - M(-10, 17), - M(-9, 17), - M(-8, 17), - M(-7, 17), - M(-6, 17), - M(-5, 17), - M(-4, 17), - M(-3, 17), - M(-2, 17), - M(-1, 17), - M(0, 17), - M(1, 17), - M(2, 17), - M(3, 17), - M(4, 17), - M(5, 17), - M(6, 17), - M(7, 17), - M(8, 17), - M(9, 17), - M(10, 17), - M(11, 17), - M(12, 17), - M(13, 17), - M(14, 17), - M(15, 17), - M(16, 17), - M(17, 17), - M(18, 17), - M(19, 17), - M(-18, 18), - M(-17, 18), - M(-16, 18), - M(-15, 18), - M(-14, 18), - M(-13, 18), - M(-12, 18), - M(-11, 18), - M(-10, 18), - M(-9, 18), - M(-8, 18), - M(-7, 18), - M(-6, 18), - M(-5, 18), - M(-4, 18), - M(-3, 18), - M(-2, 18), - M(-1, 18), - M(0, 18), - M(1, 18), - M(2, 18), - M(3, 18), - M(4, 18), - M(5, 18), - M(6, 18), - M(7, 18), - M(8, 18), - M(9, 18), - M(10, 18), - M(11, 18), - M(12, 18), - M(13, 18), - M(14, 18), - M(15, 18), - M(16, 18), - M(17, 18), - M(18, 18), - M(-17, 19), - M(-16, 19), - M(-15, 19), - M(-14, 19), - M(-13, 19), - M(-12, 19), - M(-11, 19), - M(-10, 19), - M(-9, 19), - M(-8, 19), - M(-7, 19), - M(-6, 19), - M(-5, 19), - M(-4, 19), - M(-3, 19), - M(-2, 19), - M(-1, 19), - M(0, 19), - M(1, 19), - M(2, 19), - M(3, 19), - M(4, 19), - M(5, 19), - M(6, 19), - M(7, 19), - M(8, 19), - M(9, 19), - M(10, 19), - M(11, 19), - M(12, 19), - M(13, 19), - M(14, 19), - M(15, 19), - M(16, 19), - M(17, 19), - M(-15, 20), - M(-14, 20), - M(-13, 20), - M(-12, 20), - M(-11, 20), - M(-10, 20), - M(-9, 20), - M(-8, 20), - M(-7, 20), - M(-6, 20), - M(-5, 20), - M(-4, 20), - M(-3, 20), - M(-2, 20), - M(-1, 20), - M(0, 20), - M(1, 20), - M(2, 20), - M(3, 20), - M(4, 20), - M(5, 20), - M(6, 20), - M(7, 20), - M(8, 20), - M(9, 20), - M(10, 20), - M(11, 20), - M(12, 20), - M(13, 20), - M(14, 20), - M(15, 20), - M(-14, 21), - M(-13, 21), - M(-12, 21), - M(-11, 21), - M(-10, 21), - M(-9, 21), - M(-8, 21), - M(-7, 21), - M(-6, 21), - M(-5, 21), - M(-4, 21), - M(-3, 21), - M(-2, 21), - M(-1, 21), - M(0, 21), - M(1, 21), - M(2, 21), - M(3, 21), - M(4, 21), - M(5, 21), - M(6, 21), - M(7, 21), - M(8, 21), - M(9, 21), - M(10, 21), - M(11, 21), - M(12, 21), - M(13, 21), - M(14, 21), - M(-12, 22), - M(-11, 22), - M(-10, 22), - M(-9, 22), - M(-8, 22), - M(-7, 22), - M(-6, 22), - M(-5, 22), - M(-4, 22), - M(-3, 22), - M(-2, 22), - M(-1, 22), - M(0, 22), - M(1, 22), - M(2, 22), - M(3, 22), - M(4, 22), - M(5, 22), - M(6, 22), - M(7, 22), - M(8, 22), - M(9, 22), - M(10, 22), - M(11, 22), - M(12, 22), - M(-11, 23), - M(-10, 23), - M(-9, 23), - M(-8, 23), - M(-7, 23), - M(-6, 23), - M(-5, 23), - M(-4, 23), - M(-3, 23), - M(-2, 23), - M(-1, 23), - M(0, 23), - M(1, 23), - M(2, 23), - M(3, 23), - M(4, 23), - M(5, 23), - M(6, 23), - M(7, 23), - M(8, 23), - M(9, 23), - M(10, 23), - M(11, 23), - M(-8, 24), - M(-7, 24), - M(-6, 24), - M(-5, 24), - M(-4, 24), - M(-3, 24), - M(-2, 24), - M(-1, 24), - M(0, 24), - M(1, 24), - M(2, 24), - M(3, 24), - M(4, 24), - M(5, 24), - M(6, 24), - M(7, 24), - M(8, 24), - M(-5, 25), - M(-4, 25), - M(-3, 25), - M(-2, 25), - M(-1, 25), - M(0, 25), - M(1, 25), - M(2, 25), - M(3, 25), - M(4, 25), - M(5, 25) +// This array draws a filled circle 51 tiles in diameter. +static const Rect16 _make_desert_or_rainforest_data_extralarge[] = { + R( -5, 5, -25, -25), + R( -8, 8, -24, -24), + R(-11, 11, -23, -23), + R(-12, 12, -22, -22), + R(-14, 14, -21, -21), + R(-15, 15, -20, -20), + R(-17, 17, -19, -19), + R(-18, 18, -18, -18), + R(-19, 19, -17, -16), + R(-20, 20, -15, -15), + R(-21, 21, -14, -13), + R(-22, 22, -12, -12), + R(-23, 23, -11, -9), + R(-24, 24, -8, -6), + R(-25, 25, -5, 5), + R(-24, 24, 6, 8), + R(-23, 23, 9, 11), + R(-22, 22, 12, 12), + R(-21, 21, 13, 14), + R(-20, 20, 15, 15), + R(-19, 19, 16, 17), + R(-18, 18, 18, 18), + R(-17, 17, 19, 19), + R(-15, 15, 20, 20), + R(-14, 14, 21, 21), + R(-12, 12, 22, 22), + R(-11, 11, 23, 23), + R( -8, 8, 24, 24), + R( -5, 5, 25, 25) }; -#undef M +#undef R