diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index 18dcbea27b..29bcf4b7ec 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -325,6 +325,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 04181e382c..697846856c 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1478,6 +1478,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 35c671d355..9e7a345636 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -316,6 +316,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 6ac22c2685..430bb10c5b 100644 --- a/src/saveload/company_sl.cpp +++ b/src/saveload/company_sl.cpp @@ -311,6 +311,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 @@ -333,6 +334,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 2c3b65823e..7b96c7b67d 100644 --- a/src/saveload/extended_ver_sl.cpp +++ b/src/saveload/extended_ver_sl.cpp @@ -45,7 +45,7 @@ std::vector _sl_xv_discardable_chunk_ids; ///< list of chunks static const uint32 _sl_xv_slxi_chunk_version = 0; ///< current version os SLXI chunk const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = { - { 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_NULL, XSCF_NULL, 0, 0, NULL, NULL, NULL, NULL },// This is the end marker }; diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 1c3da570a7..3b6eb077f3 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1586,6 +1586,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 7c3b34478d..a335c992a3 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -529,6 +529,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 a24fb35104..cd49e50f25 100644 --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -717,6 +717,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 5c839c2af7..dcbb619be1 100644 --- a/src/table/company_settings.ini +++ b/src/table/company_settings.ini @@ -134,6 +134,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 8f20973b35..280bc2dce9 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -775,6 +775,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;