54 _opt_newgame.landscape = landscape; |
45 _opt_newgame.landscape = landscape; |
55 InvalidateWindowClasses(WC_SELECT_GAME); |
46 InvalidateWindowClasses(WC_SELECT_GAME); |
56 InvalidateWindowClasses(WC_GENERATE_LANDSCAPE); |
47 InvalidateWindowClasses(WC_GENERATE_LANDSCAPE); |
57 } |
48 } |
58 |
49 |
|
50 enum GenerateLandscapeWindowWidgets { |
|
51 GLAND_TEMPERATE = 3, |
|
52 GLAND_ARCTIC, |
|
53 GLAND_TROPICAL, |
|
54 GLAND_TOYLAND, |
|
55 |
|
56 GLAND_MAPSIZE_X_TEXT, |
|
57 GLAND_MAPSIZE_X_PULLDOWN, |
|
58 GLAND_MAPSIZE_Y_TEXT, |
|
59 GLAND_MAPSIZE_Y_PULLDOWN, |
|
60 |
|
61 GLAND_TOWN_TEXT, |
|
62 GLAND_TOWN_PULLDOWN, |
|
63 GLAND_INDUSTRY_TEXT, |
|
64 GLAND_INDUSTRY_PULLDOWN, |
|
65 |
|
66 GLAND_RANDOM_EDITBOX, |
|
67 GLAND_RANDOM_BUTTON, |
|
68 |
|
69 GLAND_GENERATE_BUTTON, |
|
70 |
|
71 GLAND_START_DATE_DOWN, |
|
72 GLAND_START_DATE_TEXT, |
|
73 GLAND_START_DATE_UP, |
|
74 |
|
75 GLAND_SNOW_LEVEL_DOWN, |
|
76 GLAND_SNOW_LEVEL_TEXT, |
|
77 GLAND_SNOW_LEVEL_UP, |
|
78 |
|
79 GLAND_TREE_TEXT, |
|
80 GLAND_TREE_PULLDOWN, |
|
81 GLAND_LANDSCAPE_TEXT, |
|
82 GLAND_LANDSCAPE_PULLDOWN, |
|
83 GLAND_HEIGHTMAP_ROTATION_TEXT = GLAND_LANDSCAPE_TEXT, |
|
84 GLAND_HEIGHTMAP_ROTATION_PULLDOWN = GLAND_LANDSCAPE_PULLDOWN, |
|
85 |
|
86 GLAND_TERRAIN_TEXT, |
|
87 GLAND_TERRAIN_PULLDOWN, |
|
88 GLAND_WATER_TEXT, |
|
89 GLAND_WATER_PULLDOWN, |
|
90 GLAND_SMOOTHNESS_TEXT, |
|
91 GLAND_SMOOTHNESS_PULLDOWN |
|
92 }; |
|
93 |
59 static const Widget _generate_landscape_widgets[] = { |
94 static const Widget _generate_landscape_widgets[] = { |
60 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
95 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
61 { WWT_CAPTION, RESIZE_NONE, 13, 11, 337, 0, 13, STR_WORLD_GENERATION_CAPTION, STR_NULL}, |
96 { WWT_CAPTION, RESIZE_NONE, 13, 11, 337, 0, 13, STR_WORLD_GENERATION_CAPTION, STR_NULL}, |
62 { WWT_PANEL, RESIZE_NONE, 13, 0, 337, 14, 267, 0x0, STR_NULL}, |
97 { WWT_PANEL, RESIZE_NONE, 13, 0, 337, 14, 267, 0x0, STR_NULL}, |
63 |
98 |
89 { WWT_PANEL, RESIZE_NONE, 12, 294, 314, 130, 141, 0x0, STR_NULL}, |
124 { WWT_PANEL, RESIZE_NONE, 12, 294, 314, 130, 141, 0x0, STR_NULL}, |
90 { WWT_IMGBTN, RESIZE_NONE, 12, 315, 326, 130, 141, SPR_ARROW_UP, STR_SNOW_LINE_UP}, |
125 { WWT_IMGBTN, RESIZE_NONE, 12, 315, 326, 130, 141, SPR_ARROW_UP, STR_SNOW_LINE_UP}, |
91 |
126 |
92 { WWT_PANEL, RESIZE_NONE, 12, 114, 219, 192, 203, 0x0, STR_NULL}, |
127 { WWT_PANEL, RESIZE_NONE, 12, 114, 219, 192, 203, 0x0, STR_NULL}, |
93 { WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 192, 203, STR_0225, STR_NULL}, // Tree placer |
128 { WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 192, 203, STR_0225, STR_NULL}, // Tree placer |
94 |
|
95 { WWT_PANEL, RESIZE_NONE, 12, 114, 219, 174, 185, 0x0, STR_NULL}, |
129 { WWT_PANEL, RESIZE_NONE, 12, 114, 219, 174, 185, 0x0, STR_NULL}, |
96 { WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 174, 185, STR_0225, STR_NULL}, // Landscape generator |
130 { WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 174, 185, STR_0225, STR_NULL}, // Landscape generator |
97 { WWT_PANEL, RESIZE_NONE, 12, 114, 219, 210, 221, 0x0, STR_NULL}, |
131 { WWT_PANEL, RESIZE_NONE, 12, 114, 219, 210, 221, 0x0, STR_NULL}, |
98 { WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 210, 221, STR_0225, STR_NULL}, // Terrain type |
132 { WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 210, 221, STR_0225, STR_NULL}, // Terrain type |
99 { WWT_PANEL, RESIZE_NONE, 12, 113, 219, 228, 239, 0x0, STR_NULL}, |
133 { WWT_PANEL, RESIZE_NONE, 12, 113, 219, 228, 239, 0x0, STR_NULL}, |
180 static const StringID num_towns[] = {STR_6816_LOW, STR_6817_NORMAL, STR_6818_HIGH, INVALID_STRING_ID}; |
214 static const StringID num_towns[] = {STR_6816_LOW, STR_6817_NORMAL, STR_6818_HIGH, INVALID_STRING_ID}; |
181 static const StringID num_inds[] = {STR_26816_NONE, STR_6816_LOW, STR_6817_NORMAL, STR_6818_HIGH, INVALID_STRING_ID}; |
215 static const StringID num_inds[] = {STR_26816_NONE, STR_6816_LOW, STR_6817_NORMAL, STR_6818_HIGH, INVALID_STRING_ID}; |
182 |
216 |
183 /* Data used for the generate seed edit box */ |
217 /* Data used for the generate seed edit box */ |
184 static querystr_d _genseed_query; |
218 static querystr_d _genseed_query; |
185 static char _genseed_buffer[LEN_RND_SEED]; |
219 static char _genseed_buffer[11]; |
186 |
220 |
187 glwp_modes mode = (glwp_modes)w->window_number; |
221 glwp_modes mode = (glwp_modes)w->window_number; |
188 uint y; |
222 uint y; |
189 |
223 |
190 switch (e->event) { |
224 switch (e->event) { |
191 case WE_CREATE: |
225 case WE_CREATE: |
192 LowerWindowWidget(w, _opt_newgame.landscape + 3); |
226 LowerWindowWidget(w, _opt_newgame.landscape + GLAND_TEMPERATE); |
193 |
227 |
194 snprintf(_genseed_buffer, sizeof(_genseed_buffer), "%u", _patches_newgame.generation_seed); |
228 snprintf(_genseed_buffer, sizeof(_genseed_buffer), "%u", _patches_newgame.generation_seed); |
195 InitializeTextBuffer(&_genseed_query.text, _genseed_buffer, lengthof(_genseed_buffer), 120); |
229 InitializeTextBuffer(&_genseed_query.text, _genseed_buffer, lengthof(_genseed_buffer), 120); |
196 _genseed_query.caption = STR_NULL; |
230 _genseed_query.caption = STR_NULL; |
197 _genseed_query.afilter = CS_NUMERAL; |
231 _genseed_query.afilter = CS_NUMERAL; |
198 break; |
232 break; |
199 |
233 |
200 case WE_PAINT: |
234 case WE_PAINT: |
201 /* You can't select smoothness if not terragenesis */ |
235 /* You can't select smoothness if not terragenesis */ |
202 if (mode == GLWP_GENERATE) { |
236 if (mode == GLWP_GENERATE) { |
203 SetWindowWidgetDisabledState(w, 32, _patches_newgame.land_generator == 0); |
237 SetWindowWidgetDisabledState(w, GLAND_SMOOTHNESS_TEXT, _patches_newgame.land_generator == 0); |
204 SetWindowWidgetDisabledState(w, 33, _patches_newgame.land_generator == 0); |
238 SetWindowWidgetDisabledState(w, GLAND_SMOOTHNESS_PULLDOWN, _patches_newgame.land_generator == 0); |
205 } |
239 } |
206 /* Disable snowline if not hilly */ |
240 /* Disable snowline if not hilly */ |
207 SetWindowWidgetDisabledState(w, 22, _opt_newgame.landscape != LT_HILLY); |
241 SetWindowWidgetDisabledState(w, GLAND_SNOW_LEVEL_TEXT, _opt_newgame.landscape != LT_HILLY); |
208 /* Disable town and industry in SE */ |
242 /* Disable town, industry and trees in SE */ |
209 SetWindowWidgetDisabledState(w, 11, _game_mode == GM_EDITOR); |
243 SetWindowWidgetDisabledState(w, GLAND_TOWN_TEXT, _game_mode == GM_EDITOR); |
210 SetWindowWidgetDisabledState(w, 12, _game_mode == GM_EDITOR); |
244 SetWindowWidgetDisabledState(w, GLAND_TOWN_PULLDOWN, _game_mode == GM_EDITOR); |
211 SetWindowWidgetDisabledState(w, 13, _game_mode == GM_EDITOR); |
245 SetWindowWidgetDisabledState(w, GLAND_INDUSTRY_TEXT, _game_mode == GM_EDITOR); |
212 SetWindowWidgetDisabledState(w, 14, _game_mode == GM_EDITOR); |
246 SetWindowWidgetDisabledState(w, GLAND_INDUSTRY_PULLDOWN, _game_mode == GM_EDITOR); |
213 SetWindowWidgetDisabledState(w, 24, _game_mode == GM_EDITOR); |
247 SetWindowWidgetDisabledState(w, GLAND_TREE_TEXT, _game_mode == GM_EDITOR); |
214 SetWindowWidgetDisabledState(w, 25, _game_mode == GM_EDITOR); |
248 SetWindowWidgetDisabledState(w, GLAND_TREE_PULLDOWN, _game_mode == GM_EDITOR); |
215 |
249 |
216 SetWindowWidgetDisabledState(w, 18, _patches_newgame.starting_year <= MIN_YEAR); |
250 SetWindowWidgetDisabledState(w, GLAND_START_DATE_DOWN, _patches_newgame.starting_year <= MIN_YEAR); |
217 SetWindowWidgetDisabledState(w, 20, _patches_newgame.starting_year >= MAX_YEAR); |
251 SetWindowWidgetDisabledState(w, GLAND_START_DATE_UP, _patches_newgame.starting_year >= MAX_YEAR); |
218 SetWindowWidgetDisabledState(w, 21, _patches_newgame.snow_line_height <= 2 || _opt_newgame.landscape != LT_HILLY); |
252 SetWindowWidgetDisabledState(w, GLAND_SNOW_LEVEL_DOWN, _patches_newgame.snow_line_height <= 2 || _opt_newgame.landscape != LT_HILLY); |
219 SetWindowWidgetDisabledState(w, 23, _patches_newgame.snow_line_height >= 13 || _opt_newgame.landscape != LT_HILLY); |
253 SetWindowWidgetDisabledState(w, GLAND_SNOW_LEVEL_UP, _patches_newgame.snow_line_height >= 13 || _opt_newgame.landscape != LT_HILLY); |
220 |
254 |
221 SetWindowWidgetLoweredState(w, 3, _opt_newgame.landscape == LT_NORMAL); |
255 SetWindowWidgetLoweredState(w, GLAND_TEMPERATE, _opt_newgame.landscape == LT_NORMAL); |
222 SetWindowWidgetLoweredState(w, 4, _opt_newgame.landscape == LT_HILLY); |
256 SetWindowWidgetLoweredState(w, GLAND_ARCTIC, _opt_newgame.landscape == LT_HILLY); |
223 SetWindowWidgetLoweredState(w, 5, _opt_newgame.landscape == LT_DESERT); |
257 SetWindowWidgetLoweredState(w, GLAND_TROPICAL, _opt_newgame.landscape == LT_DESERT); |
224 SetWindowWidgetLoweredState(w, 6, _opt_newgame.landscape == LT_CANDY); |
258 SetWindowWidgetLoweredState(w, GLAND_TOYLAND, _opt_newgame.landscape == LT_CANDY); |
225 DrawWindowWidgets(w); |
259 DrawWindowWidgets(w); |
226 |
260 |
227 y = (mode == GLWP_HEIGHTMAP) ? 22 : 0; |
261 y = (mode == GLWP_HEIGHTMAP) ? 22 : 0; |
228 |
262 |
229 DrawString( 12, 91 + y, STR_MAPSIZE, 0); |
263 DrawString( 12, 91 + y, STR_MAPSIZE, 0); |
293 |
327 |
294 break; |
328 break; |
295 case WE_CLICK: |
329 case WE_CLICK: |
296 switch (e->we.click.widget) { |
330 switch (e->we.click.widget) { |
297 case 0: DeleteWindow(w); break; |
331 case 0: DeleteWindow(w); break; |
298 case 3: case 4: case 5: case 6: |
332 case GLAND_TEMPERATE: case GLAND_ARCTIC: case GLAND_TROPICAL: case GLAND_TOYLAND: |
299 RaiseWindowWidget(w, _opt_newgame.landscape + 3); |
333 RaiseWindowWidget(w, _opt_newgame.landscape + GLAND_TEMPERATE); |
300 SetNewLandscapeType(e->we.click.widget - 3); |
334 SetNewLandscapeType(e->we.click.widget - GLAND_TEMPERATE); |
301 break; |
335 break; |
302 case 7: case 8: // Mapsize X |
336 case GLAND_MAPSIZE_X_TEXT: case GLAND_MAPSIZE_X_PULLDOWN: // Mapsize X |
303 ShowDropDownMenu(w, mapsizes, _patches_newgame.map_x - 6, 8, 0, 0); |
337 ShowDropDownMenu(w, mapsizes, _patches_newgame.map_x - 6, GLAND_MAPSIZE_X_PULLDOWN, 0, 0); |
304 break; |
338 break; |
305 case 9: case 10: // Mapsize Y |
339 case GLAND_MAPSIZE_Y_TEXT: case GLAND_MAPSIZE_Y_PULLDOWN: // Mapsize Y |
306 ShowDropDownMenu(w, mapsizes, _patches_newgame.map_y - 6, 10, 0, 0); |
340 ShowDropDownMenu(w, mapsizes, _patches_newgame.map_y - 6, GLAND_MAPSIZE_Y_PULLDOWN, 0, 0); |
307 break; |
341 break; |
308 case 11: case 12: // Number of towns |
342 case GLAND_TOWN_TEXT: case GLAND_TOWN_PULLDOWN: // Number of towns |
309 ShowDropDownMenu(w, num_towns, _opt_newgame.diff.number_towns, 12, 0, 0); |
343 ShowDropDownMenu(w, num_towns, _opt_newgame.diff.number_towns, GLAND_TOWN_PULLDOWN, 0, 0); |
310 break; |
344 break; |
311 case 13: case 14: // Number of industries |
345 case GLAND_INDUSTRY_TEXT: case GLAND_INDUSTRY_PULLDOWN: // Number of industries |
312 ShowDropDownMenu(w, num_inds, _opt_newgame.diff.number_industries, 14, 0, 0); |
346 ShowDropDownMenu(w, num_inds, _opt_newgame.diff.number_industries, GLAND_INDUSTRY_PULLDOWN, 0, 0); |
313 break; |
347 break; |
314 case 16: // Random seed |
348 case GLAND_RANDOM_BUTTON: // Random seed |
315 _patches_newgame.generation_seed = InteractiveRandom(); |
349 _patches_newgame.generation_seed = InteractiveRandom(); |
316 snprintf(_genseed_buffer, lengthof(_genseed_buffer), "%u", _patches_newgame.generation_seed); |
350 snprintf(_genseed_buffer, lengthof(_genseed_buffer), "%u", _patches_newgame.generation_seed); |
317 UpdateTextBufferSize(&_genseed_query.text); |
351 UpdateTextBufferSize(&_genseed_query.text); |
318 SetWindowDirty(w); |
352 SetWindowDirty(w); |
319 break; |
353 break; |
320 case 17: // Generate |
354 case GLAND_GENERATE_BUTTON: // Generate |
321 if (mode == GLWP_HEIGHTMAP && ( |
355 if (mode == GLWP_HEIGHTMAP && ( |
322 _heightmap_x * 2 < (1U << _patches_newgame.map_x) || _heightmap_x / 2 > (1U << _patches_newgame.map_x) || |
356 _heightmap_x * 2 < (1U << _patches_newgame.map_x) || _heightmap_x / 2 > (1U << _patches_newgame.map_x) || |
323 _heightmap_y * 2 < (1U << _patches_newgame.map_y) || _heightmap_y / 2 > (1U << _patches_newgame.map_y))) { |
357 _heightmap_y * 2 < (1U << _patches_newgame.map_y) || _heightmap_y / 2 > (1U << _patches_newgame.map_y))) { |
324 ShowQuery( |
358 ShowQuery( |
325 STR_HEIGHTMAP_SCALE_WARNING_CAPTION, |
359 STR_HEIGHTMAP_SCALE_WARNING_CAPTION, |
328 HeightmapScaledTooMuchCallback); |
362 HeightmapScaledTooMuchCallback); |
329 } else { |
363 } else { |
330 StartGeneratingLandscape(mode); |
364 StartGeneratingLandscape(mode); |
331 } |
365 } |
332 break; |
366 break; |
333 case 18: case 20: // Year buttons |
367 case GLAND_START_DATE_DOWN: case GLAND_START_DATE_UP: // Year buttons |
334 /* Don't allow too fast scrolling */ |
368 /* Don't allow too fast scrolling */ |
335 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
369 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
336 HandleButtonClick(w, e->we.click.widget); |
370 HandleButtonClick(w, e->we.click.widget); |
337 SetWindowDirty(w); |
371 SetWindowDirty(w); |
338 |
372 |
339 _patches_newgame.starting_year = clamp(_patches_newgame.starting_year + e->we.click.widget - 19, MIN_YEAR, MAX_YEAR); |
373 _patches_newgame.starting_year = clamp(_patches_newgame.starting_year + e->we.click.widget - GLAND_START_DATE_TEXT, MIN_YEAR, MAX_YEAR); |
340 } |
374 } |
341 _left_button_clicked = false; |
375 _left_button_clicked = false; |
342 break; |
376 break; |
343 case 19: // Year text |
377 case GLAND_START_DATE_TEXT: // Year text |
344 WP(w, def_d).data_3 = START_DATE_QUERY; |
378 WP(w, def_d).data_3 = GLAND_START_DATE_TEXT; |
345 SetDParam(0, _patches_newgame.starting_year); |
379 SetDParam(0, _patches_newgame.starting_year); |
346 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL); |
380 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL); |
347 break; |
381 break; |
348 case 21: case 23: // Snow line buttons |
382 case GLAND_SNOW_LEVEL_DOWN: case GLAND_SNOW_LEVEL_UP: // Snow line buttons |
349 /* Don't allow too fast scrolling */ |
383 /* Don't allow too fast scrolling */ |
350 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
384 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
351 HandleButtonClick(w, e->we.click.widget); |
385 HandleButtonClick(w, e->we.click.widget); |
352 SetWindowDirty(w); |
386 SetWindowDirty(w); |
353 |
387 |
354 _patches_newgame.snow_line_height = clamp(_patches_newgame.snow_line_height + e->we.click.widget - 22, 2, 13); |
388 _patches_newgame.snow_line_height = clamp(_patches_newgame.snow_line_height + e->we.click.widget - GLAND_SNOW_LEVEL_TEXT, 2, 13); |
355 } |
389 } |
356 _left_button_clicked = false; |
390 _left_button_clicked = false; |
357 break; |
391 break; |
358 case 22: // Snow line text |
392 case GLAND_SNOW_LEVEL_TEXT: // Snow line text |
359 WP(w, def_d).data_3 = SNOW_LINE_QUERY; |
393 WP(w, def_d).data_3 = GLAND_SNOW_LEVEL_TEXT; |
360 SetDParam(0, _patches_newgame.snow_line_height); |
394 SetDParam(0, _patches_newgame.snow_line_height); |
361 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_SNOW_LINE_QUERY_CAPT, 3, 100, w, CS_NUMERAL); |
395 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_SNOW_LINE_QUERY_CAPT, 3, 100, w, CS_NUMERAL); |
362 break; |
396 break; |
363 case 24: case 25: // Tree placer |
397 case GLAND_TREE_TEXT: case GLAND_TREE_PULLDOWN: // Tree placer |
364 ShowDropDownMenu(w, tree_placer, _patches_newgame.tree_placer, 25, 0, 0); |
398 ShowDropDownMenu(w, tree_placer, _patches_newgame.tree_placer, GLAND_TREE_PULLDOWN, 0, 0); |
365 break; |
399 break; |
366 case 26: case 27: // Landscape generator OR Heightmap rotation |
400 case GLAND_LANDSCAPE_TEXT: case GLAND_LANDSCAPE_PULLDOWN: // Landscape generator OR Heightmap rotation |
|
401 /*case GLAND_HEIGHTMAP_ROTATION_TEXT: case GLAND_HEIGHTMAP_ROTATION_PULLDOWN:*/ |
367 if (mode == GLWP_HEIGHTMAP) { |
402 if (mode == GLWP_HEIGHTMAP) { |
368 ShowDropDownMenu(w, rotation, _patches_newgame.heightmap_rotation, 27, 0, 0); |
403 ShowDropDownMenu(w, rotation, _patches_newgame.heightmap_rotation, GLAND_HEIGHTMAP_ROTATION_PULLDOWN, 0, 0); |
369 } else { |
404 } else { |
370 ShowDropDownMenu(w, landscape, _patches_newgame.land_generator, 27, 0, 0); |
405 ShowDropDownMenu(w, landscape, _patches_newgame.land_generator, GLAND_LANDSCAPE_PULLDOWN, 0, 0); |
371 } |
406 } |
372 break; |
407 break; |
373 case 28: case 29: // Terrain type |
408 case GLAND_TERRAIN_TEXT: case GLAND_TERRAIN_PULLDOWN: // Terrain type |
374 ShowDropDownMenu(w, elevations, _opt_newgame.diff.terrain_type, 29, 0, 0); |
409 ShowDropDownMenu(w, elevations, _opt_newgame.diff.terrain_type, GLAND_TERRAIN_PULLDOWN, 0, 0); |
375 break; |
410 break; |
376 case 30: case 31: // Water quantity |
411 case GLAND_WATER_TEXT: case GLAND_WATER_PULLDOWN: // Water quantity |
377 ShowDropDownMenu(w, sea_lakes, _opt_newgame.diff.quantity_sea_lakes, 31, 0, 0); |
412 ShowDropDownMenu(w, sea_lakes, _opt_newgame.diff.quantity_sea_lakes, GLAND_WATER_PULLDOWN, 0, 0); |
378 break; |
413 break; |
379 case 32: case 33: // Map smoothness |
414 case GLAND_SMOOTHNESS_TEXT: case GLAND_SMOOTHNESS_PULLDOWN: // Map smoothness |
380 ShowDropDownMenu(w, smoothness, _patches_newgame.tgen_smoothness, 33, 0, 0); |
415 ShowDropDownMenu(w, smoothness, _patches_newgame.tgen_smoothness, GLAND_SMOOTHNESS_PULLDOWN, 0, 0); |
381 break; |
416 break; |
382 } |
417 } |
383 break; |
418 break; |
384 |
419 |
385 case WE_MOUSELOOP: |
420 case WE_MOUSELOOP: |
386 HandleEditBox(w, &_genseed_query, SEED_EDIT); |
421 HandleEditBox(w, &_genseed_query, GLAND_RANDOM_EDITBOX); |
387 break; |
422 break; |
388 |
423 |
389 case WE_KEYPRESS: |
424 case WE_KEYPRESS: |
390 HandleEditBoxKey(w, &_genseed_query, SEED_EDIT, e); |
425 HandleEditBoxKey(w, &_genseed_query, GLAND_RANDOM_EDITBOX, e); |
391 /* the seed is unsigned, therefore atoi cannot be used. |
426 /* the seed is unsigned, therefore atoi cannot be used. |
392 * As 2^32 - 1 (MAX_UVALUE(uint32)) is a 'magic' value |
427 * As 2^32 - 1 (MAX_UVALUE(uint32)) is a 'magic' value |
393 * (use random seed) it should not be possible to be |
428 * (use random seed) it should not be possible to be |
394 * entered into the input field; the generate seed |
429 * entered into the input field; the generate seed |
395 * button can be used instead. */ |
430 * button can be used instead. */ |
396 _patches_newgame.generation_seed = minu(strtoul(_genseed_buffer, NULL, sizeof(_genseed_buffer) - 1), MAX_UVALUE(uint32) - 1); |
431 _patches_newgame.generation_seed = minu(strtoul(_genseed_buffer, NULL, sizeof(_genseed_buffer) - 1), MAX_UVALUE(uint32) - 1); |
397 break; |
432 break; |
398 |
433 |
399 case WE_DROPDOWN_SELECT: |
434 case WE_DROPDOWN_SELECT: |
400 switch (e->we.dropdown.button) { |
435 switch (e->we.dropdown.button) { |
401 case 8: _patches_newgame.map_x = e->we.dropdown.index + 6; break; |
436 case GLAND_MAPSIZE_X_PULLDOWN: _patches_newgame.map_x = e->we.dropdown.index + 6; break; |
402 case 10: _patches_newgame.map_y = e->we.dropdown.index + 6; break; |
437 case GLAND_MAPSIZE_Y_PULLDOWN: _patches_newgame.map_y = e->we.dropdown.index + 6; break; |
403 case 12: |
438 case GLAND_TREE_PULLDOWN: _patches_newgame.tree_placer = e->we.dropdown.index; break; |
|
439 case GLAND_SMOOTHNESS_PULLDOWN: _patches_newgame.tgen_smoothness = e->we.dropdown.index; break; |
|
440 |
|
441 case GLAND_TOWN_PULLDOWN: |
404 _opt_newgame.diff.number_towns = e->we.dropdown.index; |
442 _opt_newgame.diff.number_towns = e->we.dropdown.index; |
405 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
443 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
406 DoCommandP(0, 2, _opt_newgame.diff.number_towns, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
444 DoCommandP(0, 2, _opt_newgame.diff.number_towns, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
407 break; |
445 break; |
408 case 14: |
446 case GLAND_INDUSTRY_PULLDOWN: |
409 _opt_newgame.diff.number_industries = e->we.dropdown.index; |
447 _opt_newgame.diff.number_industries = e->we.dropdown.index; |
410 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
448 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
411 DoCommandP(0, 3, _opt_newgame.diff.number_industries, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
449 DoCommandP(0, 3, _opt_newgame.diff.number_industries, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
412 break; |
450 break; |
413 case 25: |
451 case GLAND_LANDSCAPE_PULLDOWN: |
414 _patches_newgame.tree_placer = e->we.dropdown.index; |
452 /*case GLAND_HEIGHTMAP_PULLDOWN: */ |
415 break; |
|
416 case 27: |
|
417 if (mode == GLWP_HEIGHTMAP) { |
453 if (mode == GLWP_HEIGHTMAP) { |
418 _patches_newgame.heightmap_rotation = e->we.dropdown.index; |
454 _patches_newgame.heightmap_rotation = e->we.dropdown.index; |
419 } else { |
455 } else { |
420 _patches_newgame.land_generator = e->we.dropdown.index; |
456 _patches_newgame.land_generator = e->we.dropdown.index; |
421 } |
457 } |
422 break; |
458 break; |
423 case 29: |
459 case GLAND_TERRAIN_PULLDOWN: |
424 _opt_newgame.diff.terrain_type = e->we.dropdown.index; |
460 _opt_newgame.diff.terrain_type = e->we.dropdown.index; |
425 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
461 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
426 DoCommandP(0, 12, _opt_newgame.diff.terrain_type, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
462 DoCommandP(0, 12, _opt_newgame.diff.terrain_type, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
427 break; |
463 break; |
428 case 31: |
464 case GLAND_WATER_PULLDOWN: |
429 _opt_newgame.diff.quantity_sea_lakes = e->we.dropdown.index; |
465 _opt_newgame.diff.quantity_sea_lakes = e->we.dropdown.index; |
430 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
466 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
431 DoCommandP(0, 13, _opt_newgame.diff.quantity_sea_lakes, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
467 DoCommandP(0, 13, _opt_newgame.diff.quantity_sea_lakes, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
432 break; |
468 break; |
433 case 33: |
|
434 _patches_newgame.tgen_smoothness = e->we.dropdown.index; |
|
435 break; |
|
436 } |
469 } |
437 SetWindowDirty(w); |
470 SetWindowDirty(w); |
438 break; |
471 break; |
439 |
472 |
440 case WE_ON_EDIT_TEXT: { |
473 case WE_ON_EDIT_TEXT: { |
441 if (e->we.edittext.str != NULL) { |
474 if (e->we.edittext.str != NULL) { |
442 int32 value = atoi(e->we.edittext.str); |
475 int32 value = atoi(e->we.edittext.str); |
443 |
476 |
444 switch (WP(w, def_d).data_3) { |
477 switch (WP(w, def_d).data_3) { |
445 case START_DATE_QUERY: |
478 case GLAND_START_DATE_TEXT: |
446 InvalidateWidget(w, 19); |
479 InvalidateWidget(w, GLAND_START_DATE_TEXT); |
447 _patches_newgame.starting_year = clamp(value, MIN_YEAR, MAX_YEAR); |
480 _patches_newgame.starting_year = clamp(value, MIN_YEAR, MAX_YEAR); |
448 break; |
481 break; |
449 case SNOW_LINE_QUERY: |
482 case GLAND_SNOW_LEVEL_TEXT: |
450 InvalidateWidget(w, 22); |
483 InvalidateWidget(w, GLAND_SNOW_LEVEL_TEXT); |
451 _patches_newgame.snow_line_height = clamp(value, 2, 13); |
484 _patches_newgame.snow_line_height = clamp(value, 2, 13); |
452 break; |
485 break; |
453 } |
486 } |
454 |
487 |
455 SetWindowDirty(w); |
488 SetWindowDirty(w); |