--- a/misc.c Sat Jan 29 19:41:44 2005 +0000
+++ b/misc.c Sat Jan 29 19:45:14 2005 +0000
@@ -165,7 +165,7 @@
void InitializeDock(void);
void InitializeDockGui(void);
void InitializeIndustries(void);
-void InitializeLandscape(void);
+void InitializeLandscape(uint log_x, uint log_y);
void InitializeTowns(void);
void InitializeTrees(void);
void InitializeSigns(void);
@@ -187,7 +187,7 @@
void ConvertGroundTilesIntoWaterTiles(void);
-void InitializeGame(void)
+void InitializeGame(uint log_x, uint log_y)
{
// Initialize the autoreplace array. Needs to be cleared between each game
uint i;
@@ -217,7 +217,7 @@
InitializeOrders();
InitNewsItemStructs();
- InitializeLandscape();
+ InitializeLandscape(log_x, log_y);
InitializeClearLand();
InitializeRail();
InitializeRailGui();
@@ -248,7 +248,7 @@
ResetObjectToPlace();
}
-void GenerateWorld(int mode)
+void GenerateWorld(int mode, uint log_x, uint log_y)
{
int i;
@@ -256,7 +256,7 @@
_current_player = OWNER_NONE;
_generating_world = true;
- InitializeGame();
+ InitializeGame(log_x, log_y);
SetObjectToPlace(1, 0, 0, 0);
// Must start economy early because of the costs.
@@ -860,6 +860,28 @@
SlGlobList(_view_desc);
}
+static uint32 _map_dim_x;
+static uint32 _map_dim_y;
+
+static const SaveLoadGlobVarList _map_dimensions[] = {
+ {&_map_dim_x, SLE_UINT32, 6, 255},
+ {&_map_dim_y, SLE_UINT32, 6, 255},
+ {NULL, 0, 0, 0}
+};
+
+static void Save_MAPSIZE(void)
+{
+ _map_dim_x = MapLogX();
+ _map_dim_y = MapLogY();
+ SlGlobList(_map_dimensions);
+}
+
+static void Load_MAPSIZE(void)
+{
+ SlGlobList(_map_dimensions);
+ InitMap(_map_dim_x, _map_dim_y);
+}
+
static void SaveLoad_MAPT(void)
{
SlArray(_map_type_and_height, MapSize(), SLE_UINT8);
@@ -928,6 +950,7 @@
const ChunkHandler _misc_chunk_handlers[] = {
+ { 'MAPS', Save_MAPSIZE, Load_MAPSIZE, CH_RIFF },
{ 'MAPT', SaveLoad_MAPT, SaveLoad_MAPT, CH_RIFF },
{ 'MAP2', SaveLoad_MAP2, SaveLoad_MAP2, CH_RIFF },
{ 'M3LO', SaveLoad_M3LO, SaveLoad_M3LO, CH_RIFF },