diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index 9097590e65..cf1836e9b0 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -334,6 +334,8 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine * v->vehicle_flags = 0; if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); v->SetServiceIntervalIsPercent(Company::Get(_current_company)->settings.vehicle.servint_ispercent); + SB(v->vehicle_flags, VF_AUTOMATE_TIMETABLE, 1, + _settings_game.order.timetable_automated && Company::Get(_current_company)->settings.vehicle.auto_timetable_by_default); v->InvalidateNewGRFCacheOfChain(); diff --git a/src/lang/english.txt b/src/lang/english.txt index 7ed3b18d4e..ad5ab957fa 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1547,6 +1547,8 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Default service STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Set the default service interval for new aircraft, if no explicit service interval is set for the vehicle STR_CONFIG_SETTING_SERVINT_SHIPS :Default service interval for ships: {STRING2} STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Set the default service interval for new ships, if no explicit service interval is set for the vehicle +STR_CONFIG_SETTING_AUTO_TIMETABLE_BY_DEFAULT :Use automatic timetables by default +STR_CONFIG_SETTING_AUTO_TIMETABLE_BY_DEFAULT_HELPTEXT :Choose whether automatic timetables should by automatically enabled for new vehicles STR_CONFIG_SETTING_NOSERVICE :Disable servicing when breakdowns set to none: {STRING2} STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :When enabled, vehicles do not get serviced if they cannot break down STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Enable wagon speed limits: {STRING2} diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index 010b161ac9..b1fbd12549 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -318,6 +318,8 @@ CommandCost CmdBuildRoadVehicle(TileIndex tile, DoCommandFlag flags, const Engin if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); v->SetServiceIntervalIsPercent(Company::Get(_current_company)->settings.vehicle.servint_ispercent); + SB(v->vehicle_flags, VF_AUTOMATE_TIMETABLE, 1, + _settings_game.order.timetable_automated && Company::Get(_current_company)->settings.vehicle.auto_timetable_by_default); AddArticulatedParts(v); v->InvalidateNewGRFCacheOfChain(); diff --git a/src/saveload/company_sl.cpp b/src/saveload/company_sl.cpp index f90203e228..51be3e1882 100644 --- a/src/saveload/company_sl.cpp +++ b/src/saveload/company_sl.cpp @@ -312,6 +312,7 @@ static const SaveLoad _company_settings_desc[] = { SLE_CONDVAR(Company, settings.vehicle.servint_roadveh, SLE_UINT16, 120, SL_MAX_VERSION), SLE_CONDVAR(Company, settings.vehicle.servint_aircraft, SLE_UINT16, 120, SL_MAX_VERSION), SLE_CONDVAR(Company, settings.vehicle.servint_ships, SLE_UINT16, 120, SL_MAX_VERSION), + SLE_CONDVAR_X(Company, settings.vehicle.auto_timetable_by_default, SLE_BOOL, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE, 2)), SLE_CONDNULL(63, 2, 143), // old reserved space @@ -334,6 +335,7 @@ static const SaveLoad _company_settings_skip_desc[] = { SLE_CONDNULL(2, 120, SL_MAX_VERSION), // settings.vehicle.servint_roadveh SLE_CONDNULL(2, 120, SL_MAX_VERSION), // settings.vehicle.servint_aircraft SLE_CONDNULL(2, 120, SL_MAX_VERSION), // settings.vehicle.servint_ships + SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE, 2)), // settings.vehicle.auto_timetable_by_default SLE_CONDNULL(63, 2, 143), // old reserved space diff --git a/src/saveload/extended_ver_sl.cpp b/src/saveload/extended_ver_sl.cpp index 9b960f47ae..3f6b693f56 100644 --- a/src/saveload/extended_ver_sl.cpp +++ b/src/saveload/extended_ver_sl.cpp @@ -55,7 +55,7 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = { { XSLFI_SIG_TUNNEL_BRIDGE, XSCF_NULL, 1, 1, "signal_tunnel_bridge", NULL, NULL, NULL }, { XSLFI_IMPROVED_BREAKDOWNS, XSCF_NULL, 1, 1, "improved_breakdowns", NULL, NULL, NULL }, { XSLFI_TT_WAIT_IN_DEPOT, XSCF_NULL, 1, 1, "tt_wait_in_depot", NULL, NULL, NULL }, - { XSLFI_AUTO_TIMETABLE, XSCF_NULL, 1, 1, "auto_timetables", NULL, NULL, NULL }, + { XSLFI_AUTO_TIMETABLE, XSCF_NULL, 2, 2, "auto_timetables", NULL, NULL, NULL }, { XSLFI_VEHICLE_REPAIR_COST, XSCF_NULL, 1, 1, "vehicle_repair_cost", NULL, NULL, NULL }, { XSLFI_ENH_VIEWPORT_PLANS, XSCF_IGNORABLE_ALL, 1, 1, "enh_viewport_plans", NULL, NULL, "PLAN,PLLN" }, { XSLFI_INFRA_SHARING, XSCF_NULL, 1, 1, "infra_sharing", NULL, NULL, NULL }, diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 7c9e0e715d..5b9fcb9544 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1634,6 +1634,7 @@ static SettingsContainer &GetSettingsTree() company->Add(new SettingEntry("vehicle.servint_roadveh")); company->Add(new SettingEntry("vehicle.servint_ships")); company->Add(new SettingEntry("vehicle.servint_aircraft")); + company->Add(new SettingEntry("vehicle.auto_timetable_by_default")); } SettingsPage *accounting = main->Add(new SettingsPage(STR_CONFIG_SETTING_ACCOUNTING)); diff --git a/src/settings_type.h b/src/settings_type.h index cb81c91123..403a475db0 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -578,6 +578,7 @@ struct VehicleDefaultSettings { uint16 servint_roadveh; ///< service interval for road vehicles uint16 servint_aircraft; ///< service interval for aircraft uint16 servint_ships; ///< service interval for ships + bool auto_timetable_by_default; ///< use automatic timetables by default }; /** Settings that can be set per company. */ diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp index 7383080d5f..bdbea98572 100644 --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -738,6 +738,8 @@ CommandCost CmdBuildShip(TileIndex tile, DoCommandFlag flags, const Engine *e, u if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); v->SetServiceIntervalIsPercent(Company::Get(_current_company)->settings.vehicle.servint_ispercent); + SB(v->vehicle_flags, VF_AUTOMATE_TIMETABLE, 1, + _settings_game.order.timetable_automated && Company::Get(_current_company)->settings.vehicle.auto_timetable_by_default); v->InvalidateNewGRFCacheOfChain(); diff --git a/src/table/company_settings.ini b/src/table/company_settings.ini index bf3784d577..ae56995561 100644 --- a/src/table/company_settings.ini +++ b/src/table/company_settings.ini @@ -140,6 +140,14 @@ strhelp = STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT strval = STR_CONFIG_SETTING_SERVINT_VALUE proc = UpdateIntervalAircraft +[SDT_BOOL] +base = CompanySettings +var = vehicle.auto_timetable_by_default +guiflags = SGF_PER_COMPANY +def = false +str = STR_CONFIG_SETTING_AUTO_TIMETABLE_BY_DEFAULT +strhelp = STR_CONFIG_SETTING_AUTO_TIMETABLE_BY_DEFAULT_HELPTEXT + [SDT_END] diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index ce228751de..f5ec95485e 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -819,6 +819,8 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, DoCommandFlag flags, const Engin if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); v->SetServiceIntervalIsPercent(Company::Get(_current_company)->settings.vehicle.servint_ispercent); + SB(v->vehicle_flags, VF_AUTOMATE_TIMETABLE, 1, + _settings_game.order.timetable_automated && Company::Get(_current_company)->settings.vehicle.auto_timetable_by_default); v->group_id = DEFAULT_GROUP;