Add setting for rail depot maximum speed

pull/507/head
Jonathan G Rennison 1 year ago
parent e02585f68e
commit 1d05637d45

@ -190,7 +190,9 @@ STR_CONFIG_SETTING_REALISTIC_BRAKING_ASPECT_LIMITED_HELPTEXT :In the realisti
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT :Train through load maximum speed: {STRING2}
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_HELPTEXT :The maximum permitted speed for trains when through loading at a station
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_VAL :{VELOCITY}
STR_CONFIG_SETTING_RAIL_DEPOT_SPEED_LIMIT :Rail depot maximum speed: {STRING2}
STR_CONFIG_SETTING_RAIL_DEPOT_SPEED_LIMIT_HELPTEXT :The maximum permitted speed for trains when entering or exiting a rail depot
STR_CONFIG_SETTING_BACK_ONE_WAY_PBS_SAFE_WAITING :Pathfind up to back of one-way path signals: {STRING2}
STR_CONFIG_SETTING_BACK_ONE_WAY_PBS_SAFE_WAITING_HELPTEXT :When enabled, the YAPF train pathfinder may pathfind up to the back of a one-way path signal.
@ -1787,6 +1789,8 @@ STR_JUST_TIME_HHMM :{TIME_HHMM}
STR_JUST_STRING1 :{STRING1}
STR_JUST_STRING2 :{STRING2}
STR_JUST_VELOCITY :{VELOCITY}
STR_BLACK_DECIMAL :{BLACK}{DECIMAL}
STR_WHITE_DATE_WALLCLOCK_LONG :{WHITE}{DATE_WALLCLOCK_LONG}
STR_WHITE_DATE_WALLCLOCK_SHORT :{WHITE}{DATE_WALLCLOCK_SHORT}

@ -153,7 +153,6 @@ STR_CONFIG_SETTING_REALISTIC_BRAKING_ASPECT_LIMITED_HELPTEXT :No modelo de fr
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT :Velocidade máxima de carga en movemento do tren: {STRING}
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_HELPTEXT :A velocidade máxima permitida os trens cando están cargando en movemento
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_VAL :{VELOCITY}
STR_CONFIG_SETTING_BACK_ONE_WAY_PBS_SAFE_WAITING :Buscar ruta ata detrás dun sinal dun só sentido: {STRING}
STR_CONFIG_SETTING_BACK_ONE_WAY_PBS_SAFE_WAITING_HELPTEXT :Cando se habilita, o buscador de rutas de tren YAPF pode buscar unha ruta ata detrás dun sinal de un só sentido.

@ -148,7 +148,6 @@ STR_CONFIG_SETTING_REALISTIC_BRAKING_ASPECT_LIMITED_HELPTEXT :In the realisti
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT :Maximalgeschwindigkeit für das durchgehende Beladen von Zügen: {STRING}
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_HELPTEXT :Die maximal erlaubte Ladegeschwindigkeit für Züge, die in einer Station durchgehend laden
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_VAL :{VELOCITY}
STR_CONFIG_SETTING_BACK_ONE_WAY_PBS_SAFE_WAITING :Wegsuche bis zur Rückseite eines Einwegpfadsignals: {STRING}
STR_CONFIG_SETTING_BACK_ONE_WAY_PBS_SAFE_WAITING_HELPTEXT :Wenn aktiviert, wird der YAPF-Pfadsucher für Züge versuchen, einen Weg bis zur Rückseite des nächsten Einwegpfadsignals zu suchen.

@ -153,7 +153,6 @@ STR_CONFIG_SETTING_REALISTIC_BRAKING_ASPECT_LIMITED_HELPTEXT :현실적 감
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT :차례로 나눠 실을 때 열차 속력: {STRING}
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_HELPTEXT :역에서 열차가 화물을 차례로 나눠 실으며 움직일 때 열차의 최대 허용 속력입니다.
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_VAL :{VELOCITY}
STR_CONFIG_SETTING_BACK_ONE_WAY_PBS_SAFE_WAITING :단방향 경로 신호기 뒤까지 경로 탐색: {STRING}
STR_CONFIG_SETTING_BACK_ONE_WAY_PBS_SAFE_WAITING_HELPTEXT :이 설정을 켜면, YAPF 열차 경로 탐색 알고리즘이 단방향 경로 신호기 뒤까지 경로를 탐색할 수 있습니다.

