(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.
replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
Darkvater 19 years ago
parent 76a7d159db
commit cd1dea52ca

@ -54,6 +54,7 @@ static void SelectGameWndProc(Window *w, WindowEvent *e)
{ {
/* We do +/- 6 for the map_xy because 64 is 2^6, but it is the lowest available element */ /* 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}; 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) { switch (e->event) {
case WE_PAINT: case WE_PAINT:
@ -62,9 +63,9 @@ static void SelectGameWndProc(Window *w, WindowEvent *e)
DrawWindowWidgets(w); DrawWindowWidgets(w);
DrawStringRightAligned(216, 121, STR_MAPSIZE, 0); 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(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; break;
case WE_CLICK: case WE_CLICK:
@ -77,10 +78,10 @@ static void SelectGameWndProc(Window *w, WindowEvent *e)
SetNewLandscapeType(e->click.widget - 6); SetNewLandscapeType(e->click.widget - 6);
break; break;
case 10: case 11: /* Mapsize X */ 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; break;
case 12: case 13: /* Mapsize Y */ 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; break;
case 15: case 15:
#ifdef ENABLE_NETWORK #ifdef ENABLE_NETWORK
@ -104,8 +105,11 @@ static void SelectGameWndProc(Window *w, WindowEvent *e)
case WE_DROPDOWN_SELECT: /* Mapsize selection */ case WE_DROPDOWN_SELECT: /* Mapsize selection */
switch (e->dropdown.button) { switch (e->dropdown.button) {
case 11: _patches.map_x = e->dropdown.index + 6; break; /* We need a *hacky* here because generateworld is called with _patches
case 13: _patches.map_y = e->dropdown.index + 6; break; * 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); SetWindowDirty(w);
break; break;

@ -1420,7 +1420,7 @@ static const SettingDesc *GetPatchFromName(const char *name, uint *i)
const SettingDesc *sd; const SettingDesc *sd;
for (*i = 0, sd = _patch_settings; sd->save.cmd != SL_END; sd++, (*i)++) { 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; return NULL;

Loading…
Cancel
Save