Merge pull request #5775 from wolfreak99/land_tool_holdable

Make the land tool holdable
This commit is contained in:
Ted John 2017-07-15 12:55:44 +01:00 committed by GitHub
commit 1e71618921
6 changed files with 93 additions and 63 deletions

View File

@ -6,6 +6,7 @@
- Fix: [#5768] Prevent loading non-existent title sequences. - Fix: [#5768] Prevent loading non-existent title sequences.
- Fix: [#5858] Crash when using custom ride with no colour presets. - Fix: [#5858] Crash when using custom ride with no colour presets.
- Fix: [#5872] Incorrect OpenGL rendering of masked sprites - Fix: [#5872] Incorrect OpenGL rendering of masked sprites
- Improved: The land tool buttons can now be held down to increase/decrease size.
- Improved: [#5859] OpenGL rendering performance - Improved: [#5859] OpenGL rendering performance
- Improved: [#5863] Switching drawing engines no longer requires the application to restart. - Improved: [#5863] Switching drawing engines no longer requires the application to restart.

View File

@ -54,6 +54,7 @@ rct_widget window_clear_scenery_widgets[] = {
static void window_clear_scenery_close(rct_window *w); static void window_clear_scenery_close(rct_window *w);
static void window_clear_scenery_mouseup(rct_window *w, rct_widgetindex widgetIndex); static void window_clear_scenery_mouseup(rct_window *w, rct_widgetindex widgetIndex);
static void window_clear_scenery_mousedown(rct_window *w, rct_widgetindex widgetIndex, rct_widget *widget);
static void window_clear_scenery_update(rct_window *w); static void window_clear_scenery_update(rct_window *w);
static void window_clear_scenery_invalidate(rct_window *w); static void window_clear_scenery_invalidate(rct_window *w);
static void window_clear_scenery_paint(rct_window *w, rct_drawpixelinfo *dpi); static void window_clear_scenery_paint(rct_window *w, rct_drawpixelinfo *dpi);
@ -64,7 +65,7 @@ static rct_window_event_list window_clear_scenery_events = {
window_clear_scenery_close, window_clear_scenery_close,
window_clear_scenery_mouseup, window_clear_scenery_mouseup,
NULL, NULL,
NULL, window_clear_scenery_mousedown,
NULL, NULL,
NULL, NULL,
window_clear_scenery_update, window_clear_scenery_update,
@ -107,6 +108,7 @@ void window_clear_scenery_open()
window->widgets = window_clear_scenery_widgets; window->widgets = window_clear_scenery_widgets;
window->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_INCREMENT) | (1 << WIDX_DECREMENT) | (1 << WIDX_PREVIEW) | window->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_INCREMENT) | (1 << WIDX_DECREMENT) | (1 << WIDX_PREVIEW) |
(1 << WIDX_SMALL_SCENERY) | (1 << WIDX_LARGE_SCENERY) | (1 << WIDX_FOOTPATH); (1 << WIDX_SMALL_SCENERY) | (1 << WIDX_LARGE_SCENERY) | (1 << WIDX_FOOTPATH);
window->hold_down_widgets = (1 << WIDX_INCREMENT) | (1 << WIDX_DECREMENT);
window_init_scroll_widgets(window); window_init_scroll_widgets(window);
window_push_others_below(window); window_push_others_below(window);
@ -139,20 +141,6 @@ static void window_clear_scenery_mouseup(rct_window *w, rct_widgetindex widgetIn
case WIDX_CLOSE: case WIDX_CLOSE:
window_close(w); window_close(w);
break; break;
case WIDX_DECREMENT:
// Decrement land tool size, if it stays within the limit
gLandToolSize = max(MINIMUM_TOOL_SIZE, gLandToolSize - 1);
// Invalidate the window
window_invalidate(w);
break;
case WIDX_INCREMENT:
// Increment land tool size, if it stays within the limit
gLandToolSize = min(MAXIMUM_TOOL_SIZE, gLandToolSize + 1);
// Invalidate the window
window_invalidate(w);
break;
case WIDX_PREVIEW: case WIDX_PREVIEW:
window_clear_scenery_inputsize(w); window_clear_scenery_inputsize(w);
break; break;
@ -171,6 +159,26 @@ static void window_clear_scenery_mouseup(rct_window *w, rct_widgetindex widgetIn
} }
} }
static void window_clear_scenery_mousedown(rct_window *w, rct_widgetindex widgetIndex, rct_widget *widget)
{
switch (widgetIndex) {
case WIDX_DECREMENT:
// Decrement land tool size, if it stays within the limit
gLandToolSize = max(MINIMUM_TOOL_SIZE, gLandToolSize - 1);
// Invalidate the window
window_invalidate(w);
break;
case WIDX_INCREMENT:
// Increment land tool size, if it stays within the limit
gLandToolSize = min(MAXIMUM_TOOL_SIZE, gLandToolSize + 1);
// Invalidate the window
window_invalidate(w);
break;
}
}
static void window_clear_scenery_textinput(rct_window *w, rct_widgetindex widgetIndex, char *text) static void window_clear_scenery_textinput(rct_window *w, rct_widgetindex widgetIndex, char *text)
{ {
sint32 size; sint32 size;
@ -201,6 +209,7 @@ static void window_clear_scenery_inputsize(rct_window *w)
*/ */
static void window_clear_scenery_update(rct_window *w) static void window_clear_scenery_update(rct_window *w)
{ {
w->frame_no++;
// Close window if another tool is open // Close window if another tool is open
if (!clear_scenery_tool_is_active()) if (!clear_scenery_tool_is_active())
window_close(w); window_close(w);

View File

@ -126,6 +126,7 @@ void window_land_open()
(1 << WIDX_MOUNTAINMODE) | (1 << WIDX_MOUNTAINMODE) |
(1 << WIDX_PAINTMODE) | (1 << WIDX_PAINTMODE) |
(1 << WIDX_PREVIEW); (1 << WIDX_PREVIEW);
window->hold_down_widgets = (1 << WIDX_DECREMENT) | (1 << WIDX_INCREMENT);
window_init_scroll_widgets(window); window_init_scroll_widgets(window);
window_push_others_below(window); window_push_others_below(window);
@ -161,20 +162,6 @@ static void window_land_mouseup(rct_window *w, rct_widgetindex widgetIndex)
case WIDX_CLOSE: case WIDX_CLOSE:
window_close(w); window_close(w);
break; break;
case WIDX_DECREMENT:
// Decrement land tool size
gLandToolSize = max(MINIMUM_TOOL_SIZE, gLandToolSize-1);
// Invalidate the window
window_invalidate(w);
break;
case WIDX_INCREMENT:
// Increment land tool size
gLandToolSize = min(MAXIMUM_TOOL_SIZE, gLandToolSize+1);
// Invalidate the window
window_invalidate(w);
break;
case WIDX_MOUNTAINMODE: case WIDX_MOUNTAINMODE:
gLandMountainMode ^= 1; gLandMountainMode ^= 1;
gLandPaintMode = 0; gLandPaintMode = 0;
@ -207,6 +194,20 @@ static void window_land_mousedown(rct_window *w, rct_widgetindex widgetIndex, rc
case WIDX_PREVIEW: case WIDX_PREVIEW:
window_land_inputsize(w); window_land_inputsize(w);
break; break;
case WIDX_DECREMENT:
// Decrement land tool size
gLandToolSize = max(MINIMUM_TOOL_SIZE, gLandToolSize - 1);
// Invalidate the window
window_invalidate(w);
break;
case WIDX_INCREMENT:
// Increment land tool size
gLandToolSize = min(MAXIMUM_TOOL_SIZE, gLandToolSize + 1);
// Invalidate the window
window_invalidate(w);
break;
} }
} }

View File

@ -53,6 +53,7 @@ static rct_widget window_land_rights_widgets[] = {
static void window_land_rights_close(rct_window *w); static void window_land_rights_close(rct_window *w);
static void window_land_rights_mouseup(rct_window *w, rct_widgetindex widgetIndex); static void window_land_rights_mouseup(rct_window *w, rct_widgetindex widgetIndex);
static void window_land_rights_mousedown(rct_window *w, rct_widgetindex widgetIndex, rct_widget *widget);
static void window_land_rights_update(rct_window *w); static void window_land_rights_update(rct_window *w);
static void window_land_rights_invalidate(rct_window *w); static void window_land_rights_invalidate(rct_window *w);
static void window_land_rights_paint(rct_window *w, rct_drawpixelinfo *dpi); static void window_land_rights_paint(rct_window *w, rct_drawpixelinfo *dpi);
@ -69,7 +70,7 @@ static rct_window_event_list window_land_rights_events = {
window_land_rights_close, window_land_rights_close,
window_land_rights_mouseup, window_land_rights_mouseup,
NULL, NULL,
NULL, window_land_rights_mousedown,
NULL, NULL,
NULL, NULL,
window_land_rights_update, window_land_rights_update,
@ -114,6 +115,7 @@ void window_land_rights_open()
window->widgets = window_land_rights_widgets; window->widgets = window_land_rights_widgets;
window->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_DECREMENT) | (1 << WIDX_INCREMENT) | (1 << WIDX_PREVIEW) | window->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_DECREMENT) | (1 << WIDX_INCREMENT) | (1 << WIDX_PREVIEW) |
(1 << WIDX_BUY_LAND_RIGHTS) | (1 << WIDX_BUY_CONSTRUCTION_RIGHTS); (1 << WIDX_BUY_LAND_RIGHTS) | (1 << WIDX_BUY_CONSTRUCTION_RIGHTS);
window->hold_down_widgets = (1 << WIDX_INCREMENT) | (1 << WIDX_DECREMENT);
window_init_scroll_widgets(window); window_init_scroll_widgets(window);
window_push_others_below(window); window_push_others_below(window);
@ -150,20 +152,6 @@ static void window_land_rights_mouseup(rct_window *w, rct_widgetindex widgetInde
case WIDX_CLOSE: case WIDX_CLOSE:
window_close(w); window_close(w);
break; break;
case WIDX_DECREMENT:
// Decrement land rights tool size
gLandToolSize = max(MINIMUM_TOOL_SIZE, gLandToolSize - 1);
// Invalidate the window
window_invalidate(w);
break;
case WIDX_INCREMENT:
// Decrement land rights tool size
gLandToolSize = min(MAXIMUM_TOOL_SIZE, gLandToolSize + 1);
// Invalidate the window
window_invalidate(w);
break;
case WIDX_PREVIEW: case WIDX_PREVIEW:
window_land_rights_inputsize(w); window_land_rights_inputsize(w);
break; break;
@ -190,6 +178,26 @@ static void window_land_rights_mouseup(rct_window *w, rct_widgetindex widgetInde
} }
} }
static void window_land_rights_mousedown(rct_window *w, rct_widgetindex widgetIndex, rct_widget *widget)
{
switch (widgetIndex) {
case WIDX_DECREMENT:
// Decrement land rights tool size
gLandToolSize = max(MINIMUM_TOOL_SIZE, gLandToolSize - 1);
// Invalidate the window
window_invalidate(w);
break;
case WIDX_INCREMENT:
// Decrement land rights tool size
gLandToolSize = min(MAXIMUM_TOOL_SIZE, gLandToolSize + 1);
// Invalidate the window
window_invalidate(w);
break;
}
}
static void window_land_rights_textinput(rct_window *w, rct_widgetindex widgetIndex, char *text) static void window_land_rights_textinput(rct_window *w, rct_widgetindex widgetIndex, char *text)
{ {
sint32 size; sint32 size;
@ -216,6 +224,7 @@ static void window_land_rights_inputsize(rct_window *w)
static void window_land_rights_update(rct_window *w) static void window_land_rights_update(rct_window *w)
{ {
w->frame_no++;
// Close window if another tool is open // Close window if another tool is open
if (!land_rights_tool_is_active()) if (!land_rights_tool_is_active())
window_close(w); window_close(w);

View File

@ -242,7 +242,9 @@ void window_map_open()
w->hold_down_widgets = w->hold_down_widgets =
(1 << WIDX_MAP_SIZE_SPINNER_UP) | (1 << WIDX_MAP_SIZE_SPINNER_UP) |
(1 << WIDX_MAP_SIZE_SPINNER_DOWN); (1 << WIDX_MAP_SIZE_SPINNER_DOWN) |
(1 << WIDX_LAND_TOOL_LARGER) |
(1 << WIDX_LAND_TOOL_SMALLER);
window_init_scroll_widgets(w); window_init_scroll_widgets(w);
@ -335,18 +337,6 @@ static void window_map_mouseup(rct_window *w, rct_widgetindex widgetIndex)
if (_activeTool & 4) if (_activeTool & 4)
_activeTool &= 0xF4; _activeTool &= 0xF4;
window_invalidate(w);
break;
case WIDX_LAND_TOOL_SMALLER:
// Decrement land ownership tool size
gLandToolSize = max(MINIMUM_TOOL_SIZE, gLandToolSize-1);
window_invalidate(w);
break;
case WIDX_LAND_TOOL_LARGER:
// Increment land ownership tool size
gLandToolSize = min(MAXIMUM_TOOL_SIZE, gLandToolSize+1);
window_invalidate(w); window_invalidate(w);
break; break;
case WIDX_BUILD_PARK_ENTRANCE: case WIDX_BUILD_PARK_ENTRANCE:
@ -419,6 +409,18 @@ static void window_map_mousedown(rct_window *w, rct_widgetindex widgetIndex, rct
case WIDX_MAP_SIZE_SPINNER_DOWN: case WIDX_MAP_SIZE_SPINNER_DOWN:
map_window_decrease_map_size(); map_window_decrease_map_size();
break; break;
case WIDX_LAND_TOOL_SMALLER:
// Decrement land ownership tool size
gLandToolSize = max(MINIMUM_TOOL_SIZE, gLandToolSize - 1);
window_invalidate(w);
break;
case WIDX_LAND_TOOL_LARGER:
// Increment land ownership tool size
gLandToolSize = min(MAXIMUM_TOOL_SIZE, gLandToolSize + 1);
window_invalidate(w);
break;
} }
} }

View File

@ -47,6 +47,7 @@ static rct_widget window_water_widgets[] = {
static void window_water_close(rct_window *w); static void window_water_close(rct_window *w);
static void window_water_mouseup(rct_window *w, rct_widgetindex widgetIndex); static void window_water_mouseup(rct_window *w, rct_widgetindex widgetIndex);
static void window_water_mousedown(rct_window *w, rct_widgetindex widgetIndex, rct_widget *widget);
static void window_water_update(rct_window *w); static void window_water_update(rct_window *w);
static void window_water_invalidate(rct_window *w); static void window_water_invalidate(rct_window *w);
static void window_water_paint(rct_window *w, rct_drawpixelinfo *dpi); static void window_water_paint(rct_window *w, rct_drawpixelinfo *dpi);
@ -57,7 +58,7 @@ static rct_window_event_list window_water_events = {
window_water_close, window_water_close,
window_water_mouseup, window_water_mouseup,
NULL, NULL,
NULL, window_water_mousedown,
NULL, NULL,
NULL, NULL,
window_water_update, window_water_update,
@ -107,6 +108,7 @@ void window_water_open()
); );
window->widgets = window_water_widgets; window->widgets = window_water_widgets;
window->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_DECREMENT) | (1 << WIDX_INCREMENT) | (1 << WIDX_PREVIEW); window->enabled_widgets = (1 << WIDX_CLOSE) | (1 << WIDX_DECREMENT) | (1 << WIDX_INCREMENT) | (1 << WIDX_PREVIEW);
window->hold_down_widgets = (1 << WIDX_INCREMENT) | (1 << WIDX_DECREMENT);
window_init_scroll_widgets(window); window_init_scroll_widgets(window);
window_push_others_below(window); window_push_others_below(window);
@ -136,23 +138,29 @@ static void window_water_mouseup(rct_window *w, rct_widgetindex widgetIndex)
case WIDX_CLOSE: case WIDX_CLOSE:
window_close(w); window_close(w);
break; break;
case WIDX_PREVIEW:
window_water_inputsize(w);
break;
}
}
static void window_water_mousedown(rct_window *w, rct_widgetindex widgetIndex, rct_widget* widget)
{
switch (widgetIndex) {
case WIDX_DECREMENT: case WIDX_DECREMENT:
// Decrement land tool size // Decrement land tool size
gLandToolSize = max(MINIMUM_TOOL_SIZE, gLandToolSize-1); gLandToolSize = max(MINIMUM_TOOL_SIZE, gLandToolSize - 1);
// Invalidate the window // Invalidate the window
window_invalidate(w); window_invalidate(w);
break; break;
case WIDX_INCREMENT: case WIDX_INCREMENT:
// Increment land tool size // Increment land tool size
gLandToolSize = min(MAXIMUM_TOOL_SIZE, gLandToolSize+1); gLandToolSize = min(MAXIMUM_TOOL_SIZE, gLandToolSize + 1);
// Invalidate the window // Invalidate the window
window_invalidate(w); window_invalidate(w);
break; break;
case WIDX_PREVIEW:
window_water_inputsize(w);
break;
} }
} }