@ -153,7 +153,6 @@ STR_CONFIG_SETTING_REALISTIC_BRAKING_ASPECT_LIMITED_HELPTEXT :在真实列车
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT :火车通过式装载最高速度:{STRING}
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_HELPTEXT :火车在通过车站时进行装载的所允许的最高速度
STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_VAL :{VELOCITY}
STR_CONFIG_SETTING_BACK_ONE_WAY_PBS_SAFE_WAITING :Pathfind up to back of one-way path signals{STRING}
STR_CONFIG_SETTING_BACK_ONE_WAY_PBS_SAFE_WAITING_HELPTEXT :When enabled, the YAPF train pathfinder may pathfind up to the back of a one-way path signal.

@ -4144,9 +4144,9 @@ static void GetTileDesc_Track(TileIndex tile, TileDesc *td)
td->str = STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT;
if (_settings_game.vehicle.train_acceleration_model != AM_ORIGINAL) {
if (td->rail_speed > 0) {
td->rail_speed = std::min<uint16>(td->rail_speed, 61);
td->rail_speed = std::min<uint16>(td->rail_speed, _settings_game.vehicle.rail_depot_speed_limit);
} else {
td->rail_speed = 61;
td->rail_speed = _settings_game.vehicle.rail_depot_speed_limit;
}
}
td->build_date = Depot::GetByTile(tile)->build_date;

