From 61444c8518998321a32c3dce9f2c3ec0780cb401 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Mon, 26 Oct 2015 10:21:04 +0100 Subject: [PATCH 1/2] Display the visible/practical map size instead of the technical size, fixes #2133 --- src/windows/map.c | 20 +++++++++++++------- src/windows/mapgen.c | 40 +++++++++++++++++++++++++++------------- 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/src/windows/map.c b/src/windows/map.c index e8174c9ed4..8376340cf7 100644 --- a/src/windows/map.c +++ b/src/windows/map.c @@ -36,6 +36,11 @@ #define MINIMUM_TOOL_SIZE 1 #define MAXIMUM_TOOL_SIZE 64 +#define MINIMUM_MAP_SIZE_TECHNICAL 15 +#define MAXIMUM_MAP_SIZE_TECHNICAL 256 +#define MINIMUM_MAP_SIZE_PRACTICAL MINIMUM_MAP_SIZE_TECHNICAL-2 +#define MAXIMUM_MAP_SIZE_PRACTICAL MAXIMUM_MAP_SIZE_TECHNICAL-2 + enum { PAGE_PEEPS, PAGE_RIDES @@ -604,8 +609,7 @@ static void window_map_textinput(rct_window *w, int widgetIndex, char *text) case WIDX_LAND_TOOL: size = strtol(text, &end, 10); if (*end == '\0') { - size = max(MINIMUM_TOOL_SIZE,size); - size = min(MAXIMUM_TOOL_SIZE,size); + size = clamp(MINIMUM_TOOL_SIZE, size, MAXIMUM_TOOL_SIZE); RCT2_GLOBAL(RCT2_ADDRESS_LAND_TOOL_SIZE, sint16) = size; window_invalidate(w); } @@ -613,8 +617,10 @@ static void window_map_textinput(rct_window *w, int widgetIndex, char *text) case WIDX_MAP_SIZE_SPINNER: size = strtol(text, &end, 10); if (*end == '\0') { - if (size < 50) size = 50; - if (size > 256) size = 256; + // The practical size is 2 lower than the technical size + size += 2; + size=clamp(MINIMUM_MAP_SIZE_TECHNICAL, size, MAXIMUM_MAP_SIZE_TECHNICAL); + int currentSize = RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE, uint16); while (size < currentSize) { map_window_decrease_map_size(); @@ -924,7 +930,7 @@ static void window_map_show_default_scenario_editor_buttons(rct_window *w) { w->widgets[WIDX_MAP_SIZE_SPINNER].type = WWT_SPINNER; w->widgets[WIDX_MAP_SIZE_SPINNER_UP].type = WWT_DROPDOWN_BUTTON; w->widgets[WIDX_MAP_SIZE_SPINNER_DOWN].type = WWT_DROPDOWN_BUTTON; - RCT2_GLOBAL(0x013CE952 + 2, uint16) = RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE, uint16); + RCT2_GLOBAL(0x013CE952 + 2, uint16) = RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE, uint16) - 2; } static void window_map_inputsize_land(rct_window *w) @@ -936,8 +942,8 @@ static void window_map_inputsize_land(rct_window *w) static void window_map_inputsize_map(rct_window *w) { - ((uint16*)TextInputDescriptionArgs)[0] = 50; - ((uint16*)TextInputDescriptionArgs)[1] = 256; + ((uint16*)TextInputDescriptionArgs)[0] = 13; + ((uint16*)TextInputDescriptionArgs)[1] = 254; window_text_input_open(w, WIDX_MAP_SIZE_SPINNER, 5130, 5131, STR_NONE, STR_NONE, 4); } diff --git a/src/windows/mapgen.c b/src/windows/mapgen.c index dd7336dd70..2c46c69e47 100644 --- a/src/windows/mapgen.c +++ b/src/windows/mapgen.c @@ -289,7 +289,7 @@ static rct_window_event_list window_mapgen_simplex_events = { NULL, NULL, NULL, - NULL, + window_mapgen_textinput, NULL, NULL, NULL, @@ -392,8 +392,10 @@ static uint32 window_mapgen_page_hold_down_widgets[] = { const int window_mapgen_tab_animation_loops[] = { 16, 16 }; -#define MAPSIZE_MIN 16 -#define MAPSIZE_MAX 256 +#define MINIMUM_MAP_SIZE_TECHNICAL 15 +#define MAXIMUM_MAP_SIZE_TECHNICAL 256 +#define MINIMUM_MAP_SIZE_PRACTICAL MINIMUM_MAP_SIZE_TECHNICAL-2 +#define MAXIMUM_MAP_SIZE_PRACTICAL MAXIMUM_MAP_SIZE_TECHNICAL-2 #define BASESIZE_MIN 0 #define BASESIZE_MAX 60 #define WATERLEVEL_MIN 0 @@ -485,9 +487,10 @@ static void window_mapgen_base_mouseup(rct_window *w, int widgetIndex) gfx_invalidate_screen(); break; case WIDX_MAP_SIZE: - ((uint16*)TextInputDescriptionArgs)[0] = MAPSIZE_MIN; - ((uint16*)TextInputDescriptionArgs)[1] = MAPSIZE_MAX; - window_text_input_open(w, WIDX_MAP_SIZE, 5130, 5131, 5182, _mapSize, 4); + ((uint16*)TextInputDescriptionArgs)[0] = MINIMUM_MAP_SIZE_PRACTICAL; + ((uint16*)TextInputDescriptionArgs)[1] = MAXIMUM_MAP_SIZE_PRACTICAL; + // Practical map size is 2 lower than the technical map size + window_text_input_open(w, WIDX_MAP_SIZE, 5130, 5131, 5182, _mapSize - 2, 4); break; case WIDX_BASE_HEIGHT: ((uint16*)TextInputDescriptionArgs)[0] = (BASESIZE_MIN - 12) / 2; @@ -508,11 +511,11 @@ static void window_mapgen_base_mousedown(int widgetIndex, rct_window *w, rct_wid switch (widgetIndex) { case WIDX_MAP_SIZE_UP: - _mapSize = min(_mapSize + 1, MAPSIZE_MAX); + _mapSize = min(_mapSize + 1, MAXIMUM_MAP_SIZE_TECHNICAL); window_invalidate(w); break; case WIDX_MAP_SIZE_DOWN: - _mapSize = max(_mapSize - 1, MAPSIZE_MIN); + _mapSize = max(_mapSize - 1, MINIMUM_MAP_SIZE_TECHNICAL); window_invalidate(w); break; case WIDX_BASE_HEIGHT_UP: @@ -632,7 +635,10 @@ static void window_mapgen_textinput(rct_window *w, int widgetIndex, char *text) switch (widgetIndex) { case WIDX_MAP_SIZE: - _mapSize = clamp(MAPSIZE_MIN, value, MAPSIZE_MAX); + case WIDX_SIMPLEX_MAP_SIZE: + // The practical size is 2 lower than the technical size + value += 2; + _mapSize = clamp(MINIMUM_MAP_SIZE_TECHNICAL, value, MAXIMUM_MAP_SIZE_TECHNICAL); break; case WIDX_BASE_HEIGHT: _baseHeight = clamp(BASESIZE_MIN, (value * 2) + 12, BASESIZE_MAX); @@ -674,7 +680,8 @@ static void window_mapgen_base_paint(rct_window *w, rct_drawpixelinfo *dpi) gfx_draw_string_left(dpi, 2692, 0, 0, w->x + 4, w->y + w->widgets[WIDX_WATER_LEVEL].top + 1); gfx_draw_string_left(dpi, 2693, 0, 0, w->x + 4, w->y + w->widgets[WIDX_FLOOR_TEXTURE].top + 1); - uint16 mapSizeArgs[2] = { _mapSize, _mapSize }; + // The practical map size is 2 lower than the technical map size + uint16 mapSizeArgs[2] = { _mapSize - 2, _mapSize -2 }; gfx_draw_string_left(dpi, 839, mapSizeArgs, w->colours[1], w->x + w->widgets[WIDX_MAP_SIZE].left + 1, w->y + w->widgets[WIDX_MAP_SIZE].top + 1); arg = (_baseHeight - 12) / 2; @@ -781,6 +788,12 @@ static void window_mapgen_simplex_mouseup(rct_window *w, int widgetIndex) case WIDX_TAB_3: window_mapgen_set_page(w, widgetIndex - WIDX_TAB_1); break; + case WIDX_SIMPLEX_MAP_SIZE: + ((uint16*)TextInputDescriptionArgs)[0] = MINIMUM_MAP_SIZE_PRACTICAL; + ((uint16*)TextInputDescriptionArgs)[1] = MAXIMUM_MAP_SIZE_PRACTICAL; + // Practical map size is 2 lower than the technical map size + window_text_input_open(w, WIDX_SIMPLEX_MAP_SIZE, 5130, 5131, 5182, _mapSize - 2, 4); + break; case WIDX_GENERATE: mapgenSettings.mapSize = _mapSize; @@ -839,11 +852,11 @@ static void window_mapgen_simplex_mousedown(int widgetIndex, rct_window *w, rct_ window_invalidate(w); break; case WIDX_SIMPLEX_MAP_SIZE_UP: - _mapSize = min(_mapSize + 1, 256); + _mapSize = min(_mapSize + 1, MAXIMUM_MAP_SIZE_TECHNICAL); window_invalidate(w); break; case WIDX_SIMPLEX_MAP_SIZE_DOWN: - _mapSize = max(_mapSize - 1, 16); + _mapSize = max(_mapSize - 1, MINIMUM_MAP_SIZE_TECHNICAL); window_invalidate(w); break; case WIDX_SIMPLEX_WATER_LEVEL_UP: @@ -976,7 +989,8 @@ static void window_mapgen_simplex_paint(rct_window *w, rct_drawpixelinfo *dpi) gfx_draw_string_left(dpi, 3311, &_simplex_base_freq, w->colours[1], w->x + w->widgets[WIDX_SIMPLEX_BASE_FREQ].left + 1, w->y + w->widgets[WIDX_SIMPLEX_BASE_FREQ].top + 1); gfx_draw_string_left(dpi, 1737, &_simplex_octaves, w->colours[1], w->x + w->widgets[WIDX_SIMPLEX_OCTAVES].left + 1, w->y + w->widgets[WIDX_SIMPLEX_OCTAVES].top + 1); - uint16 mapSizeArgs[2] = { _mapSize, _mapSize }; + // The practical map size is 2 lower than the technical map size + uint16 mapSizeArgs[2] = { _mapSize - 2, _mapSize - 2 }; gfx_draw_string_left(dpi, 839, mapSizeArgs, w->colours[1], w->x + w->widgets[WIDX_SIMPLEX_MAP_SIZE].left + 1, w->y + w->widgets[WIDX_SIMPLEX_MAP_SIZE].top + 1); arg = (_waterLevel - 12) / 2; From 9504f3f10da3ef9fadd8fe92a036148b8144e7c4 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Mon, 26 Oct 2015 13:53:26 +0100 Subject: [PATCH 2/2] Replace missed occurrence of magic numbers with defines --- src/windows/map.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/windows/map.c b/src/windows/map.c index 8376340cf7..e69939c38d 100644 --- a/src/windows/map.c +++ b/src/windows/map.c @@ -942,8 +942,8 @@ static void window_map_inputsize_land(rct_window *w) static void window_map_inputsize_map(rct_window *w) { - ((uint16*)TextInputDescriptionArgs)[0] = 13; - ((uint16*)TextInputDescriptionArgs)[1] = 254; + ((uint16*)TextInputDescriptionArgs)[0] = MINIMUM_MAP_SIZE_PRACTICAL; + ((uint16*)TextInputDescriptionArgs)[1] = MAXIMUM_MAP_SIZE_PRACTICAL; window_text_input_open(w, WIDX_MAP_SIZE_SPINNER, 5130, 5131, STR_NONE, STR_NONE, 4); }