Mercurial > hg > openttd
changeset 12190:0e10ecaebf0c draft
(svn r16603) -Codechange: enumify map size limits (based on a patch by Bilbo)
author | smatz <smatz@openttd.org> |
---|---|
date | Sat, 20 Jun 2009 11:25:39 +0000 |
parents | 6684af314584 |
children | 98caf4f386d6 |
files | src/map.cpp src/map_type.h src/settings.cpp src/table/settings.h |
diffstat | 4 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/map.cpp +++ b/src/map.cpp @@ -34,9 +34,9 @@ void AllocateMap(uint size_x, uint size_y) { /* Make sure that the map size is within the limits and that - * the x axis size is a power of 2. */ - if (size_x < 64 || size_x > 2048 || - size_y < 64 || size_y > 2048 || + * size of both axes is a power of 2. */ + if (!IsInsideMM(size_x, MIN_MAP_SIZE, MAX_MAP_SIZE + 1) || + !IsInsideMM(size_y, MIN_MAP_SIZE, MAX_MAP_SIZE + 1) || (size_x & (size_x - 1)) != 0 || (size_y & (size_y - 1)) != 0) error("Invalid map size");
--- a/src/map_type.h +++ b/src/map_type.h @@ -50,6 +50,14 @@ int16 y; ///< The y value of the coordinate }; +/** Minimal and maximal map width and height */ +enum { + MIN_MAP_SIZE_BITS = 6, ///< Minimal size of map is equal to 2 ^ MIN_MAP_SIZE_BITS + MAX_MAP_SIZE_BITS = 11, ///< Maximal size of map is equal to 2 ^ MAX_MAP_SIZE_BITS + MIN_MAP_SIZE = 1 << MIN_MAP_SIZE_BITS, ///< Minimal map size = 64 + MAX_MAP_SIZE = 1 << MAX_MAP_SIZE_BITS, ///< Maximal map size = 2048 +}; + /** * Approximation of the length of a straight track, relative to a diagonal * track (ie the size of a tile side).
--- a/src/settings.cpp +++ b/src/settings.cpp @@ -51,6 +51,7 @@ #include "gfxinit.h" #include "gamelog.h" #include "station_func.h" +#include "map_type.h" #include "settings_func.h" #include "ini_type.h" #include "ai/ai.hpp"
--- a/src/table/settings.h +++ b/src/table/settings.h @@ -500,8 +500,8 @@ SDT_VAR(GameSettings, game_creation.heightmap_rotation, SLE_UINT8, S,MS, 0, 0, 1, 0, STR_CONFIG_SETTING_HEIGHTMAP_ROTATION, NULL), SDT_VAR(GameSettings, game_creation.se_flat_world_height, SLE_UINT8, S, 0, 1, 0, 15, 0, STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT, NULL), - SDT_VAR(GameSettings, game_creation.map_x, SLE_UINT8, S, 0, 8, 6, 11, 0, STR_CONFIG_SETTING_MAP_X, NULL), - SDT_VAR(GameSettings, game_creation.map_y, SLE_UINT8, S, 0, 8, 6, 11, 0, STR_CONFIG_SETTING_MAP_Y, NULL), + SDT_VAR(GameSettings, game_creation.map_x, SLE_UINT8, S, 0, 8, MIN_MAP_SIZE_BITS, MAX_MAP_SIZE_BITS, 0, STR_CONFIG_SETTING_MAP_X, NULL), + SDT_VAR(GameSettings, game_creation.map_y, SLE_UINT8, S, 0, 8, MIN_MAP_SIZE_BITS, MAX_MAP_SIZE_BITS, 0, STR_CONFIG_SETTING_MAP_Y, NULL), SDT_CONDBOOL(GameSettings, construction.freeform_edges, 111, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES, CheckFreeformEdges), SDT_CONDVAR(GameSettings, game_creation.water_borders, SLE_UINT8,111, SL_MAX_VERSION, 0, 0, 15, 0, 16, 0, STR_NULL, NULL), SDT_CONDVAR(GameSettings, game_creation.custom_town_number, SLE_UINT16,115, SL_MAX_VERSION, 0, 0, 1, 1, 5000, 0, STR_NULL, NULL),