Let Auto bring the back of the train to 0, hand-set or not

Auto now clears the hand-set marks before picking the couplers and is
available on the last vehicle too.
This commit is contained in:
maj00r
2026-10-04 18:15:01 +02:00
parent b4ae9164bb
commit 384d8c1bca
8 changed files with 33 additions and 7 deletions

View File

@@ -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

View File

@@ -544,6 +544,18 @@ public sealed class Consist : IReadOnlyList<ConsistItem>
Raise();
}
/// <summary>
/// The Auto button: couplers picked afresh for the whole consist, hand-set ones
/// included, so the back of the train is 0 again.
/// </summary>
public void AutoCouple()
{
foreach (var car in Flatten())
car.CouplerSetByHand = false;
AutoConnectAll();
}
public void AutoConnectAll()
{
var flat = Flatten();

View File

@@ -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();
};

View File

@@ -281,7 +281,7 @@
<String key="TipSplit">Rozdělit jednotku na jednotlivé vozy</String>
<String key="AppliesToUnit">Společné pro celou jednotku</String>
<String key="CouplingUnitRear">Spřáhlo na konci jednotky</String>
<String key="CouplingLastNote">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ě.</String>
<String key="CouplingLastNote">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.</String>
<String key="Join">Spojit</String>
<String key="TipJoin">Spojit toto vozidlo s následujícím do jedné jednotky</String>
<String key="TipReorder">Přetáhněte pro změnu pořadí</String>

View File

@@ -281,7 +281,7 @@
<String key="TipSplit">Split the unit into individual cars</String>
<String key="AppliesToUnit">Shared by the whole unit</String>
<String key="CouplingUnitRear">Coupler at the rear of the unit</String>
<String key="CouplingLastNote">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.</String>
<String key="CouplingLastNote">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.</String>
<String key="Join">Join</String>
<String key="TipJoin">Couple this vehicle with the next one into a single unit</String>
<String key="TipReorder">Drag to reorder</String>

View File

@@ -281,7 +281,7 @@
<String key="TipSplit">Az egység szétbontása külön kocsikra</String>
<String key="AppliesToUnit">Az egész egységre közös</String>
<String key="CouplingUnitRear">Az egység végén lévő kapcsolókészülék</String>
<String key="CouplingLastNote">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.</String>
<String key="CouplingLastNote">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.</String>
<String key="Join">Összekapcsolás</String>
<String key="TipJoin">A jármű összekapcsolása a következővel egy egységgé</String>
<String key="TipReorder">Húzza az átrendezéshez</String>

View File

@@ -281,7 +281,7 @@
<String key="TipSplit">Rozdziel zespół na pojedyncze człony</String>
<String key="AppliesToUnit">Ustawienie wspólne dla całego zespołu</String>
<String key="CouplingUnitRear">Sprzęg na końcu zespołu</String>
<String key="CouplingLastNote">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.</String>
<String key="CouplingLastNote">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.</String>
<String key="Join">Złącz</String>
<String key="TipJoin">Połącz ten pojazd z następnym w jeden zespół</String>
<String key="TipReorder">Przeciągnij, aby zmienić kolejność</String>

View File

@@ -281,7 +281,7 @@
<String key="TipSplit">Разделить сцеп на отдельные вагоны</String>
<String key="AppliesToUnit">Общее для всего состава</String>
<String key="CouplingUnitRear">Сцепка в конце состава</String>
<String key="CouplingLastNote">Последняя единица: сцепка 0 даёт хвостовые сигналы, другой код сцепит состав с тем, что стоит за ним, без хвостовых сигналов. Стартер ставит здесь 0 после каждого изменения состава, если вы не задали сцепку вручную.</String>
<String key="CouplingLastNote">Последняя единица: сцепка 0 даёт хвостовые сигналы, другой код сцепит состав с тем, что стоит за ним, без хвостовых сигналов. Стартер ставит здесь 0 после каждого изменения состава, если вы не задали сцепку вручную; «Авто» всегда возвращает 0.</String>
<String key="Join">Соединить</String>
<String key="TipJoin">Соединить этот вагон со следующим в один состав</String>
<String key="TipReorder">Перетащите для изменения порядка</String>