diff --git a/StarterNG.Tests/ConsistTailTests.cs b/StarterNG.Tests/ConsistTailTests.cs index d36f13c..8f5345e 100644 --- a/StarterNG.Tests/ConsistTailTests.cs +++ b/StarterNG.Tests/ConsistTailTests.cs @@ -82,6 +82,20 @@ public class ConsistTailTests Assert.Equal(0, first.Cars[0].Coupling.Flags); } + [Fact] + public void The_auto_button_frees_the_back_even_when_it_was_set_by_hand() + { + Append("b111-01"); + var last = Append("b111-02"); + last.Cars[0].Coupling.Flags = 3; + last.Cars[0].CouplerSetByHand = true; + + _consist.AutoCouple(); + + Assert.Equal(0, last.Cars[0].Coupling.Flags); + Assert.False(last.Cars[0].CouplerSetByHand); + } + private ConsistItem Append(string skin) { var item = new ConsistItem diff --git a/StarterNG/Domain/Consist.cs b/StarterNG/Domain/Consist.cs index a52f148..80ee73f 100644 --- a/StarterNG/Domain/Consist.cs +++ b/StarterNG/Domain/Consist.cs @@ -544,6 +544,18 @@ public sealed class Consist : IReadOnlyList Raise(); } + /// + /// The Auto button: couplers picked afresh for the whole consist, hand-set ones + /// included, so the back of the train is 0 again. + /// + public void AutoCouple() + { + foreach (var car in Flatten()) + car.CouplerSetByHand = false; + + AutoConnectAll(); + } + public void AutoConnectAll() { var flat = Flatten(); diff --git a/StarterNG/Views/Depot/VehicleDetails.cs b/StarterNG/Views/Depot/VehicleDetails.cs index 831ca91..9c31911 100644 --- a/StarterNG/Views/Depot/VehicleDetails.cs +++ b/StarterNG/Views/Depot/VehicleDetails.cs @@ -242,13 +242,13 @@ public sealed class VehicleDetails Cursor = _hand, HorizontalAlignment = HorizontalAlignment.Stretch, HorizontalContentAlignment = HorizontalAlignment.Center, - IsEnabled = _consist.Count > 1 && !isLast + IsEnabled = _consist.Count > 0 }; auto.Classes.Add("Flat"); ToolTip.SetTip(auto, App.Loc["TipAutoCoupler"]); auto.Click += (_, _) => { - _consist.AutoConnectAll(); + _consist.AutoCouple(); _redraw(); Refresh(); }; diff --git a/StarterNG/startercfg/lang/cz.xml b/StarterNG/startercfg/lang/cz.xml index 7793ffb..c6e2507 100644 --- a/StarterNG/startercfg/lang/cz.xml +++ b/StarterNG/startercfg/lang/cz.xml @@ -281,7 +281,7 @@ Rozdělit jednotku na jednotlivé vozy Společné pro celou jednotku Spřáhlo na konci jednotky - Poslední vozidlo: spřáhlo 0 dává koncovky, jiný kód spojí soupravu s tím, co stojí za ní, bez koncovek. Starter zde po každé změně soupravy nastaví 0, pokud spřáhlo nenastavíte ručně. + Poslední vozidlo: spřáhlo 0 dává koncovky, jiný kód spojí soupravu s tím, co stojí za ní, bez koncovek. Starter zde po každé změně soupravy nastaví 0, pokud spřáhlo nenastavíte ručně; „Auto“ vždy vrátí 0. Spojit Spojit toto vozidlo s následujícím do jedné jednotky Přetáhněte pro změnu pořadí diff --git a/StarterNG/startercfg/lang/en.xml b/StarterNG/startercfg/lang/en.xml index ac0e576..41df810 100644 --- a/StarterNG/startercfg/lang/en.xml +++ b/StarterNG/startercfg/lang/en.xml @@ -281,7 +281,7 @@ Split the unit into individual cars Shared by the whole unit Coupler at the rear of the unit - Last vehicle: coupler 0 gets the end signals; any other code couples the train to whatever stands behind it, with no end signals. The starter sets 0 here after every change to the consist, unless you set the coupler by hand. + Last vehicle: coupler 0 gets the end signals; any other code couples the train to whatever stands behind it, with no end signals. The starter sets 0 here after every change to the consist, unless you set the coupler by hand; “Auto” always brings 0 back. Join Couple this vehicle with the next one into a single unit Drag to reorder diff --git a/StarterNG/startercfg/lang/hu.xml b/StarterNG/startercfg/lang/hu.xml index 922be58..fead075 100644 --- a/StarterNG/startercfg/lang/hu.xml +++ b/StarterNG/startercfg/lang/hu.xml @@ -281,7 +281,7 @@ Az egység szétbontása külön kocsikra Az egész egységre közös Az egység végén lévő kapcsolókészülék - Utolsó jármű: a 0-s kapcsolat adja a zárjelzőket, más kód a mögötte állóhoz kapcsolja a szerelvényt, zárjelzők nélkül. A starter minden szerelvényváltozás után 0-ra állítja, hacsak kézzel nem állítod be. + Utolsó jármű: a 0-s kapcsolat adja a zárjelzőket, más kód a mögötte állóhoz kapcsolja a szerelvényt, zárjelzők nélkül. A starter minden szerelvényváltozás után 0-ra állítja, hacsak kézzel nem állítod be; az „Auto” mindig visszaállítja a 0-t. Összekapcsolás A jármű összekapcsolása a következővel egy egységgé Húzza az átrendezéshez diff --git a/StarterNG/startercfg/lang/pl.xml b/StarterNG/startercfg/lang/pl.xml index f36ed2d..5f66e24 100644 --- a/StarterNG/startercfg/lang/pl.xml +++ b/StarterNG/startercfg/lang/pl.xml @@ -281,7 +281,7 @@ Rozdziel zespół na pojedyncze człony Ustawienie wspólne dla całego zespołu Sprzęg na końcu zespołu - Ostatni pojazd: sprzęg 0 daje końcówki, a inny kod połączy skład z tym, co stoi za nim, bez końcówek. Starter ustawia tu 0 po każdej zmianie składu, chyba że ustawisz sprzęg ręcznie. + Ostatni pojazd: sprzęg 0 daje końcówki, a inny kod połączy skład z tym, co stoi za nim, bez końcówek. Starter ustawia tu 0 po każdej zmianie składu, chyba że ustawisz sprzęg ręcznie; „Auto” zawsze przywraca 0. Złącz Połącz ten pojazd z następnym w jeden zespół Przeciągnij, aby zmienić kolejność diff --git a/StarterNG/startercfg/lang/ru.xml b/StarterNG/startercfg/lang/ru.xml index 8cbb7be..8398f72 100644 --- a/StarterNG/startercfg/lang/ru.xml +++ b/StarterNG/startercfg/lang/ru.xml @@ -281,7 +281,7 @@ Разделить сцеп на отдельные вагоны Общее для всего состава Сцепка в конце состава - Последняя единица: сцепка 0 даёт хвостовые сигналы, другой код сцепит состав с тем, что стоит за ним, без хвостовых сигналов. Стартер ставит здесь 0 после каждого изменения состава, если вы не задали сцепку вручную. + Последняя единица: сцепка 0 даёт хвостовые сигналы, другой код сцепит состав с тем, что стоит за ним, без хвостовых сигналов. Стартер ставит здесь 0 после каждого изменения состава, если вы не задали сцепку вручную; «Авто» всегда возвращает 0. Соединить Соединить этот вагон со следующим в один состав Перетащите для изменения порядка