(svn r3875) - [Patches] Fix up the intro menu so the right values for the mapsize are shown (the default ones). Setting the value involves a small hack in that we also set the _patches value because that is used for world-generation and only inside there do the values get copied from _newgame
authorDarkvater
Tue, 14 Mar 2006 22:58:46 +0000
changeset 3207 a06b4a8b573c
parent 3206 7635c2101f2e
child 3208 768144ca6380
(svn r3875) - [Patches] Fix up the intro menu so the right values for the mapsize are shown (the default ones). Setting the value involves a small hack in that we also set the _patches value because that is used for world-generation and only inside there do the values get copied from _newgame
- [Patches] Fix a stupid, stupid bug where I used sizeof() as length instead of strlen() in getting console values for patches.
intro_gui.c
settings.c
--- a/intro_gui.c	Tue Mar 14 22:56:22 2006 +0000
+++ b/intro_gui.c	Tue Mar 14 22:58:46 2006 +0000
@@ -54,6 +54,7 @@
 {
 	/* We do +/- 6 for the map_xy because 64 is 2^6, but it is the lowest available element */
 	static const StringID mapsizes[] = {STR_64, STR_128, STR_256, STR_512, STR_1024, STR_2048, INVALID_STRING_ID};
+	extern Patches _patches_newgame;
 
 	switch (e->event) {
 	case WE_PAINT:
@@ -62,9 +63,9 @@
 		DrawWindowWidgets(w);
 
 		DrawStringRightAligned(216, 121, STR_MAPSIZE, 0);
-		DrawString(223, 121, mapsizes[_patches.map_x - 6], 0x10);
+		DrawString(223, 121, mapsizes[_patches_newgame.map_x - 6], 0x10);
 		DrawString(270, 121, STR_BY, 0);
-		DrawString(283, 121, mapsizes[_patches.map_y - 6], 0x10);
+		DrawString(283, 121, mapsizes[_patches_newgame.map_y - 6], 0x10);
 		break;
 
 	case WE_CLICK:
@@ -77,10 +78,10 @@
 			SetNewLandscapeType(e->click.widget - 6);
 			break;
 		case 10: case 11: /* Mapsize X */
-			ShowDropDownMenu(w, mapsizes, _patches.map_x - 6, 11, 0, 0);
+			ShowDropDownMenu(w, mapsizes, _patches_newgame.map_x - 6, 11, 0, 0);
 			break;
 		case 12: case 13: /* Mapsize Y */
-			ShowDropDownMenu(w, mapsizes, _patches.map_y - 6, 13, 0, 0);
+			ShowDropDownMenu(w, mapsizes, _patches_newgame.map_y - 6, 13, 0, 0);
 			break;
 		case 15:
 #ifdef ENABLE_NETWORK
@@ -104,8 +105,11 @@
 
 	case WE_DROPDOWN_SELECT: /* Mapsize selection */
 		switch (e->dropdown.button) {
-			case 11: _patches.map_x = e->dropdown.index + 6; break;
-			case 13: _patches.map_y = e->dropdown.index + 6; break;
+			/* We need a *hacky* here because generateworld is called with _patches
+			 * but it only gets the new value INSIDE generateworld so not setting it would
+			 * break generating a new game on the run (eg MP) */
+			case 11: _patches.map_x = _patches_newgame.map_x = e->dropdown.index + 6; break;
+			case 13: _patches.map_y = _patches_newgame.map_y = e->dropdown.index + 6; break;
 		}
 		SetWindowDirty(w);
 		break;
--- a/settings.c	Tue Mar 14 22:56:22 2006 +0000
+++ b/settings.c	Tue Mar 14 22:58:46 2006 +0000
@@ -1420,7 +1420,7 @@
 	const SettingDesc *sd;
 
 	for (*i = 0, sd = _patch_settings; sd->save.cmd != SL_END; sd++, (*i)++) {
-		if (strncmp(sd->desc.name, name, sizeof(sd->desc.name)) == 0) return sd;
+		if (strncmp(sd->desc.name, name, strlen(sd->desc.name)) == 0) return sd;
 	}
 
 	return NULL;