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),