Conditional order: Replace "next station" with manually set station
This commit is contained in:
@@ -1506,13 +1506,6 @@ STR_ORDER_DROP_SELL_DEPOT :Prodat vozidlo
|
||||
|
||||
STR_ORDER_CONDITIONAL_VEHICLE_IN_SLOT :Vozidlo ve slotu
|
||||
|
||||
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE_ORDER :{STRING}, že vyžaduje údržbu
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_ORDER :další stanice {STRING} čekající {STRING}
|
||||
STR_ORDER_CONDITIONAL_ACCEPTANCE :další stanice {STRING} {STRING}
|
||||
|
||||
STR_CONDITIONAL_FREE_PLATFORMS :Skočit na příkaz {COMMA}, když další stanice {STRING} {COMMA} {P "volné nástupiště" "volná nástupiště" "volných nástupišť"}
|
||||
STR_CONDITIONAL_PERCENT :Skočit na příkaz {COMMA} v {COMMA} procentech případů
|
||||
|
||||
STR_ORDER_CONDITIONAL_NEXT_STATION :Další stanice
|
||||
STR_ORDER_CONDITIONAL_CARGO_TOOLTIP :{BLACK}Náklad, s nímž mají být porovnávány údaje ze stanice
|
||||
STR_ORDER_CONDITIONAL_SLOT_TOOLTIP :{BLACK}Vlakový slot, jehož obsazenost má být ověřena
|
||||
@@ -1611,15 +1604,16 @@ STR_ORDER_RV_DIR_SE :[jihovýchodní
|
||||
STR_ORDER_RV_DIR_SW :[jihozápadní směr]
|
||||
STR_ORDER_RV_DIR_NW :[severozápadní směr]
|
||||
|
||||
STR_ORDER_CONDITIONAL_CARGO_ACCEPTANCE :Skočit na příkaz {COMMA}, když další stanice {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_DISPLAY :Skočit na příkaz {COMMA}, když další stanice {STRING} čekající {STRING}
|
||||
STR_ORDER_CONDITIONAL_PERCENT_DISPLAY :Skočit na příkaz {COMMA} v {COMMA} procentech případů
|
||||
STR_ORDER_CONDITIONAL_CARGO_ACCEPTANCE :Skočit na příkaz {COMMA}, když {STRING} {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_DISPLAY :Skočit na příkaz {COMMA}, když {STRING} {STRING} čekající {STRING}
|
||||
STR_ORDER_CONDITIONAL_SLOT :Skočit na příkaz {COMMA}, když {TRSLOT} {STRING}
|
||||
STR_ORDER_CONDITIONAL_INVALID_SLOT :Skočit na příkaz {COMMA}, když {PUSH_COLOUR}{RED}{STRING} {POP_COLOUR}{STRING}
|
||||
STR_ORDER_CONDITIONAL_IN_SLOT :Skočit na příkaz {COMMA}, když {STRING} slotu: {TRSLOT}
|
||||
STR_ORDER_CONDITIONAL_IN_INVALID_SLOT :Skočit na příkaz {COMMA}, když {STRING} {PUSH_COLOUR}{RED}{STRING} {POP_COLOUR}
|
||||
STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE_DISPLAY :Skočit na příkaz {COMMA}, když procento naložení {STRING} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_DISPLAY :Skočit na příkaz {COMMA}, když množství {STRING} v další stanici {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_VIA_DISPLAY :Skočit na příkaz {COMMA}, když množství {STRING} v další stanici přes {STATION} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_DISPLAY :Skočit na příkaz {COMMA}, když množství {STRING} v {STRING} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_VIA_DISPLAY :Skočit na příkaz {COMMA}, když množství {STRING} v {STRING} přes {STRING} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_COUNTER :Skočit na příkaz {COMMA}, když hodnota {TRCOUNTER} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_INVALID_COUNTER :Skočit na příkaz {COMMA}, když hodnota {PUSH_COLOUR}{RED}{STRING}{POP_COLOUR} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_TIME_HHMM :Skočit na příkaz {COMMA}, když {STRING} {STRING} {TIME_HHMM}
|
||||
|
@@ -18,6 +18,7 @@ STR_JUST_STRING3 :{STRING3}
|
||||
STR_JUST_VELOCITY :{VELOCITY}
|
||||
STR_JUST_TT_TICKS :{TT_TICKS}
|
||||
STR_JUST_TT_TICKS_LONG :{TT_TICKS_LONG}
|
||||
STR_JUST_STATION :{STATION}
|
||||
|
||||
STR_RED_INT :{RED}{NUM}
|
||||
|
||||
@@ -1566,13 +1567,6 @@ STR_ORDER_DROP_SELL_DEPOT :Sell vehicle
|
||||
|
||||
STR_ORDER_CONDITIONAL_VEHICLE_IN_SLOT :Vehicle in slot
|
||||
|
||||
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE_ORDER :Requires service {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_ORDER :Next station {STRING} {STRING} waiting
|
||||
STR_ORDER_CONDITIONAL_ACCEPTANCE :Next station {STRING} {STRING}
|
||||
|
||||
STR_CONDITIONAL_FREE_PLATFORMS :Jump to order {COMMA} when Next station {STRING} {COMMA} free platform{P "" s}
|
||||
STR_CONDITIONAL_PERCENT :Jump to order {COMMA} {COMMA} percent of times
|
||||
|
||||
STR_ORDER_CONDITIONAL_NEXT_STATION :Next station
|
||||
STR_ORDER_CONDITIONAL_CARGO_TOOLTIP :{BLACK}The cargo to compare the station data against
|
||||
STR_ORDER_CONDITIONAL_SLOT_TOOLTIP :{BLACK}The train slot to check the occupancy of
|
||||
@@ -1583,6 +1577,8 @@ STR_ORDER_CONDITIONAL_SCHED_SELECT_TOOLTIP :{BLACK}The disp
|
||||
STR_ORDER_CONDITIONAL_SCHED_TEST_TOOLTIP :{BLACK}The dispatch schedule condition to test
|
||||
STR_ORDER_CONDITIONAL_VIA :{BLACK}Via
|
||||
STR_ORDER_CONDITIONAL_VIA_TOOLTIP :{BLACK}The via station to check the waiting cargo amount for
|
||||
STR_ORDER_CONDITIONAL_STATION :{BLACK}Station
|
||||
STR_ORDER_CONDITIONAL_STATION_TOOLTIP :{BLACK}The station to check
|
||||
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_ACCEPTS :accepts
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_DOES_NOT_ACCEPT :does not accept
|
||||
@@ -1671,15 +1667,19 @@ STR_ORDER_RV_DIR_SE :[south-east dir
|
||||
STR_ORDER_RV_DIR_SW :[south-west direction]
|
||||
STR_ORDER_RV_DIR_NW :[north-west direction]
|
||||
|
||||
STR_ORDER_CONDITIONAL_CARGO_ACCEPTANCE :Jump to order {COMMA} when Next station {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_DISPLAY :Jump to order {COMMA} when Next station {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_UNDEFINED_STATION :{PUSH_COLOUR}{RED}undefined station{POP_COLOUR}
|
||||
|
||||
STR_ORDER_CONDITIONAL_FREE_PLATFORMS_DISPLAY :Jump to order {COMMA} when {STRING1} {STRING} {COMMA} free platform{P "" s}
|
||||
STR_ORDER_CONDITIONAL_PERCENT_DISPLAY :Jump to order {COMMA} {COMMA} percent of times
|
||||
STR_ORDER_CONDITIONAL_CARGO_ACCEPTANCE :Jump to order {COMMA} when {STRING1} {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_DISPLAY :Jump to order {COMMA} when {STRING1} {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_SLOT :Jump to order {COMMA} when {TRSLOT} {STRING}
|
||||
STR_ORDER_CONDITIONAL_INVALID_SLOT :Jump to order {COMMA} when {PUSH_COLOUR}{RED}{STRING} {POP_COLOUR}{STRING}
|
||||
STR_ORDER_CONDITIONAL_IN_SLOT :Jump to order {COMMA} when {STRING} slot: {TRSLOT}
|
||||
STR_ORDER_CONDITIONAL_IN_INVALID_SLOT :Jump to order {COMMA} when {STRING} {PUSH_COLOUR}{RED}{STRING} {POP_COLOUR}
|
||||
STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE_DISPLAY :Jump to order {COMMA} when Load percentage of {STRING} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_DISPLAY :Jump to order {COMMA} when {STRING} at next station {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_VIA_DISPLAY :Jump to order {COMMA} when {STRING} at next station via {STATION} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_DISPLAY :Jump to order {COMMA} when {STRING} at {STRING1} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_VIA_DISPLAY :Jump to order {COMMA} when {STRING} at {STRING1} via {STRING1} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_COUNTER :Jump to order {COMMA} when value of {TRCOUNTER} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_INVALID_COUNTER :Jump to order {COMMA} when value of {PUSH_COLOUR}{RED}{STRING}{POP_COLOUR} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_TIME_HHMM :Jump to order {COMMA} when {STRING} {STRING} {TIME_HHMM}
|
||||
|
@@ -1513,13 +1513,6 @@ STR_ORDER_DROP_SELL_DEPOT :Vender vehícul
|
||||
|
||||
STR_ORDER_CONDITIONAL_VEHICLE_IN_SLOT :Vehículo en slot
|
||||
|
||||
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE_ORDER :Precisa servizo {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_ORDER :Próxima estación {STRING} {STRING} agardando
|
||||
STR_ORDER_CONDITIONAL_ACCEPTANCE :Próxima estación {STRING} {STRING}
|
||||
|
||||
STR_CONDITIONAL_FREE_PLATFORMS :Saltar á orde {COMMA} cando a próxima estación {STRING} {COMMA} plataforma{P "" s} libre{P "" s}
|
||||
STR_CONDITIONAL_PERCENT :Saltar á orde {COMMA} {COMMA} porcentaxe das veces
|
||||
|
||||
STR_ORDER_CONDITIONAL_NEXT_STATION :Próxima estación
|
||||
STR_ORDER_CONDITIONAL_CARGO_TOOLTIP :{BLACK}A carga contra a que comparar os datos da estación
|
||||
STR_ORDER_CONDITIONAL_SLOT_TOOLTIP :{BLACK}O Slot de tren no que comprobar a ocupación
|
||||
@@ -1617,15 +1610,16 @@ STR_ORDER_RV_DIR_SE :[dirección sue
|
||||
STR_ORDER_RV_DIR_SW :[dirección suroeste]
|
||||
STR_ORDER_RV_DIR_NW :[dirección noroeste]
|
||||
|
||||
STR_ORDER_CONDITIONAL_CARGO_ACCEPTANCE :Saltar á orde {COMMA} cando a próxima estación {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_DISPLAY :Saltar á orde {COMMA} cando a pŕoxima estación {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_PERCENT_DISPLAY :Saltar á orde {COMMA} {COMMA} porcentaxe das veces
|
||||
STR_ORDER_CONDITIONAL_CARGO_ACCEPTANCE :Saltar á orde {COMMA} cando a {STRING} {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_DISPLAY :Saltar á orde {COMMA} cando a {STRING} {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_SLOT :Saltar á orde {COMMA} cando {TRSLOT} {STRING}
|
||||
STR_ORDER_CONDITIONAL_INVALID_SLOT :Saltar á orde {COMMA} cando {PUSH_COLOUR}{RED}{STRING} {POP_COLOUR}{STRING}
|
||||
STR_ORDER_CONDITIONAL_IN_SLOT :Saltar á orde {COMMA} cando {STRING} no slot: {TRSLOT}
|
||||
STR_ORDER_CONDITIONAL_IN_INVALID_SLOT :Saltar á orde {COMMA} cando {STRING} {PUSH_COLOUR}{RED}{STRING} {POP_COLOUR}
|
||||
STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE_DISPLAY :Saltar á orde {COMMA} cando o porcentaxe de carga de {STRING} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_DISPLAY :Saltar á orde {COMMA} cando {STRING} na próxima estación {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_VIA_DISPLAY :Saltar á orde {COMMA} cando {STRING} na próxima estación vía {STATION} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_DISPLAY :Saltar á orde {COMMA} cando {STRING} na {STRING} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_VIA_DISPLAY :Saltar á orde {COMMA} cando {STRING} na {STRING} vía {STRING} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_COUNTER :Saltar á orde {COMMA} cando o valor de {TRCOUNTER} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_INVALID_COUNTER :Saltar á orde {COMMA} cando o valor de {PUSH_COLOUR}{RED}{STRING}{POP_COLOUR} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_TIME_HHMM :Saltar á orde {COMMA} cando {STRING} {STRING} {TIME_HHMM}
|
||||
|
@@ -1353,13 +1353,6 @@ STR_ORDER_DROP_SELL_DEPOT :Fahrzeug verkau
|
||||
|
||||
STR_ORDER_CONDITIONAL_VEHICLE_IN_SLOT :Fahrzeug im Zeitfenster
|
||||
|
||||
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE_ORDER :Wartung erforderlich {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_ORDER :nächste Station {STRING} wartende{G 1 n "" s ""} {STRING}
|
||||
STR_ORDER_CONDITIONAL_ACCEPTANCE :nächste Station {STRING} {STRING}
|
||||
|
||||
STR_CONDITIONAL_FREE_PLATFORMS :Springe zu Auftrag {COMMA} wenn die nächste Station {STRING} {COMMA} freie{P n ""} Bahnsteig{P "" e}
|
||||
STR_CONDITIONAL_PERCENT :Springe zu Auftrag {COMMA} in {COMMA} Prozent der Fälle
|
||||
|
||||
STR_ORDER_CONDITIONAL_NEXT_STATION :nächste Station
|
||||
STR_ORDER_CONDITIONAL_CARGO_TOOLTIP :{BLACK}Frachtart, die mit der Stationsinformation verglichen wird
|
||||
STR_ORDER_CONDITIONAL_SLOT_TOOLTIP :{BLACK}Zugslot, dessen Auslastung geprüft wird
|
||||
@@ -1432,15 +1425,16 @@ STR_ORDER_RV_DIR_SE :[Südost-Richtu
|
||||
STR_ORDER_RV_DIR_SW :[Südwest-Richtung]
|
||||
STR_ORDER_RV_DIR_NW :[Nordwest-Richtung]
|
||||
|
||||
STR_ORDER_CONDITIONAL_CARGO_ACCEPTANCE :Springe zu Auftrag {COMMA}, wenn nächste Station {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_DISPLAY :Springe zu Auftrag {COMMA}, wenn nächste Station {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_PERCENT_DISPLAY :Springe zu Auftrag {COMMA} in {COMMA} Prozent der Fälle
|
||||
STR_ORDER_CONDITIONAL_CARGO_ACCEPTANCE :Springe zu Auftrag {COMMA}, wenn {STRING} {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_DISPLAY :Springe zu Auftrag {COMMA}, wenn {STRING} {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_SLOT :Springe zu Auftrag {COMMA}, wenn {TRSLOT} {STRING}
|
||||
STR_ORDER_CONDITIONAL_INVALID_SLOT :Springe zu Auftrag {COMMA}, wenn {PUSH_COLOUR}{RED}{STRING} {POP_COLOUR}{STRING}
|
||||
STR_ORDER_CONDITIONAL_IN_SLOT :Springe zu Auftrag {COMMA}, wenn {STRING} Slot: {TRSLOT}
|
||||
STR_ORDER_CONDITIONAL_IN_INVALID_SLOT :Springe zu Auftrag {COMMA}, wenn {STRING} {PUSH_COLOUR}{RED}{STRING} {POP_COLOUR}
|
||||
STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE_DISPLAY :Springe zu Auftrag {COMMA}, wenn Ladezustand (Prozent) gleich {STRING} {STRING} {COMMA} ist
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_DISPLAY :Springe zu Auftrag {COMMA}, wenn {STRING} bei nächster Station {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_VIA_DISPLAY :Springe zu Auftrag {COMMA}, wenn {STRING} bei nächster Station über {STATION} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_DISPLAY :Springe zu Auftrag {COMMA}, wenn {STRING} bei {STRING} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_VIA_DISPLAY :Springe zu Auftrag {COMMA}, wenn {STRING} bei {STRING} über {STRING} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_COUNTER :Springe zu Auftrag {COMMA}, wenn Wert von {TRCOUNTER} {STRING} {COMMA} ist
|
||||
STR_ORDER_CONDITIONAL_INVALID_COUNTER :Springe zu Auftrag {COMMA}, wenn Wert von {PUSH_COLOUR}{RED}{STRING}{POP_COLOUR} {STRING} {COMMA} ist
|
||||
STR_ORDER_CONDITIONAL_TIME_HHMM :Springe zu Auftrag {COMMA}, wenn {STRING} {STRING} {TIME_HHMM}
|
||||
|
@@ -1513,13 +1513,6 @@ STR_ORDER_DROP_SELL_DEPOT :판매
|
||||
|
||||
STR_ORDER_CONDITIONAL_VEHICLE_IN_SLOT :{G=m}슬롯에 있는 차량
|
||||
|
||||
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE_ORDER :서비스 {STRING}가 필요함
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_ORDER :다음 역 {STRING} {STRING} 대기 중
|
||||
STR_ORDER_CONDITIONAL_ACCEPTANCE :다음 역 {STRING} {STRING}
|
||||
|
||||
STR_CONDITIONAL_FREE_PLATFORMS :[조건 경로] {COMMA}번 경로로 건너뛰기 (다음 역에 빈 승강장이 {2:COMMA}개 {1:STRING})
|
||||
STR_CONDITIONAL_PERCENT :[조건 경로] {COMMA}번 경로로 건너뛰기 ({COMMA}%의 확률로)
|
||||
|
||||
STR_ORDER_CONDITIONAL_NEXT_STATION :다음 역:
|
||||
STR_ORDER_CONDITIONAL_CARGO_TOOLTIP :{BLACK}비교할 화물을 선택하세요
|
||||
STR_ORDER_CONDITIONAL_SLOT_TOOLTIP :{BLACK}점유되었는지 확인할 슬롯을 선택하세요
|
||||
@@ -1618,15 +1611,12 @@ STR_ORDER_RV_DIR_SE :[남동쪽 방
|
||||
STR_ORDER_RV_DIR_SW :[남서쪽 방향]
|
||||
STR_ORDER_RV_DIR_NW :[북서쪽 방향]
|
||||
|
||||
STR_ORDER_CONDITIONAL_CARGO_ACCEPTANCE :[조건 경로] {COMMA}번 경로로 건너뛰기 (다음 역이 {2:STRING}{G 2 "을" "를"} {1:STRING})
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_DISPLAY :[조건 경로] {COMMA}번 경로로 건너뛰기 (다음 역에 {2:STRING}{G 2 "이" "가"} {1:STRING})
|
||||
STR_ORDER_CONDITIONAL_PERCENT_DISPLAY :[조건 경로] {COMMA}번 경로로 건너뛰기 ({COMMA}%의 확률로)
|
||||
STR_ORDER_CONDITIONAL_SLOT :[조건 경로] {COMMA}번 경로로 건너뛰기 ({TRSLOT} 슬롯이 {STRING})
|
||||
STR_ORDER_CONDITIONAL_INVALID_SLOT :[조건 경로] {COMMA}번 경로로 건너뛰기 ({PUSH_COLOUR}{RED}{STRING}{POP_COLOUR} 슬롯이 {STRING})
|
||||
STR_ORDER_CONDITIONAL_IN_SLOT :[조건 경로] {COMMA}번 경로로 건너뛰기 (열차가 {2:TRSLOT} 슬롯에 {1:STRING})
|
||||
STR_ORDER_CONDITIONAL_IN_INVALID_SLOT :[조건 경로] {COMMA}번 경로로 건너뛰기 (열차가 {PUSH_COLOUR}{RED}{2:STRING}{POP_COLOUR}{1:STRING})
|
||||
STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE_DISPLAY :[조건 경로] {COMMA}번 경로로 건너뛰기 ({STRING}의 적재율 {STRING} {COMMA}일 때)
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_DISPLAY :[조건 경로] {COMMA}번 경로로 건너뛰기 (다음 역의 {STRING} 대기량 {STRING} {CARGO_SHORT}일 때)
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_VIA_DISPLAY :[조건 경로] {COMMA}번 경로로 건너뛰기 (다음 역에 있는 {2:STATION} 경유 {1:STRING} {3:STRING} {4:CARGO_SHORT}일 때)
|
||||
STR_ORDER_CONDITIONAL_COUNTER :[조건 경로] {COMMA}번 경로로 건너뛰기 ({TRCOUNTER}의 값 {STRING} {COMMA}일 때)
|
||||
STR_ORDER_CONDITIONAL_INVALID_COUNTER :[조건 경로] {COMMA}번 경로로 건너뛰기 ({PUSH_COLOUR}{RED}{STRING}{POP_COLOUR}의 값 {STRING} {COMMA}일 때)
|
||||
STR_ORDER_CONDITIONAL_TIME_HHMM :[조건 경로] {COMMA}번 경로로 건너뛰기 ({STRING} {STRING} {TIME_HHMM}일 때)
|
||||
|
@@ -54,9 +54,6 @@ STR_PURCHASE_INFO_DESIGNED :{BLACK}Разр
|
||||
STR_BUY_REFIT_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Переоборудовать
|
||||
STR_BUY_REFIT_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Переоборудовать купленное транспортное средство сразу после покупки для выделенного вида груза
|
||||
|
||||
STR_CONDITIONAL_FREE_PLATFORMS :Перейти к заданию {COMMA} когда след. станция {STRING} {COMMA} свободн{P ая ые ых} платформ{P а ы ""}
|
||||
STR_CONDITIONAL_PERCENT :Перейти к заданию {COMMA} {COMMA} процентов времени
|
||||
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_ACCEPTS :принимает
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_DOES_NOT_ACCEPT :не принимает
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_HAS :имеет
|
||||
@@ -66,6 +63,8 @@ STR_ORDER_CONDITIONAL_COMPARATOR_HAS_LESS_EQUALS :имеет ме
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_HAS_MORE_THAN :имеет больше чем
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_HAS_MORE_EQUALS :имеет больше или равно
|
||||
|
||||
STR_ORDER_CONDITIONAL_PERCENT_DISPLAY :Перейти к заданию {COMMA} {COMMA} процентов времени
|
||||
|
||||
# Cargo type orders Window
|
||||
|
||||
# Plans window
|
||||
|
@@ -1422,13 +1422,6 @@ STR_ORDER_DROP_SELL_DEPOT :卖出车辆
|
||||
|
||||
STR_ORDER_CONDITIONAL_VEHICLE_IN_SLOT :条目内车辆
|
||||
|
||||
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE_ORDER :服务需求 {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_ORDER :下一站 {STRING} {STRING} 等待中
|
||||
STR_ORDER_CONDITIONAL_ACCEPTANCE :下一站 {STRING} {STRING}
|
||||
|
||||
STR_CONDITIONAL_FREE_PLATFORMS :跳转至调度计划 {COMMA} 当下一站 {STRING} {COMMA} 拥有自由站台
|
||||
STR_CONDITIONAL_PERCENT :跳转至调度计划 {COMMA} {COMMA} 次数百分比
|
||||
|
||||
STR_ORDER_CONDITIONAL_NEXT_STATION :下一站
|
||||
STR_ORDER_CONDITIONAL_CARGO_TOOLTIP :{BLACK}货物对比车站数据
|
||||
STR_ORDER_CONDITIONAL_SLOT_TOOLTIP :{BLACK}火车槽位检查占用率:
|
||||
@@ -1513,15 +1506,14 @@ STR_ORDER_RV_DIR_SE :[东南方]
|
||||
STR_ORDER_RV_DIR_SW :[西南方]
|
||||
STR_ORDER_RV_DIR_NW :[西北方]
|
||||
|
||||
STR_ORDER_CONDITIONAL_CARGO_ACCEPTANCE :跳至 {COMMA} [ 当 下一站 {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_DISPLAY :跳至 {COMMA} [ 当 下一站 {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_PERCENT_DISPLAY :跳转至调度计划 {COMMA} {COMMA} 次数百分比
|
||||
STR_ORDER_CONDITIONAL_CARGO_ACCEPTANCE :跳至 {COMMA} [ 当 {STRING} {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_DISPLAY :跳至 {COMMA} [ 当 {STRING} {STRING} {STRING}
|
||||
STR_ORDER_CONDITIONAL_SLOT :跳至 {COMMA} [ 当 {TRSLOT} {STRING}
|
||||
STR_ORDER_CONDITIONAL_INVALID_SLOT :跳至 {COMMA} [ 当 {PUSH_COLOUR}{RED}{STRING} {POP_COLOUR}{STRING}
|
||||
STR_ORDER_CONDITIONAL_IN_SLOT :跳至 {COMMA} [ 当 {STRING} 条目:{TRSLOT}
|
||||
STR_ORDER_CONDITIONAL_IN_INVALID_SLOT :跳至 {COMMA} [ 当 {STRING} {PUSH_COLOUR}{RED}{STRING} {POP_COLOUR}
|
||||
STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE_DISPLAY :跳至 {COMMA} [ 当 Load percentage of {STRING} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_DISPLAY :跳至 {COMMA} [ 当 {STRING} 在下一站 {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_VIA_DISPLAY :跳至 {COMMA} [ 当 {STRING} 在下一站 经由 {STATION} {STRING} {CARGO_SHORT}
|
||||
STR_ORDER_CONDITIONAL_COUNTER :跳至 {COMMA} [ 当 值:{TRCOUNTER} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_INVALID_COUNTER :跳至 {COMMA} [ 当 值:{PUSH_COLOUR}{RED}{STRING}{POP_COLOUR} {STRING} {COMMA}
|
||||
STR_ORDER_CONDITIONAL_TIME_HHMM :跳至 {COMMA} [ 当 {STRING} {STRING} {TIME_HHMM}
|
||||
|
@@ -71,6 +71,13 @@ void ClearOrderDestinationRefcountMap();
|
||||
* OCV_DISPATCH_SLOT: Bits 0-15: Dispatch schedule ID
|
||||
* OCV_PERCENT: Bits 0-7: Jump counter
|
||||
*/
|
||||
/*
|
||||
* xdata2 users:
|
||||
* OCV_CARGO_WAITING: Bits 0-15: Station ID to test + 1
|
||||
* OCV_CARGO_ACCEPTANCE: Bits 0-15: Station ID to test + 1
|
||||
* OCV_FREE_PLATFORMS: Bits 0-15: Station ID to test + 1
|
||||
* OCV_CARGO_WAITING_AMOUNT: Bits 0-15: Station ID to test + 1
|
||||
*/
|
||||
|
||||
struct OrderExtraInfo {
|
||||
uint8 cargo_type_flags[NUM_CARGO] = {}; ///< Load/unload types for each cargo type.
|
||||
|
@@ -1859,7 +1859,7 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
break;
|
||||
|
||||
case OT_CONDITIONAL:
|
||||
if (mof != MOF_COND_VARIABLE && mof != MOF_COND_COMPARATOR && mof != MOF_COND_VALUE && mof != MOF_COND_VALUE_2 && mof != MOF_COND_VALUE_3 && mof != MOF_COND_DESTINATION) return CMD_ERROR;
|
||||
if (mof != MOF_COND_VARIABLE && mof != MOF_COND_COMPARATOR && mof != MOF_COND_VALUE && mof != MOF_COND_VALUE_2 && mof != MOF_COND_VALUE_3 && mof != MOF_COND_DESTINATION && mof != MOF_COND_STATION_ID) return CMD_ERROR;
|
||||
break;
|
||||
|
||||
case OT_RELEASE_SLOT:
|
||||
@@ -2040,6 +2040,7 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
switch (order->GetConditionVariable()) {
|
||||
case OCV_CARGO_WAITING_AMOUNT:
|
||||
if (!(data == NEW_STATION || Station::GetIfValid(data) != nullptr)) return CMD_ERROR;
|
||||
if (GB(order->GetXData2(), 0, 16) - 1 == data) return CMD_ERROR;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -2047,6 +2048,14 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
}
|
||||
break;
|
||||
|
||||
case MOF_COND_STATION_ID:
|
||||
if (ConditionVariableHasStationID(order->GetConditionVariable())) {
|
||||
if (Station::GetIfValid(data) == nullptr) return CMD_ERROR;
|
||||
} else {
|
||||
return CMD_ERROR;
|
||||
}
|
||||
break;
|
||||
|
||||
case MOF_COND_DESTINATION:
|
||||
if (data >= v->GetNumOrders() || data == sel_ord) return CMD_ERROR;
|
||||
break;
|
||||
@@ -2314,6 +2323,14 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
SB(order->GetXDataRef(), 16, 16, data + 2);
|
||||
break;
|
||||
|
||||
case MOF_COND_STATION_ID:
|
||||
SB(order->GetXData2Ref(), 0, 16, data + 1);
|
||||
if (order->GetConditionVariable() == OCV_CARGO_WAITING_AMOUNT && data == GB(order->GetXData(), 16, 16) - 2) {
|
||||
/* Clear via if station is set to the same ID */
|
||||
SB(order->GetXDataRef(), 16, 16, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
case MOF_COND_DESTINATION:
|
||||
order->SetConditionSkipToOrder(data);
|
||||
break;
|
||||
@@ -2878,6 +2895,9 @@ void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination, bool
|
||||
if (type == OT_GOTO_STATION && o->GetConditionVariable() == OCV_CARGO_WAITING_AMOUNT) {
|
||||
if (GB(order->GetXData(), 16, 16) - 2 == destination) SB(order->GetXDataRef(), 16, 16, INVALID_STATION + 2);
|
||||
}
|
||||
if (type == OT_GOTO_STATION && ConditionVariableHasStationID(o->GetConditionVariable())) {
|
||||
if (GB(order->GetXData2(), 0, 16) - 1 == destination) SB(order->GetXData2Ref(), 0, 16, INVALID_STATION + 1);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (ot == OT_GOTO_DEPOT && (o->GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0) return false;
|
||||
@@ -3057,22 +3077,6 @@ bool EvaluateDispatchSlotConditionalOrder(const Order *order, const Vehicle *v,
|
||||
return OrderConditionCompare(order->GetConditionComparator(), value, 0);
|
||||
}
|
||||
|
||||
/** Gets the next 'real' station in the order list
|
||||
* @param v the vehicle in question
|
||||
* @param order the current (conditional) order
|
||||
* @return the StationID of the next valid station in the order list, or INVALID_STATION if there is none.
|
||||
*/
|
||||
static StationID GetNextRealStation(const Vehicle *v, const Order *order)
|
||||
{
|
||||
const uint max = std::min<uint>(64, v->GetNumOrders());
|
||||
for (uint i = 0; i < max; i++) {
|
||||
if (order->IsType(OT_GOTO_STATION) && Station::IsValidID(order->GetDestination())) return order->GetDestination();
|
||||
|
||||
order = (order->next != nullptr) ? order->next : v->GetFirstOrder();
|
||||
}
|
||||
return INVALID_STATION;
|
||||
}
|
||||
|
||||
static std::vector<TraceRestrictSlotID> _pco_deferred_slot_acquires;
|
||||
static std::vector<TraceRestrictSlotID> _pco_deferred_slot_releases;
|
||||
static btree::btree_map<TraceRestrictCounterID, int32> _pco_deferred_counter_values;
|
||||
@@ -3104,12 +3108,12 @@ VehicleOrderID ProcessConditionalOrder(const Order *order, const Vehicle *v, Pro
|
||||
case OCV_REQUIRES_SERVICE: skip_order = OrderConditionCompare(occ, v->NeedsServicing(), value); break;
|
||||
case OCV_UNCONDITIONALLY: skip_order = true; break;
|
||||
case OCV_CARGO_WAITING: {
|
||||
StationID next_station = GetNextRealStation(v, order);
|
||||
StationID next_station = GB(order->GetXData2(), 0, 16) - 1;
|
||||
if (Station::IsValidID(next_station)) skip_order = OrderConditionCompare(occ, (Station::Get(next_station)->goods[value].CargoAvailableCount() > 0), value);
|
||||
break;
|
||||
}
|
||||
case OCV_CARGO_WAITING_AMOUNT: {
|
||||
StationID next_station = GetNextRealStation(v, order);
|
||||
StationID next_station = GB(order->GetXData2(), 0, 16) - 1;
|
||||
if (Station::IsValidID(next_station)) {
|
||||
if (GB(order->GetXData(), 16, 16) == 0) {
|
||||
skip_order = OrderConditionCompare(occ, Station::Get(next_station)->goods[value].CargoAvailableCount(), GB(order->GetXData(), 0, 16));
|
||||
@@ -3120,7 +3124,7 @@ VehicleOrderID ProcessConditionalOrder(const Order *order, const Vehicle *v, Pro
|
||||
break;
|
||||
}
|
||||
case OCV_CARGO_ACCEPTANCE: {
|
||||
StationID next_station = GetNextRealStation(v, order);
|
||||
StationID next_station = GB(order->GetXData2(), 0, 16) - 1;
|
||||
if (Station::IsValidID(next_station)) skip_order = OrderConditionCompare(occ, HasBit(Station::Get(next_station)->goods[value].status, GoodsEntry::GES_ACCEPTANCE), value);
|
||||
break;
|
||||
}
|
||||
@@ -3177,7 +3181,7 @@ VehicleOrderID ProcessConditionalOrder(const Order *order, const Vehicle *v, Pro
|
||||
break;
|
||||
}
|
||||
case OCV_FREE_PLATFORMS: {
|
||||
StationID next_station = GetNextRealStation(v, order);
|
||||
StationID next_station = GB(order->GetXData2(), 0, 16) - 1;
|
||||
if (Station::IsValidID(next_station)) skip_order = OrderConditionCompare(occ, GetFreeStationPlatforms(next_station), value);
|
||||
break;
|
||||
}
|
||||
@@ -3673,7 +3677,7 @@ CommandCost CmdMassChangeOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, u
|
||||
int index = 0;
|
||||
bool changed = false;
|
||||
|
||||
for(Order *order : v->Orders()) {
|
||||
for (Order *order : v->Orders()) {
|
||||
if (order->GetDestination() == from_dest && order->IsType(order_type) &&
|
||||
!(order_type == OT_GOTO_DEPOT && order->GetDepotActionType() & ODATFB_NEAREST_DEPOT)) {
|
||||
Order new_order;
|
||||
|
@@ -35,7 +35,7 @@ inline void UnregisterOrderDestination(const Order *order, VehicleType type, Own
|
||||
template <typename F> void RemoveVehicleOrdersIf(Vehicle * const v, F order_predicate) {
|
||||
/* Clear the order from the order-list */
|
||||
int id = -1;
|
||||
for(Order *order = v->GetFirstOrder(); order != nullptr; order = order->next) {
|
||||
for (Order *order = v->GetFirstOrder(); order != nullptr; order = order->next) {
|
||||
id++;
|
||||
restart:
|
||||
|
||||
|
@@ -989,18 +989,29 @@ void DrawOrderString(const Vehicle *v, const Order *order, int order_index, int
|
||||
}
|
||||
|
||||
case OT_CONDITIONAL: {
|
||||
auto set_station_id = [&order](uint index, StringParameters &sp = _global_string_params) {
|
||||
const Station *st = Station::GetIfValid(GB(order->GetXData2(), 0, 16) - 1);
|
||||
if (st == nullptr) {
|
||||
sp.SetParam(index, STR_ORDER_CONDITIONAL_UNDEFINED_STATION);
|
||||
} else {
|
||||
sp.SetParam(index, STR_JUST_STATION);
|
||||
sp.SetParam(index + 1, st->index);
|
||||
}
|
||||
};
|
||||
|
||||
SetDParam(1, order->GetConditionSkipToOrder() + 1);
|
||||
const OrderConditionVariable ocv = order->GetConditionVariable( );
|
||||
const OrderConditionVariable ocv = order->GetConditionVariable();
|
||||
/* handle some non-ordinary cases seperately */
|
||||
if (ocv == OCV_UNCONDITIONALLY) {
|
||||
SetDParam(0, STR_ORDER_CONDITIONAL_UNCONDITIONAL);
|
||||
} else if (ocv == OCV_PERCENT) {
|
||||
SetDParam(0, STR_CONDITIONAL_PERCENT);
|
||||
SetDParam(0, STR_ORDER_CONDITIONAL_PERCENT_DISPLAY);
|
||||
SetDParam(2, order->GetConditionValue());
|
||||
} else if (ocv == OCV_FREE_PLATFORMS) {
|
||||
SetDParam(0, STR_CONDITIONAL_FREE_PLATFORMS );
|
||||
SetDParam(2, STR_ORDER_CONDITIONAL_COMPARATOR_HAS + order->GetConditionComparator());
|
||||
SetDParam(3, order->GetConditionValue());
|
||||
SetDParam(0, STR_ORDER_CONDITIONAL_FREE_PLATFORMS_DISPLAY);
|
||||
set_station_id(2);
|
||||
SetDParam(4, STR_ORDER_CONDITIONAL_COMPARATOR_HAS + order->GetConditionComparator());
|
||||
SetDParam(5, order->GetConditionValue());
|
||||
} else if (ocv == OCV_SLOT_OCCUPANCY) {
|
||||
if (TraceRestrictSlot::IsValidID(order->GetXData())) {
|
||||
SetDParam(0, STR_ORDER_CONDITIONAL_SLOT);
|
||||
@@ -1046,20 +1057,36 @@ void DrawOrderString(const Vehicle *v, const Order *order, int order_index, int
|
||||
SetDParam(3, STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS + order->GetConditionComparator());
|
||||
SetDParam(4, order->GetXData());
|
||||
} else if (ocv == OCV_CARGO_WAITING_AMOUNT) {
|
||||
char buf[512] = "";
|
||||
int64 args_array[10] = {};
|
||||
StringParameters tmp_params(args_array);
|
||||
StringID substr;
|
||||
|
||||
tmp_params.SetParam(0, order->GetConditionSkipToOrder() + 1);
|
||||
tmp_params.SetParam(1, CargoSpec::Get(order->GetConditionValue())->name);
|
||||
set_station_id(2, tmp_params);
|
||||
|
||||
if (GB(order->GetXData(), 16, 16) == 0) {
|
||||
SetDParam(0, STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_DISPLAY);
|
||||
SetDParam(2, CargoSpec::Get(order->GetConditionValue())->name);
|
||||
SetDParam(3, STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS + order->GetConditionComparator());
|
||||
SetDParam(4, order->GetConditionValue());
|
||||
SetDParam(5, GB(order->GetXData(), 0, 16));
|
||||
substr = STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_DISPLAY;
|
||||
tmp_params.SetParam(4, STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS + order->GetConditionComparator());
|
||||
tmp_params.SetParam(5, order->GetConditionValue());
|
||||
tmp_params.SetParam(6, GB(order->GetXData(), 0, 16));
|
||||
} else {
|
||||
SetDParam(0, STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_VIA_DISPLAY);
|
||||
SetDParam(2, CargoSpec::Get(order->GetConditionValue())->name);
|
||||
SetDParam(3, GB(order->GetXData(), 16, 16) - 2);
|
||||
SetDParam(4, STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS + order->GetConditionComparator());
|
||||
SetDParam(5, order->GetConditionValue());
|
||||
SetDParam(6, GB(order->GetXData(), 0, 16));
|
||||
substr = STR_ORDER_CONDITIONAL_CARGO_WAITING_AMOUNT_VIA_DISPLAY;
|
||||
const Station *via_st = Station::GetIfValid(GB(order->GetXData(), 16, 16) - 2);
|
||||
if (via_st == nullptr) {
|
||||
tmp_params.SetParam(4, STR_ORDER_CONDITIONAL_UNDEFINED_STATION);
|
||||
} else {
|
||||
tmp_params.SetParam(4, STR_JUST_STATION);
|
||||
tmp_params.SetParam(5, via_st->index);
|
||||
}
|
||||
tmp_params.SetParam(6, STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS + order->GetConditionComparator());
|
||||
tmp_params.SetParam(7, order->GetConditionValue());
|
||||
tmp_params.SetParam(8, GB(order->GetXData(), 0, 16));
|
||||
}
|
||||
char *end = GetStringWithArgs(buf, substr, &tmp_params, lastof(buf));
|
||||
_temp_special_strings[0].assign(buf, end);
|
||||
SetDParam(0, SPECSTR_TEMP_START);
|
||||
} else if (ocv == OCV_COUNTER_VALUE) {
|
||||
if (TraceRestrictCounter::IsValidID(GB(order->GetXData(), 16, 16))) {
|
||||
SetDParam(0, STR_ORDER_CONDITIONAL_COUNTER);
|
||||
@@ -1110,13 +1137,15 @@ void DrawOrderString(const Vehicle *v, const Order *order, int order_index, int
|
||||
switch (ocv) {
|
||||
case OCV_CARGO_ACCEPTANCE:
|
||||
SetDParam(0, STR_ORDER_CONDITIONAL_CARGO_ACCEPTANCE);
|
||||
SetDParam(2, STR_ORDER_CONDITIONAL_COMPARATOR_ACCEPTS + occ - OCC_IS_TRUE);
|
||||
SetDParam(3, CargoSpec::Get(value)->name);
|
||||
set_station_id(2);
|
||||
SetDParam(4, STR_ORDER_CONDITIONAL_COMPARATOR_ACCEPTS + occ - OCC_IS_TRUE);
|
||||
SetDParam(5, CargoSpec::Get(value)->name);
|
||||
break;
|
||||
case OCV_CARGO_WAITING:
|
||||
SetDParam(0, STR_ORDER_CONDITIONAL_CARGO_WAITING_DISPLAY);
|
||||
SetDParam(2, STR_ORDER_CONDITIONAL_COMPARATOR_HAS + occ - OCC_IS_TRUE);
|
||||
SetDParam(3, CargoSpec::Get(value)->name);
|
||||
set_station_id(2);
|
||||
SetDParam(4, STR_ORDER_CONDITIONAL_COMPARATOR_HAS + occ - OCC_IS_TRUE);
|
||||
SetDParam(5, CargoSpec::Get(value)->name);
|
||||
break;
|
||||
case OCV_REQUIRES_SERVICE:
|
||||
SetDParam(3, STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS + occ);
|
||||
@@ -1397,6 +1426,7 @@ private:
|
||||
OPOS_CONDITIONAL,
|
||||
OPOS_SHARE,
|
||||
OPOS_COND_VIA,
|
||||
OPOS_COND_STATION,
|
||||
OPOS_CONDITIONAL_RETARGET,
|
||||
OPOS_DEPARTURE_VIA,
|
||||
OPOS_END,
|
||||
@@ -1452,6 +1482,9 @@ private:
|
||||
DP_COND_AUX2_VIA = 0, ///< Display via button
|
||||
DP_COND_AUX2_SCHED_TEST = 1, ///< Display dropdown for scheduled dispatch test selection
|
||||
|
||||
/* WID_O_SEL_COND_AUX3 */
|
||||
DP_COND_AUX3_STATION = 0, ///< Display station button
|
||||
|
||||
/* WID_O_SEL_BOTTOM_LEFT */
|
||||
DP_BOTTOM_LEFT_SKIP = 0, ///< Display 'skip' in the left button of the bottom row of the vehicle order window.
|
||||
DP_BOTTOM_LEFT_MANAGE_LIST = 1, ///< Display 'manage list' in the left button of the bottom row of the vehicle order window.
|
||||
@@ -1478,6 +1511,7 @@ private:
|
||||
int query_text_widget; ///< widget which most recently called ShowQueryString
|
||||
int current_aux_plane;
|
||||
int current_aux2_plane;
|
||||
int current_aux3_plane;
|
||||
int current_mgmt_plane;
|
||||
|
||||
/**
|
||||
@@ -1561,6 +1595,7 @@ private:
|
||||
HT_NONE, // OPOS_CONDITIONAL
|
||||
HT_VEHICLE, // OPOS_SHARE
|
||||
HT_RECT, // OPOS_COND_VIA
|
||||
HT_RECT, // OPOS_COND_STATION
|
||||
HT_NONE, // OPOS_CONDITIONAL_RETARGET
|
||||
HT_RECT, // OPOS_DEPARTURE_VIA
|
||||
};
|
||||
@@ -1568,6 +1603,7 @@ private:
|
||||
this->goto_type = type;
|
||||
this->SetWidgetDirty(WID_O_GOTO);
|
||||
this->SetWidgetDirty(WID_O_COND_AUX_VIA);
|
||||
this->SetWidgetDirty(WID_O_COND_AUX_STATION);
|
||||
this->SetWidgetDirty(WID_O_MGMT_BTN);
|
||||
}
|
||||
|
||||
@@ -1826,10 +1862,18 @@ public:
|
||||
this->SetWidgetLoweredState(WID_O_OCCUPANCY_TOGGLE, _settings_client.gui.show_order_occupancy_by_default);
|
||||
this->current_aux_plane = SZSP_NONE;
|
||||
this->current_aux2_plane = SZSP_NONE;
|
||||
this->current_aux3_plane = SZSP_NONE;
|
||||
this->current_mgmt_plane = this->GetOrderManagementPlane();
|
||||
if (v->owner == _local_company) {
|
||||
this->GetWidget<NWidgetStacked>(WID_O_SEL_COND_AUX)->SetDisplayedPlane(this->current_aux_plane);
|
||||
this->GetWidget<NWidgetStacked>(WID_O_SEL_COND_AUX2)->SetDisplayedPlane(this->current_aux2_plane);
|
||||
NWidgetStacked *aux_sel = this->GetWidget<NWidgetStacked>(WID_O_SEL_COND_AUX);
|
||||
NWidgetStacked *aux2_sel = this->GetWidget<NWidgetStacked>(WID_O_SEL_COND_AUX2);
|
||||
NWidgetStacked *aux3_sel = this->GetWidget<NWidgetStacked>(WID_O_SEL_COND_AUX3);
|
||||
aux_sel->independent_planes = true;
|
||||
aux2_sel->independent_planes = true;
|
||||
aux3_sel->independent_planes = true;
|
||||
aux_sel->SetDisplayedPlane(this->current_aux_plane);
|
||||
aux2_sel->SetDisplayedPlane(this->current_aux2_plane);
|
||||
aux3_sel->SetDisplayedPlane(this->current_aux3_plane);
|
||||
this->GetWidget<NWidgetStacked>(WID_O_SEL_MGMT)->SetDisplayedPlane(this->current_mgmt_plane);
|
||||
}
|
||||
this->FinishInitNested(v->index);
|
||||
@@ -2072,26 +2116,37 @@ public:
|
||||
|
||||
NWidgetStacked *aux_sel = this->GetWidget<NWidgetStacked>(WID_O_SEL_COND_AUX);
|
||||
NWidgetStacked *aux2_sel = this->GetWidget<NWidgetStacked>(WID_O_SEL_COND_AUX2);
|
||||
NWidgetStacked *aux3_sel = this->GetWidget<NWidgetStacked>(WID_O_SEL_COND_AUX3);
|
||||
NWidgetStacked *mgmt_sel = this->GetWidget<NWidgetStacked>(WID_O_SEL_MGMT);
|
||||
mgmt_sel->SetDisplayedPlane(this->GetOrderManagementPlane());
|
||||
|
||||
auto aux_plane_guard = scope_guard([&]() {
|
||||
bool reinit = false;
|
||||
if (this->current_aux_plane != aux_sel->shown_plane) {
|
||||
this->current_aux_plane = aux_sel->shown_plane;
|
||||
this->ReInit();
|
||||
reinit = true;
|
||||
}
|
||||
if (this->current_aux2_plane != aux2_sel->shown_plane) {
|
||||
this->current_aux2_plane = aux2_sel->shown_plane;
|
||||
this->ReInit();
|
||||
reinit = true;
|
||||
}
|
||||
if (this->current_aux3_plane != aux3_sel->shown_plane) {
|
||||
this->current_aux3_plane = aux3_sel->shown_plane;
|
||||
reinit = true;
|
||||
}
|
||||
if ((this->current_mgmt_plane == SZSP_NONE) != (mgmt_sel->shown_plane == SZSP_NONE)) {
|
||||
this->current_mgmt_plane = mgmt_sel->shown_plane;
|
||||
this->ReInit();
|
||||
reinit = true;
|
||||
} else if (this->current_mgmt_plane != mgmt_sel->shown_plane) {
|
||||
this->current_mgmt_plane = mgmt_sel->shown_plane;
|
||||
}
|
||||
if (reinit) this->ReInit();
|
||||
});
|
||||
|
||||
aux_sel->SetDisplayedPlane(SZSP_NONE);
|
||||
aux2_sel->SetDisplayedPlane(SZSP_NONE);
|
||||
aux3_sel->SetDisplayedPlane(SZSP_NONE);
|
||||
|
||||
if (order == nullptr) {
|
||||
if (row_sel != nullptr) {
|
||||
row_sel->SetDisplayedPlane(DP_ROW_LOAD);
|
||||
@@ -2239,6 +2294,12 @@ public:
|
||||
aux2_sel->SetDisplayedPlane(SZSP_NONE);
|
||||
}
|
||||
|
||||
if (ConditionVariableHasStationID(ocv)) {
|
||||
aux3_sel->SetDisplayedPlane(DP_COND_AUX3_STATION);
|
||||
} else {
|
||||
aux3_sel->SetDisplayedPlane(SZSP_NONE);
|
||||
}
|
||||
|
||||
/* Set the strings for the dropdown boxes. */
|
||||
this->GetWidget<NWidgetCore>(WID_O_COND_VARIABLE)->widget_data = OrderStringForVariable(this->vehicle, ocv);
|
||||
this->GetWidget<NWidgetCore>(WID_O_COND_COMPARATOR)->widget_data = GetComparatorStrings(this->vehicle, order)[order->GetConditionComparator()];
|
||||
@@ -2321,8 +2382,10 @@ public:
|
||||
if (this->vehicle->owner != _local_company) {
|
||||
this->selected_order = -1; // Disable selection any selected row at a competitor order window.
|
||||
} else {
|
||||
this->SetWidgetLoweredState(WID_O_GOTO, this->goto_type != OPOS_NONE && this->goto_type != OPOS_COND_VIA && this->goto_type != OPOS_CONDITIONAL_RETARGET);
|
||||
this->SetWidgetLoweredState(WID_O_GOTO, this->goto_type != OPOS_NONE && this->goto_type != OPOS_COND_VIA
|
||||
&& this->goto_type != OPOS_COND_STATION && this->goto_type != OPOS_CONDITIONAL_RETARGET);
|
||||
this->SetWidgetLoweredState(WID_O_COND_AUX_VIA, this->goto_type == OPOS_COND_VIA);
|
||||
this->SetWidgetLoweredState(WID_O_COND_AUX_STATION, this->goto_type == OPOS_COND_STATION);
|
||||
this->SetWidgetLoweredState(WID_O_MGMT_BTN, this->goto_type == OPOS_CONDITIONAL_RETARGET);
|
||||
}
|
||||
this->DrawWidgets();
|
||||
@@ -2776,7 +2839,7 @@ public:
|
||||
this->OrderClick_Goto(OPOS_GOTO);
|
||||
}
|
||||
} else {
|
||||
if (this->goto_type == OPOS_COND_VIA) ResetObjectToPlace();
|
||||
if (this->goto_type == OPOS_COND_VIA || this->goto_type == OPOS_COND_STATION) ResetObjectToPlace();
|
||||
int sel;
|
||||
switch (this->goto_type) {
|
||||
case OPOS_NONE: sel = -1; break;
|
||||
@@ -2934,6 +2997,15 @@ public:
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_O_COND_AUX_STATION: {
|
||||
if (this->goto_type != OPOS_NONE) {
|
||||
ResetObjectToPlace();
|
||||
} else {
|
||||
this->OrderClick_Goto(OPOS_COND_STATION);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_O_TIMETABLE_VIEW:
|
||||
ShowTimetableWindow(this->vehicle);
|
||||
break;
|
||||
@@ -3364,7 +3436,7 @@ public:
|
||||
/* With quick goto the Go To button stays active */
|
||||
if (!_settings_client.gui.quick_goto) ResetObjectToPlace();
|
||||
}
|
||||
} else if (this->goto_type == OPOS_COND_VIA) {
|
||||
} else if (this->goto_type == OPOS_COND_VIA || this->goto_type == OPOS_COND_STATION) {
|
||||
if (IsTileType(tile, MP_STATION) || IsTileType(tile, MP_INDUSTRY)) {
|
||||
const Station *st = nullptr;
|
||||
|
||||
@@ -3375,7 +3447,7 @@ public:
|
||||
st = in->neutral_station;
|
||||
}
|
||||
if (st != nullptr && IsInfraUsageAllowed(this->vehicle->type, this->vehicle->owner, st->owner)) {
|
||||
if (this->ModifyOrder(this->OrderGetSel(), MOF_COND_VALUE_3 | st->index << 8)) {
|
||||
if (this->ModifyOrder(this->OrderGetSel(), (this->goto_type == OPOS_COND_VIA ? MOF_COND_VALUE_3 : MOF_COND_STATION_ID) | st->index << 8)) {
|
||||
ResetObjectToPlace();
|
||||
}
|
||||
}
|
||||
@@ -3462,6 +3534,7 @@ public:
|
||||
this->goto_type = OPOS_NONE;
|
||||
this->SetWidgetDirty(WID_O_GOTO);
|
||||
this->SetWidgetDirty(WID_O_COND_AUX_VIA);
|
||||
this->SetWidgetDirty(WID_O_COND_AUX_STATION);
|
||||
this->SetWidgetDirty(WID_O_MGMT_BTN);
|
||||
|
||||
/* Remove drag highlighting if it exists. */
|
||||
@@ -3622,6 +3695,10 @@ static const NWidgetPart _nested_orders_train_widgets[] = {
|
||||
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_O_COND_SCHED_SELECT), SetMinimalSize(124, 12), SetFill(1, 0),
|
||||
SetDataTip(STR_NULL, STR_ORDER_CONDITIONAL_SCHED_SELECT_TOOLTIP), SetResize(1, 0),
|
||||
EndContainer(),
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_O_SEL_COND_AUX3),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_O_COND_AUX_STATION), SetMinimalSize(72, 12),
|
||||
SetDataTip(STR_ORDER_CONDITIONAL_STATION, STR_ORDER_CONDITIONAL_STATION_TOOLTIP),
|
||||
EndContainer(),
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_O_SEL_COND_AUX2),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_O_COND_AUX_VIA), SetMinimalSize(36, 12),
|
||||
SetDataTip(STR_ORDER_CONDITIONAL_VIA, STR_ORDER_CONDITIONAL_VIA_TOOLTIP),
|
||||
@@ -3766,6 +3843,10 @@ static const NWidgetPart _nested_orders_widgets[] = {
|
||||
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_O_COND_SCHED_SELECT), SetMinimalSize(124, 12), SetFill(1, 0),
|
||||
SetDataTip(STR_NULL, STR_ORDER_CONDITIONAL_SCHED_SELECT_TOOLTIP), SetResize(1, 0),
|
||||
EndContainer(),
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_O_SEL_COND_AUX3),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_O_COND_AUX_STATION), SetMinimalSize(72, 12),
|
||||
SetDataTip(STR_ORDER_CONDITIONAL_STATION, STR_ORDER_CONDITIONAL_STATION_TOOLTIP),
|
||||
EndContainer(),
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_O_SEL_COND_AUX2),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_O_COND_AUX_VIA), SetMinimalSize(36, 12),
|
||||
SetDataTip(STR_ORDER_CONDITIONAL_VIA, STR_ORDER_CONDITIONAL_VIA_TOOLTIP),
|
||||
|
@@ -165,14 +165,14 @@ enum OrderConditionVariable {
|
||||
OCV_UNCONDITIONALLY, ///< Always skip
|
||||
OCV_REMAINING_LIFETIME, ///< Skip based on the remaining lifetime
|
||||
OCV_MAX_RELIABILITY, ///< Skip based on the maximum reliability
|
||||
OCV_CARGO_WAITING, ///< Skip if specified cargo is waiting at next station
|
||||
OCV_CARGO_ACCEPTANCE, ///< Skip if specified cargo is accepted at next station
|
||||
OCV_FREE_PLATFORMS, ///< Skip based on free platforms at next station
|
||||
OCV_CARGO_WAITING, ///< Skip if specified cargo is waiting at station
|
||||
OCV_CARGO_ACCEPTANCE, ///< Skip if specified cargo is accepted at station
|
||||
OCV_FREE_PLATFORMS, ///< Skip based on free platforms at station
|
||||
OCV_PERCENT, ///< Skip xx percent of times
|
||||
OCV_SLOT_OCCUPANCY, ///< Test if vehicle slot is fully occupied, or empty
|
||||
OCV_VEH_IN_SLOT, ///< Test if vehicle is in slot
|
||||
OCV_CARGO_LOAD_PERCENTAGE, ///< Skip based on the amount of load of a specific cargo
|
||||
OCV_CARGO_WAITING_AMOUNT, ///< Skip based on the amount of a specific cargo waiting at next station
|
||||
OCV_CARGO_WAITING_AMOUNT, ///< Skip based on the amount of a specific cargo waiting at station
|
||||
OCV_COUNTER_VALUE, ///< Skip based on counter value
|
||||
OCV_TIME_DATE, ///< Skip based on current time/date
|
||||
OCV_TIMETABLE, ///< Skip based on timetable state
|
||||
@@ -180,6 +180,11 @@ enum OrderConditionVariable {
|
||||
OCV_END
|
||||
};
|
||||
|
||||
inline bool ConditionVariableHasStationID(OrderConditionVariable ocv)
|
||||
{
|
||||
return ocv == OCV_CARGO_WAITING || ocv == OCV_CARGO_ACCEPTANCE || ocv == OCV_FREE_PLATFORMS || ocv == OCV_CARGO_WAITING_AMOUNT;
|
||||
}
|
||||
|
||||
/**
|
||||
* Comparator for the skip reasoning.
|
||||
*/
|
||||
@@ -210,6 +215,7 @@ enum ModifyOrderFlags {
|
||||
MOF_COND_VALUE, ///< The value to set the condition to.
|
||||
MOF_COND_VALUE_2, ///< The secondary value to set the condition to.
|
||||
MOF_COND_VALUE_3, ///< The tertiary value to set the condition to.
|
||||
MOF_COND_STATION_ID, ///< The station ID to set the condition to.
|
||||
MOF_COND_DESTINATION,///< Change the destination of a conditional order.
|
||||
MOF_WAYPOINT_FLAGS, ///< Change the waypoint flags
|
||||
MOF_CARGO_TYPE_UNLOAD, ///< Passes an OrderUnloadType and a CargoID.
|
||||
|
@@ -3982,12 +3982,41 @@ bool AfterLoadGame()
|
||||
|
||||
if (SlXvIsFeaturePresent(XSLFI_MORE_COND_ORDERS, 1, 1)) {
|
||||
for (Order *order : Order::Iterate()) {
|
||||
// Insertion of OCV_MAX_RELIABILITY between OCV_REMAINING_LIFETIME and OCV_CARGO_WAITING
|
||||
/* Insertion of OCV_MAX_RELIABILITY between OCV_REMAINING_LIFETIME and OCV_CARGO_WAITING */
|
||||
if (order->IsType(OT_CONDITIONAL) && order->GetConditionVariable() > OCV_REMAINING_LIFETIME) {
|
||||
order->SetConditionVariable(static_cast<OrderConditionVariable>((uint)order->GetConditionVariable() + 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (SlXvIsFeaturePresent(XSLFI_MORE_COND_ORDERS, 1, 14)) {
|
||||
for (OrderList *order_list : OrderList::Iterate()) {
|
||||
auto get_real_station = [&order_list](const Order *order) -> StationID {
|
||||
const uint max = std::min<uint>(64, order_list->GetNumOrders());
|
||||
for (uint i = 0; i < max; i++) {
|
||||
if (order->IsType(OT_GOTO_STATION) && Station::IsValidID(order->GetDestination())) return order->GetDestination();
|
||||
|
||||
order = (order->next != nullptr) ? order->next : order_list->GetFirstOrder();
|
||||
}
|
||||
return INVALID_STATION;
|
||||
};
|
||||
|
||||
for (Order *order = order_list->GetFirstOrder(); order != nullptr; order = order->next) {
|
||||
/* Fixup station ID for OCV_CARGO_WAITING, OCV_CARGO_ACCEPTANCE, OCV_FREE_PLATFORMS, OCV_CARGO_WAITING_AMOUNT */
|
||||
if (order->IsType(OT_CONDITIONAL) && ConditionVariableHasStationID(order->GetConditionVariable())) {
|
||||
StationID next_id = get_real_station(order);
|
||||
SB(order->GetXData2Ref(), 0, 16, next_id + 1);
|
||||
if (next_id != INVALID_STATION && GB(order->GetXData(), 16, 16) - 2 == next_id) {
|
||||
/* Duplicate next and via, remove via */
|
||||
SB(order->GetXDataRef(), 16, 16, 0);
|
||||
}
|
||||
if (GB(order->GetXData(), 16, 16) != 0 && !Station::IsValidID(GB(order->GetXData(), 16, 16) - 2)) {
|
||||
/* Via station is invalid */
|
||||
SB(order->GetXDataRef(), 16, 16, INVALID_STATION + 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (SlXvIsFeatureMissing(XSLFI_CONSIST_SPEED_RD_FLAG)) {
|
||||
for (Train *t : Train::Iterate()) {
|
||||
|
@@ -103,7 +103,7 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
|
||||
{ XSLFI_INFRA_SHARING, XSCF_NULL, 2, 2, "infra_sharing", nullptr, nullptr, "CPDP" },
|
||||
{ XSLFI_VARIABLE_DAY_LENGTH, XSCF_NULL, 3, 3, "variable_day_length", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_ORDER_OCCUPANCY, XSCF_NULL, 2, 2, "order_occupancy", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_MORE_COND_ORDERS, XSCF_NULL, 14, 14, "more_cond_orders", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_MORE_COND_ORDERS, XSCF_NULL, 15, 15, "more_cond_orders", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_EXTRA_LARGE_MAP, XSCF_NULL, 0, 1, "extra_large_map", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_REVERSE_AT_WAYPOINT, XSCF_NULL, 1, 1, "reverse_at_waypoint", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_VEH_LIFETIME_PROFIT, XSCF_NULL, 1, 1, "veh_lifetime_profit", nullptr, nullptr, nullptr },
|
||||
|
@@ -45,6 +45,7 @@ enum OrderWidgets {
|
||||
WID_O_COND_SCHED_SELECT, ///< Choose scheduled dispatch schedule.
|
||||
WID_O_COND_AUX_VIA, ///< Condition via button.
|
||||
WID_O_COND_SCHED_TEST, ///< Choose scheduled dispatch test.
|
||||
WID_O_COND_AUX_STATION, ///< Condition station button.
|
||||
WID_O_RELEASE_SLOT, ///< Choose slot to release.
|
||||
WID_O_COUNTER_OP, ///< Choose counter operation.
|
||||
WID_O_CHANGE_COUNTER, ///< Choose counter to change.
|
||||
@@ -54,6 +55,7 @@ enum OrderWidgets {
|
||||
WID_O_SEL_COND_VALUE, ///< Widget for conditional value or conditional cargo type.
|
||||
WID_O_SEL_COND_AUX, ///< Widget for auxiliary conditional cargo type.
|
||||
WID_O_SEL_COND_AUX2, ///< Widget for auxiliary conditional via button.
|
||||
WID_O_SEL_COND_AUX3, ///< Widget for auxiliary conditional station button.
|
||||
WID_O_SEL_MGMT, ///< Widget for management buttons.
|
||||
WID_O_SEL_TOP_LEFT, ///< #NWID_SELECTION widget for left part of the top row of the 'your train' order window.
|
||||
WID_O_SEL_TOP_MIDDLE, ///< #NWID_SELECTION widget for middle part of the top row of the 'your train' order window.
|
||||
|
Reference in New Issue
Block a user