From 3b845a67edbf823f618ce167039a56ca73427eba Mon Sep 17 00:00:00 2001 From: medsouz Date: Sun, 16 Aug 2015 19:26:42 -0400 Subject: [PATCH] Add option for handymen to mow grass by default --- data/language/english_uk.txt | 3 ++- src/config.c | 1 + src/config.h | 1 + src/peep/staff.c | 5 +++++ src/windows/options.c | 18 ++++++++++++++---- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index 50f8fe9e33..e609ee119b 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -3844,4 +3844,5 @@ STR_5502 :Multiplayer STR_5503 :Enter hostname or IP address: STR_5504 :{SMALLFONT}{BLACK}Show multiplayer status STR_5505 :Unable to connect to server. -STR_5506 :Guests ignore intensities \ No newline at end of file +STR_5506 :Guests ignore intensities +STR_5507 :Handymen mow grass by default \ No newline at end of file diff --git a/src/config.c b/src/config.c index 45ad23d82d..e671d59033 100644 --- a/src/config.c +++ b/src/config.c @@ -184,6 +184,7 @@ config_property_definition _generalDefinitions[] = { { offsetof(general_configuration, no_test_crashes), "no_test_crashes", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, { offsetof(general_configuration, date_format), "date_format", CONFIG_VALUE_TYPE_UINT8, DATE_FORMAT_DMY, _dateFormatEnum }, { offsetof(general_configuration, auto_staff_placement), "auto_staff", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, + { offsetof(general_configuration, handymen_mow_default), "handymen_mow_default", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, { offsetof(general_configuration, last_run_version), "last_run_version", CONFIG_VALUE_TYPE_STRING, { .value_string = NULL }, NULL }, { offsetof(general_configuration, invert_viewport_drag), "invert_viewport_drag", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, { offsetof(general_configuration, load_save_sort), "load_save_sort", CONFIG_VALUE_TYPE_UINT8, SORT_NAME_ASCENDING, NULL }, diff --git a/src/config.h b/src/config.h index 1367427c61..35ed2e74c5 100644 --- a/src/config.h +++ b/src/config.h @@ -157,6 +157,7 @@ typedef struct { uint8 no_test_crashes; uint8 date_format; uint8 auto_staff_placement; + uint8 handymen_mow_default; utf8string last_run_version; uint8 invert_viewport_drag; uint8 load_save_sort; diff --git a/src/peep/staff.c b/src/peep/staff.c index 5eea938e27..325f801300 100644 --- a/src/peep/staff.c +++ b/src/peep/staff.c @@ -274,6 +274,11 @@ void game_command_hire_new_staff_member(int* eax, int* ebx, int* ecx, int* edx, } } + if(staff_type == STAFF_TYPE_HANDYMAN && gConfigGeneral.handymen_mow_default) { + int flags = ((newPeep->staff_orders ^ (1 << 3)) << 8) | 1; + game_do_command(newPeep->x, flags, newPeep->y, newPeep->sprite_index, GAME_COMMAND_SET_STAFF_ORDER, (int)newPeep, 0); + } + *ebx = 0; *edi = newPeep->sprite_index; } diff --git a/src/windows/options.c b/src/windows/options.c index fc62925905..62acfdb030 100644 --- a/src/windows/options.c +++ b/src/windows/options.c @@ -134,6 +134,7 @@ enum WINDOW_OPTIONS_WIDGET_IDX { WIDX_AUTOSAVE_DROPDOWN, WIDX_TEST_UNFINISHED_TRACKS, WIDX_AUTO_STAFF_PLACEMENT, + WIDX_HANDYMEN_MOW_DEFAULT, WIDX_DEBUGGING_TOOLS, WIDX_TITLE_SEQUENCE, WIDX_TITLE_SEQUENCE_DROPDOWN, @@ -245,10 +246,11 @@ static rct_widget window_options_misc_widgets[] = { { WWT_DROPDOWN_BUTTON, 1, 288, 298, 84, 93, 876, STR_NONE }, { WWT_CHECKBOX, 2, 10, 299, 114, 125, 5155, 5156 }, // test unfinished tracks { WWT_CHECKBOX, 2, 10, 299, 129, 140, 5343, STR_NONE }, // auto staff placement - { WWT_CHECKBOX, 2, 10, 299, 144, 155, 5150, STR_NONE }, // enabled debugging tools - { WWT_DROPDOWN, 1, 155, 299, 158, 169, STR_NONE, STR_NONE }, - { WWT_DROPDOWN_BUTTON, 1, 288, 298, 159, 168, 876, STR_NONE }, - { WWT_DROPDOWN_BUTTON, 1, 26, 185, 174, 185, 5436, STR_NONE }, // Title sequences button + { WWT_CHECKBOX, 2, 10, 299, 144, 155, 5507, STR_NONE }, // handymen mow by default + { WWT_CHECKBOX, 2, 10, 299, 159, 170, 5150, STR_NONE }, // enabled debugging tools + { WWT_DROPDOWN, 1, 155, 299, 173, 184, STR_NONE, STR_NONE }, + { WWT_DROPDOWN_BUTTON, 1, 288, 298, 174, 183, 876, STR_NONE }, + { WWT_DROPDOWN_BUTTON, 1, 26, 185, 189, 200, 5436, STR_NONE }, // Title sequences button { WIDGETS_END }, }; @@ -398,6 +400,7 @@ static uint32 window_options_page_enabled_widgets[] = { (1 << WIDX_AUTOSAVE_DROPDOWN) | (1 << WIDX_TEST_UNFINISHED_TRACKS) | (1 << WIDX_AUTO_STAFF_PLACEMENT) | + (1 << WIDX_HANDYMEN_MOW_DEFAULT) | (1 << WIDX_DEBUGGING_TOOLS) | (1 << WIDX_TITLE_SEQUENCE) | (1 << WIDX_TITLE_SEQUENCE_DROPDOWN) | @@ -615,6 +618,11 @@ static void window_options_mouseup(rct_window *w, int widgetIndex) config_save_default(); window_invalidate(w); break; + case WIDX_HANDYMEN_MOW_DEFAULT: + gConfigGeneral.handymen_mow_default = !gConfigGeneral.handymen_mow_default; + config_save_default(); + window_invalidate(w); + break; case WIDX_TITLE_SEQUENCE_BUTTON: window_title_editor_open(0); } @@ -1221,6 +1229,7 @@ static void window_options_invalidate(rct_window *w) widget_set_checkbox_value(w, WIDX_SAVE_PLUGIN_DATA_CHECKBOX, gConfigGeneral.save_plugin_data); widget_set_checkbox_value(w, WIDX_TEST_UNFINISHED_TRACKS, gConfigGeneral.test_unfinished_tracks); widget_set_checkbox_value(w, WIDX_AUTO_STAFF_PLACEMENT, gConfigGeneral.auto_staff_placement); + widget_set_checkbox_value(w, WIDX_HANDYMEN_MOW_DEFAULT, gConfigGeneral.handymen_mow_default); widget_set_checkbox_value(w, WIDX_DEBUGGING_TOOLS, gConfigGeneral.debugging_tools); window_options_misc_widgets[WIDX_REAL_NAME_CHECKBOX].type = WWT_CHECKBOX; @@ -1229,6 +1238,7 @@ static void window_options_invalidate(rct_window *w) window_options_misc_widgets[WIDX_AUTOSAVE_DROPDOWN].type = WWT_DROPDOWN_BUTTON; window_options_misc_widgets[WIDX_TEST_UNFINISHED_TRACKS].type = WWT_CHECKBOX; window_options_misc_widgets[WIDX_AUTO_STAFF_PLACEMENT].type = WWT_CHECKBOX; + window_options_misc_widgets[WIDX_HANDYMEN_MOW_DEFAULT].type = WWT_CHECKBOX; window_options_misc_widgets[WIDX_DEBUGGING_TOOLS].type = WWT_CHECKBOX; window_options_misc_widgets[WIDX_TITLE_SEQUENCE].type = WWT_DROPDOWN; window_options_misc_widgets[WIDX_TITLE_SEQUENCE_DROPDOWN].type = WWT_DROPDOWN_BUTTON;