@ -4066,6 +4066,10 @@ bool AfterLoadGame()
_settings_game.vehicle.through_load_speed_limit = 15;
}
if (SlXvIsFeatureMissing(XSLFI_RAIL_DEPOT_SPEED_LIMIT)) {
_settings_game.vehicle.rail_depot_speed_limit = 61;
}
if (SlXvIsFeaturePresent(XSLFI_SCHEDULED_DISPATCH, 1, 2)) {
for (OrderList *order_list : OrderList::Iterate()) {
if (order_list->GetScheduledDispatchScheduleCount() == 1) {

@ -171,6 +171,7 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
{ XSLFI_COMPANY_PW, XSCF_IGNORABLE_ALL, 2, 2, "company_password", nullptr, nullptr, "PLYP" },
{ XSLFI_ST_INDUSTRY_CARGO_MODE, XSCF_IGNORABLE_UNKNOWN, 1, 1, "st_industry_cargo_mode", nullptr, nullptr, nullptr },
{ XSLFI_TL_SPEED_LIMIT, XSCF_IGNORABLE_UNKNOWN, 1, 1, "tl_speed_limit", nullptr, nullptr, nullptr },
{ XSLFI_RAIL_DEPOT_SPEED_LIMIT, XSCF_IGNORABLE_UNKNOWN, 1, 1, "rail_depot_speed_limit", nullptr, nullptr, nullptr },
{ XSLFI_WAYPOINT_FLAGS, XSCF_NULL, 1, 1, "waypoint_flags", nullptr, nullptr, nullptr },
{ XSLFI_ROAD_WAYPOINTS, XSCF_NULL, 1, 1, "road_waypoints", nullptr, nullptr, nullptr },
{ XSLFI_MORE_STATION_TYPES, XSCF_NULL, 1, 1, "more_station_types", nullptr, nullptr, nullptr },

@ -122,6 +122,7 @@ enum SlXvFeatureIndex {
XSLFI_COMPANY_PW, ///< Company passwords
XSLFI_ST_INDUSTRY_CARGO_MODE, ///< Station industry cargo mode setting
XSLFI_TL_SPEED_LIMIT, ///< Through load maximum speed setting
XSLFI_RAIL_DEPOT_SPEED_LIMIT, ///< Rail depot maximum speed setting
XSLFI_WAYPOINT_FLAGS, ///< Waypoint flags
XSLFI_ROAD_WAYPOINTS, ///< Road waypoints
XSLFI_MORE_STATION_TYPES, ///< More station types (field widening)

@ -2122,6 +2122,7 @@ static SettingsContainer &GetSettingsTree()
limitations->Add(new SettingEntry("vehicle.max_ships"));
limitations->Add(new SettingEntry("vehicle.max_train_length"));
limitations->Add(new SettingEntry("vehicle.through_load_speed_limit"));
limitations->Add(new SettingEntry("vehicle.rail_depot_speed_limit"));
limitations->Add(new SettingEntry("station.station_spread"));
limitations->Add(new SettingEntry("station.distant_join_stations"));
limitations->Add(new SettingEntry("construction.road_stop_on_town_road"));

@ -646,6 +646,7 @@ struct VehicleSettings {
bool roadveh_cant_quantum_tunnel; ///< enable or disable vehicles quantum tunelling through over vehicles when blocked
bool drive_through_train_depot; ///< enable drive-through train depot emulation
uint16 through_load_speed_limit; ///< maximum speed for through load
uint16 rail_depot_speed_limit; ///< maximum speed entering/existing rail depots
};
/** Settings related to the economy. */

@ -256,7 +256,7 @@ class NIHVehicle : public NIHelper {
b = buffer + seprintf(buffer, lastof(buffer), " Reservation ends at %X (%u x %u), trackdir: %02X, z: %d",
l.reservation_end_tile, TileX(l.reservation_end_tile), TileY(l.reservation_end_tile), l.reservation_end_trackdir, l.reservation_end_z);
if (HasBit(l.flags, TRLF_DEPOT_END)) {
print_braking_speed(l.reservation_end_position - TILE_SIZE, 61, l.reservation_end_z);
print_braking_speed(l.reservation_end_position - TILE_SIZE, _settings_game.vehicle.rail_depot_speed_limit, l.reservation_end_z);
} else {
print_braking_speed(l.reservation_end_position, 0, l.reservation_end_z);
}

@ -1465,10 +1465,24 @@ max = 500
interval = 5
str = STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT
strhelp = STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_HELPTEXT
strval = STR_CONFIG_SETTING_THROUGH_LOAD_SPEED_LIMIT_VAL
strval = STR_JUST_VELOCITY
cat = SC_EXPERT
patxname = ""vehicle.through_load_speed_limit""
[SDT_VAR]
var = vehicle.rail_depot_speed_limit
type = SLE_UINT16
flags = SF_GUI_VELOCITY
def = 61
min = 5
max = 100
interval = 5
str = STR_CONFIG_SETTING_RAIL_DEPOT_SPEED_LIMIT
strhelp = STR_CONFIG_SETTING_RAIL_DEPOT_SPEED_LIMIT_HELPTEXT
strval = STR_JUST_VELOCITY
cat = SC_EXPERT
patxname = ""vehicle.rail_depot_speed_limit""
[SDT_BOOL]
var = pf.forbid_90_deg
def = false

@ -1077,7 +1077,7 @@ Train::MaxSpeedInfo Train::GetCurrentMaxSpeedInfoInternal(bool update_state) con
if (u->track == TRACK_BIT_DEPOT) {
SetBit(const_cast<Train *>(this)->flags, VRF_CONSIST_SPEED_REDUCTION);
if (_settings_game.vehicle.train_acceleration_model == AM_REALISTIC) {
max_speed = std::min(max_speed, 61);
max_speed = std::min<int>(max_speed, _settings_game.vehicle.rail_depot_speed_limit);
}
continue;
}
@ -1112,9 +1112,11 @@ Train::MaxSpeedInfo Train::GetCurrentMaxSpeedInfoInternal(bool update_state) con
}
TrainDecelerationStats stats(this, this->lookahead->cached_zpos);
if (HasBit(this->lookahead->flags, TRLF_DEPOT_END)) {
LimitSpeedFromLookAhead(max_speed, stats, this->lookahead->current_position, this->lookahead->reservation_end_position - TILE_SIZE, 61, this->lookahead->reservation_end_z - stats.z_pos);
LimitSpeedFromLookAhead(max_speed, stats, this->lookahead->current_position, this->lookahead->reservation_end_position - TILE_SIZE,
_settings_game.vehicle.rail_depot_speed_limit, this->lookahead->reservation_end_z - stats.z_pos);
} else {
LimitSpeedFromLookAhead(max_speed, stats, this->lookahead->current_position, this->lookahead->reservation_end_position, 0, this->lookahead->reservation_end_z - stats.z_pos);
LimitSpeedFromLookAhead(max_speed, stats, this->lookahead->current_position, this->lookahead->reservation_end_position,
0, this->lookahead->reservation_end_z - stats.z_pos);
}
VehicleOrderID current_order_index = this->cur_real_order_index;
const Order *order = &(this->current_order);

Loading…
Cancel
Save