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

This commit is contained in:
Jonathan G Rennison 2024-09-08 12:54:36 +01:00
parent 1fd1c77586
commit c9ad1aec51
11 changed files with 115 additions and 63 deletions

View File

@ -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> 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 (order->GetType() == OT_GOTO_STATION) {
if (!settings.departure_no_load_test && !load_filter(order)) return false; if (!settings.DepartureNoLoadTest() && !load_filter(order)) return false;
return settings.allow_via || ((order->GetWaitTime() != 0 || order->IsWaitTimetabled()) && !(order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)); return settings.AllowVia() || IsStationOrderWithWait(order);
} else if (order->GetType() == OT_GOTO_WAYPOINT) { } else if (order->GetType() == OT_GOTO_WAYPOINT) {
if (settings.allow_via) return true; if (settings.AllowVia()) return true;
return (order->GetWaitTime() != 0 || order->IsWaitTimetabled()); return (order->GetWaitTime() != 0 || order->IsWaitTimetabled());
} else { } else {
return true; 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) static uint8_t GetNonScheduleDepartureConditionalOrderMode(const Order *order, const Vehicle *v, StateTicks eval_tick)
{ {
if (order->GetConditionVariable() == OCV_UNCONDITIONALLY) return 1; 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 (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; bool carries_passengers = false;
const Vehicle *u = v; const Vehicle *u = v;
@ -306,7 +316,7 @@ static bool IsVehicleUsableForDepartures(const Vehicle *v, const DepartureCallin
u = u->Next(); u = u->Next();
} }
if (carries_passengers != calling_settings.show_pax) { if (carries_passengers != calling_settings.ShowPax()) {
return false; 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, 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; 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 && if (order->GetType() == OT_GOTO_STATION &&
source.OrderMatches(order) && source.OrderMatches(order) &&
(order->GetUnloadType() != OUFB_NO_UNLOAD || (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))) { (((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. */ /* If we're not calling anywhere, then skip this departure. */
this->found_terminus = (d->calling_at.size() > 0); 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) static bool IsIgnorableCallingAtOrder(const Order *order, DepartureCallingSettings calling_settings)
{ {
if ((order->GetUnloadType() == OUFB_NO_UNLOAD && if ((order->GetUnloadType() == OUFB_NO_UNLOAD &&
!calling_settings.show_all_stops) || !calling_settings.ShowAllStops()) ||
(order->GetType() != OT_GOTO_STATION && (order->GetType() != OT_GOTO_STATION &&
order->GetType() != OT_IMPLICIT) || order->GetType() != OT_IMPLICIT) ||
order->GetNonStopType() == ONSF_NO_STOP_AT_ANY_STATION || 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 || if ((o->GetLoadType() != OLFB_NO_LOAD ||
calling_settings.show_all_stops) && calling_settings.ShowAllStops()) &&
(o->GetType() == OT_GOTO_STATION || (o->GetType() == OT_GOTO_STATION ||
o->GetType() == OT_IMPLICIT) && o->GetType() == OT_IMPLICIT) &&
!source.StationMatches(o->GetDestination()) && !source.StationMatches(o->GetDestination()) &&
@ -629,7 +639,7 @@ static bool ProcessArrivalHistory(Departure *d, std::span<const Order *> arrival
const Order *o = arrival_history[i]; const Order *o = arrival_history[i];
if (o->GetType() == OT_GOTO_STATION && if (o->GetType() == OT_GOTO_STATION &&
(o->GetLoadType() != OLFB_NO_LOAD || (o->GetLoadType() != OLFB_NO_LOAD ||
calling_settings.show_all_stops) && calling_settings.ShowAllStops()) &&
(o->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) == 0) { (o->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) == 0) {
d->calling_at.push_back(CallAt((StationID)o->GetDestination())); 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. */ /* 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. */ /* 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. */ /* The list of departures which will be returned as a result. */
std::vector<std::unique_ptr<Departure>> result; std::vector<std::unique_ptr<Departure>> result;
@ -725,6 +735,7 @@ static DepartureList MakeDepartureListLiveMode(DepartureOrderDestinationDetector
d->status = lod.status; d->status = lod.status;
d->vehicle = lod.v; d->vehicle = lod.v;
d->type = type; d->type = type;
d->show_as_via = calling_settings.ShouldShowAsVia(lod.order);
d->order = lod.order; d->order = lod.order;
d->scheduled_waiting_time = lod.scheduled_waiting_time; d->scheduled_waiting_time = lod.scheduled_waiting_time;
@ -1119,6 +1130,7 @@ void DepartureListScheduleModeSlotEvaluator::EvaluateFromSourceOrder(const Order
d.status = D_SCHEDULED; d.status = D_SCHEDULED;
d.vehicle = this->v; d.vehicle = this->v;
d.type = this->type; d.type = this->type;
d.show_as_via = this->calling_settings.ShouldShowAsVia(source_order);
d.order = source_order; d.order = source_order;
d.scheduled_waiting_time = 0; d.scheduled_waiting_time = 0;

View File

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

View File

@ -89,6 +89,7 @@ struct Departure {
std::vector<RemoveVia> remove_vias; ///< Vias to remove when using smart terminus. std::vector<RemoveVia> remove_vias; ///< Vias to remove when using smart terminus.
DepartureStatus status; ///< Whether the vehicle has arrived yet for this departure DepartureStatus status; ///< Whether the vehicle has arrived yet for this departure
DepartureType type; ///< The type of the departure (departure or arrival) 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 Vehicle *vehicle; ///< The vehicle performing this departure
const Order *order; ///< The order corresponding to this departure const Order *order; ///< The order corresponding to this departure
Ticks scheduled_waiting_time; ///< Scheduled waiting time if scheduled dispatch is used 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->vehicle->type == d.vehicle->type &&
this->via == d.via && this->via == d.via &&
this->via2 == d.via2 && this->via2 == d.via2 &&
this->type == d.type this->type == d.type &&
; this->show_as_via == d.show_as_via;
} }
inline Ticks EffectiveWaitingTime() const inline Ticks EffectiveWaitingTime() const
@ -142,14 +143,50 @@ struct DepartureOrderDestinationDetector {
}; };
struct DepartureCallingSettings { struct DepartureCallingSettings {
bool allow_via = false; private:
bool departure_no_load_test = false; uint8_t flags = 0;
bool show_all_stops = false;
bool show_pax = false; struct FlagBits {
bool show_freight = false; 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 IsDeparture(const Order *order, const DepartureOrderDestinationDetector &source) const;
bool IsArrival(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; typedef std::vector<std::unique_ptr<Departure>> DepartureList;

View File

@ -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_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_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_NONE_SELECTED :{ORANGE}Nejsou požadovány žádné informace z jízdního řádu.
STR_DEPARTURES_TIME :{ORANGE}{STRING} STR_DEPARTURES_TIME :{COLOUR}{STRING}
STR_DEPARTURES_TIME_DEP :{ORANGE}{STRING} {GREEN}{UP_ARROW} STR_DEPARTURES_TIME_DEP :{COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{ORANGE}{STRING} {RED}{DOWN_ARROW} STR_DEPARTURES_TIME_ARR :{COLOUR}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{ORANGE}{STRING} {RED}{DOWN_ARROW} {ORANGE}{STRING} {GREEN}{UP_ARROW} STR_DEPARTURES_TIME_BOTH :{COLOUR}{STRING} {RED}{DOWN_ARROW} {COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING} STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING}
STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} přes {STRING} STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} přes {STRING}
STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} přes STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} přes

View File

@ -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_SHOW_TYPE_TOOLTIP_CTRL_SUFFIX :{BLACK}{STRING}. Ctrl+Click to show exclusively.
STR_DEPARTURES_EMPTY :{ORANGE}No vehicles are currently timetabled. STR_DEPARTURES_EMPTY :{ORANGE}No vehicles are currently timetabled.
STR_DEPARTURES_NONE_SELECTED :{ORANGE}No timetable information has been requested. STR_DEPARTURES_NONE_SELECTED :{ORANGE}No timetable information has been requested.
STR_DEPARTURES_TIME :{ORANGE}{STRING1} STR_DEPARTURES_TIME :{COLOUR}{STRING1}
STR_DEPARTURES_TIME_DEP :{ORANGE}{STRING1} {GREEN}{UP_ARROW} STR_DEPARTURES_TIME_DEP :{COLOUR}{STRING1} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{ORANGE}{STRING1} {RED}{DOWN_ARROW} STR_DEPARTURES_TIME_ARR :{COLOUR}{STRING1} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{ORANGE}{STRING1} {RED}{DOWN_ARROW} {ORANGE}{STRING1} {GREEN}{UP_ARROW} STR_DEPARTURES_TIME_BOTH :{COLOUR}{STRING1} {RED}{DOWN_ARROW} {COLOUR}{STRING1} {GREEN}{UP_ARROW}
STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING} STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING}
STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} via {STRING} STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} via {STRING}
STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} via STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} via

View File

@ -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_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_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_NONE_SELECTED :{ORANGE}Non se solicitou información dos horarios
STR_DEPARTURES_TIME :{ORANGE}{STRING} STR_DEPARTURES_TIME :{COLOUR}{STRING}
STR_DEPARTURES_TIME_DEP :{ORANGE}{STRING} {GREEN}{UP_ARROW} STR_DEPARTURES_TIME_DEP :{COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{ORANGE}{STRING} {RED}{DOWN_ARROW} STR_DEPARTURES_TIME_ARR :{COLOUR}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{ORANGE}{STRING} {RED}{DOWN_ARROW} {ORANGE}{STRING} {GREEN}{UP_ARROW} STR_DEPARTURES_TIME_BOTH :{COLOUR}{STRING} {RED}{DOWN_ARROW} {COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING} STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING}
STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} vía {STRING} STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} vía {STRING}
STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} vía STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} vía

View File

@ -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_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_EMPTY :{ORANGE}Aktuell sind für diese Station keine Fahrzeuge geplant.
STR_DEPARTURES_NONE_SELECTED :{ORANGE}Es wurde keine Fahrplanauskunft angefordert. STR_DEPARTURES_NONE_SELECTED :{ORANGE}Es wurde keine Fahrplanauskunft angefordert.
STR_DEPARTURES_TIME :{ORANGE}{STRING} STR_DEPARTURES_TIME :{COLOUR}{STRING}
STR_DEPARTURES_TIME_DEP :{ORANGE}{STRING} {GREEN}{UP_ARROW} STR_DEPARTURES_TIME_DEP :{COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TIME_ARR :{ORANGE}{STRING} {RED}{DOWN_ARROW} STR_DEPARTURES_TIME_ARR :{COLOUR}{STRING} {RED}{DOWN_ARROW}
STR_DEPARTURES_TIME_BOTH :{ORANGE}{STRING} {RED}{DOWN_ARROW} {ORANGE}{STRING} {GREEN}{UP_ARROW} STR_DEPARTURES_TIME_BOTH :{COLOUR}{STRING} {RED}{DOWN_ARROW} {COLOUR}{STRING} {GREEN}{UP_ARROW}
STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING} STR_DEPARTURES_TERMINUS :{ORANGE}{STATION}{STRING}
STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} über {STRING} STR_DEPARTURES_TERMINUS_VIA_STATION :{ORANGE}{STATION}{STRING} über {STRING}
STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} über STR_DEPARTURES_TERMINUS_VIA :{ORANGE}{STATION}{STRING} über

View File

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

View File

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

View File

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

View File

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