Departures: Show station via departures using yellow text for the time

pull/749/head
Jonathan G Rennison 2 weeks ago
parent 1fd1c77586
commit c9ad1aec51

@ -86,14 +86,19 @@ struct OrderDateQueueItem {
}
};
inline bool IsStationOrderWithWait(const Order *order)
{
return ((order->GetWaitTime() != 0 || order->IsWaitTimetabled()) && !(order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION));
}
template <typename LOAD_FILTER>
bool IsArrivalDepartureTest(const DepartureCallingSettings &settings, const Order *order, LOAD_FILTER load_filter)
bool IsArrivalDepartureTest(DepartureCallingSettings settings, const Order *order, LOAD_FILTER load_filter)
{
if (order->GetType() == OT_GOTO_STATION) {
if (!settings.departure_no_load_test && !load_filter(order)) return false;
return settings.allow_via || ((order->GetWaitTime() != 0 || order->IsWaitTimetabled()) && !(order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION));
if (!settings.DepartureNoLoadTest() && !load_filter(order)) return false;
return settings.AllowVia() || IsStationOrderWithWait(order);
} else if (order->GetType() == OT_GOTO_WAYPOINT) {
if (settings.allow_via) return true;
if (settings.AllowVia()) return true;
return (order->GetWaitTime() != 0 || order->IsWaitTimetabled());
} else {
return true;
@ -116,6 +121,11 @@ bool DepartureCallingSettings::IsArrival(const Order *order, const DepartureOrde
});
}
bool DepartureCallingSettings::ShouldShowAsVia(const Order *order) const
{
return this->CheckShowAsViaType() && (order->GetType() == OT_GOTO_STATION) && !IsStationOrderWithWait(order);
}
static uint8_t GetNonScheduleDepartureConditionalOrderMode(const Order *order, const Vehicle *v, StateTicks eval_tick)
{
if (order->GetConditionVariable() == OCV_UNCONDITIONALLY) return 1;
@ -291,10 +301,10 @@ static void ScheduledDispatchDepartureLocalFix(DepartureList &departure_list)
});
}
static bool IsVehicleUsableForDepartures(const Vehicle *v, const DepartureCallingSettings &calling_settings)
static bool IsVehicleUsableForDepartures(const Vehicle *v, DepartureCallingSettings calling_settings)
{
if (v->GetNumOrders() == 0) return false;
if (calling_settings.show_pax != calling_settings.show_freight) {
if (calling_settings.ShowPax() != calling_settings.ShowFreight()) {
bool carries_passengers = false;
const Vehicle *u = v;
@ -306,7 +316,7 @@ static bool IsVehicleUsableForDepartures(const Vehicle *v, const DepartureCallin
u = u->Next();
}
if (carries_passengers != calling_settings.show_pax) {
if (carries_passengers != calling_settings.ShowPax()) {
return false;
}
}
@ -320,7 +330,7 @@ static bool IsVehicleUsableForDepartures(const Vehicle *v, const DepartureCallin
}
static void GetDepartureCandidateOrderDatesFromVehicle(std::vector<OrderDate> &next_orders, const Vehicle *v, const DepartureOrderDestinationDetector &source, const DepartureType type,
const DepartureCallingSettings &calling_settings, const Ticks max_ticks, ScheduledDispatchCache &schdispatch_last_planned_dispatch)
DepartureCallingSettings calling_settings, const Ticks max_ticks, ScheduledDispatchCache &schdispatch_last_planned_dispatch)
{
if (!IsVehicleUsableForDepartures(v, calling_settings)) return;
@ -492,7 +502,7 @@ bool DepartureViaTerminusState::CheckOrder(const Vehicle *v, Departure *d, const
if (order->GetType() == OT_GOTO_STATION &&
source.OrderMatches(order) &&
(order->GetUnloadType() != OUFB_NO_UNLOAD ||
calling_settings.show_all_stops) &&
calling_settings.ShowAllStops()) &&
(((order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) == 0) || ((d->order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) != 0))) {
/* If we're not calling anywhere, then skip this departure. */
this->found_terminus = (d->calling_at.size() > 0);
@ -568,7 +578,7 @@ bool DepartureViaTerminusState::HandleCallingPoint(Departure *d, const Order *or
static bool IsIgnorableCallingAtOrder(const Order *order, DepartureCallingSettings calling_settings)
{
if ((order->GetUnloadType() == OUFB_NO_UNLOAD &&
!calling_settings.show_all_stops) ||
!calling_settings.ShowAllStops()) ||
(order->GetType() != OT_GOTO_STATION &&
order->GetType() != OT_IMPLICIT) ||
order->GetNonStopType() == ONSF_NO_STOP_AT_ANY_STATION ||
@ -605,7 +615,7 @@ static bool ProcessArrivalHistory(Departure *d, std::span<const Order *> arrival
}
if ((o->GetLoadType() != OLFB_NO_LOAD ||
calling_settings.show_all_stops) &&
calling_settings.ShowAllStops()) &&
(o->GetType() == OT_GOTO_STATION ||
o->GetType() == OT_IMPLICIT) &&
!source.StationMatches(o->GetDestination()) &&
@ -629,7 +639,7 @@ static bool ProcessArrivalHistory(Departure *d, std::span<const Order *> arrival
const Order *o = arrival_history[i];
if (o->GetType() == OT_GOTO_STATION &&
(o->GetLoadType() != OLFB_NO_LOAD ||
calling_settings.show_all_stops) &&
calling_settings.ShowAllStops()) &&
(o->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) == 0) {
d->calling_at.push_back(CallAt((StationID)o->GetDestination()));
}
@ -660,7 +670,7 @@ static DepartureList MakeDepartureListLiveMode(DepartureOrderDestinationDetector
/* This code can probably be made more efficient. I haven't done so in order to keep both its (relative) simplicity and my (relative) sanity. */
/* Having written that, it's not exactly slow at the moment. */
if (!calling_settings.show_pax && !calling_settings.show_freight) return {};
if (!calling_settings.ShowPax() && !calling_settings.ShowFreight()) return {};
/* The list of departures which will be returned as a result. */
std::vector<std::unique_ptr<Departure>> result;
@ -725,6 +735,7 @@ static DepartureList MakeDepartureListLiveMode(DepartureOrderDestinationDetector
d->status = lod.status;
d->vehicle = lod.v;
d->type = type;
d->show_as_via = calling_settings.ShouldShowAsVia(lod.order);
d->order = lod.order;
d->scheduled_waiting_time = lod.scheduled_waiting_time;
@ -1119,6 +1130,7 @@ void DepartureListScheduleModeSlotEvaluator::EvaluateFromSourceOrder(const Order
d.status = D_SCHEDULED;
d.vehicle = this->v;
d.type = this->type;
d.show_as_via = this->calling_settings.ShouldShowAsVia(source_order);
d.order = source_order;
d.scheduled_waiting_time = 0;

@ -596,11 +596,10 @@ public:
ClrBit(list_source.order_type_mask, OT_IMPLICIT); // Not interested in implicit orders in this phase
DepartureCallingSettings settings;
settings.allow_via = (this->source_type != DST_STATION) || this->show_via;
settings.departure_no_load_test = (this->source_type == DST_WAYPOINT) || _settings_client.gui.departure_show_all_stops;
settings.show_all_stops = _settings_client.gui.departure_show_all_stops;
settings.show_pax = show_pax;
settings.show_freight = show_freight;
settings.SetViaMode((this->source_type != DST_STATION) || this->show_via, (this->source_type == DST_STATION) && this->show_via);
settings.SetDepartureNoLoadTest((this->source_type == DST_WAYPOINT) || _settings_client.gui.departure_show_all_stops);
settings.SetShowAllStops(_settings_client.gui.departure_show_all_stops);
settings.SetCargoFilter(show_pax, show_freight);
if (this->mode != DM_ARRIVALS) {
this->departures = MakeDepartureList(this->source_mode, list_source, this->vehicles, D_DEPARTURE, settings);
@ -869,20 +868,24 @@ void DeparturesWindow::DrawDeparturesListItems(const Rect &r) const
if (d->terminus == INVALID_STATION) continue;
StringID time_str;
TextColour time_colour = d->show_as_via ? TC_YELLOW : TC_ORANGE;
if (this->mode == DM_COMBINED) {
time_str = STR_DEPARTURES_TIME_BOTH;
SetDParam(0, STR_JUST_TT_TIME_ABS);
SetDParam(1, d->scheduled_tick - d->EffectiveWaitingTime());
SetDParam(2, STR_JUST_TT_TIME_ABS);
SetDParam(3, d->scheduled_tick);
SetDParam(0, time_colour);
SetDParam(1, STR_JUST_TT_TIME_ABS);
SetDParam(2, d->scheduled_tick - d->EffectiveWaitingTime());
SetDParam(3, time_colour);
SetDParam(4, STR_JUST_TT_TIME_ABS);
SetDParam(5, d->scheduled_tick);
} else {
if (this->mode == DM_SEPARATE) {
time_str = (d->type == D_DEPARTURE) ? STR_DEPARTURES_TIME_DEP : STR_DEPARTURES_TIME_ARR;
} else {
time_str = STR_DEPARTURES_TIME;
}
SetDParam(0, STR_JUST_TT_TIME_ABS);
SetDParam(1, d->scheduled_tick);
SetDParam(0, time_colour);
SetDParam(1, STR_JUST_TT_TIME_ABS);
SetDParam(2, d->scheduled_tick);
}
ltr ? DrawString( text_left, text_left + time_width, y + 1, time_str)
: DrawString(text_right - time_width, text_right, y + 1, time_str);

@ -89,6 +89,7 @@ struct Departure {
std::vector<RemoveVia> remove_vias; ///< Vias to remove when using smart terminus.
DepartureStatus status; ///< Whether the vehicle has arrived yet for this departure
DepartureType type; ///< The type of the departure (departure or arrival)
bool show_as_via; ///< Show as via departure
const Vehicle *vehicle; ///< The vehicle performing this departure
const Order *order; ///< The order corresponding to this departure
Ticks scheduled_waiting_time; ///< Scheduled waiting time if scheduled dispatch is used
@ -108,8 +109,8 @@ struct Departure {
this->vehicle->type == d.vehicle->type &&
this->via == d.via &&
this->via2 == d.via2 &&
this->type == d.type
;
this->type == d.type &&
this->show_as_via == d.show_as_via;
}
inline Ticks EffectiveWaitingTime() const
@ -142,14 +143,50 @@ struct DepartureOrderDestinationDetector {
};
struct DepartureCallingSettings {
bool allow_via = false;
bool departure_no_load_test = false;
bool show_all_stops = false;
bool show_pax = false;
bool show_freight = false;
private:
uint8_t flags = 0;
struct FlagBits {
enum {
AllowVia = 0,
CheckShowAsViaType,
DepartureNoLoadTest,
ShowAllStops,
ShowPax,
ShowFreight,
};
};
public:
inline bool AllowVia() const { return HasBit(this->flags, FlagBits::AllowVia); }
inline bool CheckShowAsViaType() const { return HasBit(this->flags, FlagBits::CheckShowAsViaType); }
inline bool DepartureNoLoadTest() const { return HasBit(this->flags, FlagBits::DepartureNoLoadTest); }
inline bool ShowAllStops() const { return HasBit(this->flags, FlagBits::ShowAllStops); }
inline bool ShowPax() const { return HasBit(this->flags, FlagBits::ShowPax); }
inline bool ShowFreight() const { return HasBit(this->flags, FlagBits::ShowFreight); }
inline void SetViaMode(bool allow_via, bool check_show_as_via_type)
{
AssignBit(this->flags, FlagBits::AllowVia, allow_via);
AssignBit(this->flags, FlagBits::CheckShowAsViaType, check_show_as_via_type);
}
inline void SetDepartureNoLoadTest(bool no_test)
{
AssignBit(this->flags, FlagBits::DepartureNoLoadTest, no_test);
}
inline void SetShowAllStops(bool all_stops)
{
AssignBit(this->flags, FlagBits::ShowAllStops, all_stops);
}
inline void SetCargoFilter(bool pax, bool freight)
{
AssignBit(this->flags, FlagBits::ShowPax, pax);
AssignBit(this->flags, FlagBits::ShowFreight, freight);
}
bool IsDeparture(const Order *order, const DepartureOrderDestinationDetector &source) const;
bool IsArrival(const Order *order, const DepartureOrderDestinationDetector &source) const;
bool ShouldShowAsVia(const Order *order) const;
};
typedef std::vector<std::unique_ptr<Departure>> DepartureList;

@ -1180,10 +1180,10 @@ STR_DEPARTURES_SHOW_AIRCRAFT_TOOLTIP :{BLACK}Zobrazit
STR_DEPARTURES_SHOW_TYPE_TOOLTIP_CTRL_SUFFIX :{BLACK}{STRING}. Ctrl+kliknutí je zobrazí samostatně.
STR_DEPARTURES_EMPTY :{ORANGE}Tuto stanici aktuálně nemá v jízdním řádu žádné vozidlo.
STR_DEPARTURES_NONE_SELECTED :{ORANGE}Nejsou požadovány žádné informace z jízdního řádu.
STR_DEPARTURES_TIME :{ORANGE}{STRING}
STR_DEPARTURES_TIME_DEP :{ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{ORANGE}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{ORANGE}{STRING} {RED}{DOWN_ARROW} {ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME :{COLOUR}{STRING}
STR_DEPARTURES_TIME_DEP :{COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{COLOUR}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{COLOUR}{STRING} {RED}{DOWN_ARROW} {COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING}
STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} přes {STRING}
STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} přes

@ -1360,10 +1360,10 @@ STR_DEPARTURES_SHOW_AIRCRAFT_TOOLTIP :{BLACK}Show tim
STR_DEPARTURES_SHOW_TYPE_TOOLTIP_CTRL_SUFFIX :{BLACK}{STRING}. Ctrl+Click to show exclusively.
STR_DEPARTURES_EMPTY :{ORANGE}No vehicles are currently timetabled.
STR_DEPARTURES_NONE_SELECTED :{ORANGE}No timetable information has been requested.
STR_DEPARTURES_TIME :{ORANGE}{STRING1}
STR_DEPARTURES_TIME_DEP :{ORANGE}{STRING1} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{ORANGE}{STRING1} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{ORANGE}{STRING1} {RED}{DOWN_ARROW} {ORANGE}{STRING1} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME :{COLOUR}{STRING1}
STR_DEPARTURES_TIME_DEP :{COLOUR}{STRING1} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{COLOUR}{STRING1} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{COLOUR}{STRING1} {RED}{DOWN_ARROW} {COLOUR}{STRING1} {GREEN}{UP_ARROW}
STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING}
STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} via {STRING}
STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} via

@ -1302,10 +1302,10 @@ STR_DEPARTURES_SHOW_AIRCRAFT_TOOLTIP :{BLACK}Amosar p
STR_DEPARTURES_SHOW_TYPE_TOOLTIP_CTRL_SUFFIX :{BLACK}{STRING}. Ctrl+Click para amosar exclusivamente
STR_DEPARTURES_EMPTY :{ORANGE}Non hai vehículos actualmente programados para esta estación
STR_DEPARTURES_NONE_SELECTED :{ORANGE}Non se solicitou información dos horarios
STR_DEPARTURES_TIME :{ORANGE}{STRING}
STR_DEPARTURES_TIME_DEP :{ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{ORANGE}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{ORANGE}{STRING} {RED}{DOWN_ARROW} {ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME :{COLOUR}{STRING}
STR_DEPARTURES_TIME_DEP :{COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{COLOUR}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{COLOUR}{STRING} {RED}{DOWN_ARROW} {COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING}
STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} vía {STRING}
STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} vía

@ -1062,10 +1062,10 @@ STR_DEPARTURES_VIA_TOOLTIP :{BLACK}Zeige ge
STR_DEPARTURES_SHOW_TYPE_TOOLTIP_CTRL_SUFFIX :{BLACK}{STRING}. Strg+Klick zur exklusiven Anzeige.
STR_DEPARTURES_EMPTY :{ORANGE}Aktuell sind für diese Station keine Fahrzeuge geplant.
STR_DEPARTURES_NONE_SELECTED :{ORANGE}Es wurde keine Fahrplanauskunft angefordert.
STR_DEPARTURES_TIME :{ORANGE}{STRING}
STR_DEPARTURES_TIME_DEP :{ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{ORANGE}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{ORANGE}{STRING} {RED}{DOWN_ARROW} {ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME :{COLOUR}{STRING}
STR_DEPARTURES_TIME_DEP :{COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{COLOUR}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{COLOUR}{STRING} {RED}{DOWN_ARROW} {COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING}
STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} über {STRING}
STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} über

@ -43,10 +43,10 @@ STR_DEPARTURES_VIA_BUTTON :{BLACK}経由
STR_DEPARTURES_VIA_TOOLTIP :{BLACK}通過車両を表示
STR_DEPARTURES_EMPTY :{ORANGE}現在、ダイヤを設定している車両はありません。
STR_DEPARTURES_NONE_SELECTED :{ORANGE}発車標が設定されていません。
STR_DEPARTURES_TIME :{ORANGE}{STRING}
STR_DEPARTURES_TIME_DEP :{ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{ORANGE}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{ORANGE}{STRING} {RED}{DOWN_ARROW} {ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME :{COLOUR}{STRING}
STR_DEPARTURES_TIME_DEP :{COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{COLOUR}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{COLOUR}{STRING} {RED}{DOWN_ARROW} {COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING}
STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} 経由 {STRING}経由
STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} 経由

@ -1302,10 +1302,10 @@ STR_DEPARTURES_SHOW_AIRCRAFT_TOOLTIP :{BLACK}이 역
STR_DEPARTURES_SHOW_TYPE_TOOLTIP_CTRL_SUFFIX :{BLACK}{STRING}. CTRL + 클릭하면 이 차량 종류만 보여줍니다
STR_DEPARTURES_EMPTY :{ORANGE}시간표가 지정된 차량이 없습니다.
STR_DEPARTURES_NONE_SELECTED :{ORANGE}표시할 정보를 선택하십시오.
STR_DEPARTURES_TIME :{ORANGE}{STRING}
STR_DEPARTURES_TIME_DEP :{ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{ORANGE}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{ORANGE}{STRING} {RED}{DOWN_ARROW} {ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME :{COLOUR}{STRING}
STR_DEPARTURES_TIME_DEP :{COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{COLOUR}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{COLOUR}{STRING} {RED}{DOWN_ARROW} {COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING}
STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} 경유 {STRING}
STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} 경유

@ -1309,10 +1309,10 @@ STR_DEPARTURES_SHOW_AIRCRAFT_TOOLTIP :{BLACK}Пока
STR_DEPARTURES_SHOW_TYPE_TOOLTIP_CTRL_SUFFIX :{BLACK}{STRING}. Ctrl+клик - показывать эксклюзивно.
STR_DEPARTURES_EMPTY :{ORANGE}Расписание для транспорта не составлено.
STR_DEPARTURES_NONE_SELECTED :{ORANGE}Информация о расписании не запрашивалась.
STR_DEPARTURES_TIME :{ORANGE}{STRING}
STR_DEPARTURES_TIME_DEP :{ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{ORANGE}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{ORANGE}{STRING} {RED}{DOWN_ARROW} {ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME :{COLOUR}{STRING}
STR_DEPARTURES_TIME_DEP :{COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{COLOUR}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{COLOUR}{STRING} {RED}{DOWN_ARROW} {COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING}
STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} через {STRING}
STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} через

@ -1304,10 +1304,10 @@ STR_DEPARTURES_SHOW_AIRCRAFT_TOOLTIP :{BLACK}仅显
STR_DEPARTURES_SHOW_TYPE_TOOLTIP_CTRL_SUFFIX :{BLACK}{STRING}。按住 <Ctrl> 键点击设置仅显示此类型载具
STR_DEPARTURES_EMPTY :{ORANGE}当前没有载具列入车站时刻表
STR_DEPARTURES_NONE_SELECTED :{ORANGE}没有被请求的时刻表信息
STR_DEPARTURES_TIME :{ORANGE}{STRING}
STR_DEPARTURES_TIME_DEP :{ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{ORANGE}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{ORANGE}{STRING} {RED}{DOWN_ARROW} {ORANGE}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME :{COLOUR}{STRING}
STR_DEPARTURES_TIME_DEP :{COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{COLOUR}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{COLOUR}{STRING} {RED}{DOWN_ARROW} {COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING}
STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING}经由{STRING}
STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING}经由

Loading…
Cancel
Save