164 Commits

Author SHA1 Message Date
2befefb547 Merge pull request #26 from MaSzyna-EU07/staging
Staging
v1.4.164
2026-10-06 20:29:38 +02:00
5929a4ef4f Merge pull request #24 from MaSzyna-EU07/refactor/solid-ddd
Refactor/solid ddd
staging
2026-10-06 20:29:12 +02:00
maj00r
dcbd6078b9 Show key descriptions with Polish letters
The game's key file has its descriptions stripped of them. Where a
description is the bundled one without the letters, the bundled one is
shown; the file itself is left as it is.
2026-10-04 19:41:47 +02:00
maj00r
4da5991c13 Let a captured key take over its combination
Pressing a key for a command in the list doubled the combination up when
another command had it, and the simulator maps a combination to one command
only. It now moves over, as it already did from the key flyout.
2026-10-04 19:32:04 +02:00
maj00r
760dfb38da Show Ctrl+Shift bindings in red on the keyboard
They were drawn as a Shift and a Ctrl binding at once. The key flyout's rows
carry the same colours as the keys.
2026-10-04 19:27:25 +02:00
maj00r
5e5481c5f5 Heating in white instead of pink 2026-10-04 19:20:52 +02:00
maj00r
c77d8c31eb Gangway in green instead of purple 2026-10-04 19:19:13 +02:00
maj00r
a79f74b948 Bigger coupler squares, 8 atm air in yellow, icon only at the back 2026-10-04 19:18:01 +02:00
maj00r
5459f0e0dd Lay the coupler's connections out as a block, mechanical in black
Thin stripes ran together. Each connection now has its own square in a 2 by 4
block placed like the editor's checkboxes, so its place says what it is as
much as its colour, and an empty place is a dot. Mechanical is black, as the
hook is, with a light edge to show on the dark strip.
2026-10-04 19:15:24 +02:00
maj00r
868e07ff89 Show what a coupler connects as a stripe per connection
Under the coupler's icon runs a stripe for each connection in its own colour -
brake red, multiple-unit blue, high voltage yellow and so on - so the strip
tells the kinds of coupling apart, not just coupled from free. The editor's
checkboxes carry the same colours as the legend.

The ambient coolant flag leaves the coupler flyout: it is the vehicle's and
already sits in the vehicle panel, beside the crew and the wagon number.
2026-10-04 19:12:57 +02:00
maj00r
ee87055eed Seat a unit's crew in the car that has the cab
A driver in cab 1 goes into the first car of a unit and one in cab 2 into the
last - the ET42-A has only cab 1, the ET42-B only cab 2. The crew is the
unit's: the card, the details and replacing a vehicle all set it there,
rather than in whichever car happened to be selected.
2026-10-04 19:11:44 +02:00
maj00r
526ff91b3b Draw depot couplers as an icon and a link bar in the state's colour
Each state gets its own icon and colour, and a bar under it ties the two
cards: broken when free, thicker when permanent, absent at the back. Green
is gone - on the strip it already means selected or turned round.
2026-10-04 19:09:57 +02:00
maj00r
8c046cfed4 Match scenery vehicles by folder too, as the old starter did
The old starter looked a vehicle up by folder, skin and model. The folder was
left out here, and 39 skin names recur across folders - "red" is a Clio, an
Audi and a crane - so a vehicle could get another folder's livery.
2026-10-04 19:07:23 +02:00
maj00r
e5c46d23ea Tell apart the halves of a unit that share one skin
The ET42-026 dresses both halves in 112E-026 and the scenery tells them apart
by the model. Textures were keyed by the skin alone, so the B half became a
second A: not part of the set, and listed on its own. A shared skin now gets
the model in its id, vehicles are looked up by skin and model, and the
vehicle cache is rebuilt for the new ids.
2026-10-04 19:05:32 +02:00
maj00r
37dd038b96 Explain the missing-simulator prompt and name its buttons
It now says where the starter looks for the simulator and why it matters,
that starting from the wrong folder is the usual cause, and answers with
"Point to the simulator" and "Not now" instead of Yes and No.
2026-10-04 18:59:14 +02:00
maj00r
6a8750566e Look for the simulator when the picked one is not in this installation
The pick is kept in the per-user eu07.ini, which every installation shares,
so a binary chosen in one folder was missing in another and the starter
complained although a simulator sat right there. A missing pick now gives
way to the search and is logged once.
2026-10-04 18:58:29 +02:00
maj00r
2e7e967279 Say only what a tail coupler does: end signals or none
The simulator reads the last vehicle's coupler for one thing, whether to put
up the end signals. It does not couple the train to anything behind it, as
the tooltip and a comment claimed.
2026-10-04 18:57:58 +02:00
maj00r
53fe9aa48c Explain the greyed-out ready box and count cars in the depot
A disabled checkbox shows no tooltip, so the settings override that greys
out "ready to go" is now said under it. The consist vehicle count counted
units, so a multi-unit was one vehicle; it now counts cars like the stats bar.
2026-10-04 18:55:21 +02:00
maj00r
00a62ab568 Colour the depot couplers by what they connect
Each coupler on the consist strip now shows its state: free, coupled,
multiple-unit, permanent, and at the back whether the end signals go up.
The tooltip gives the code and the connections instead of the drag hint,
and the flyout edits mark the coupler as set by hand and restyle it in
place. The note about 0 on the last vehicle is gone - the colour says it.
2026-10-04 18:55:16 +02:00
maj00r
36dd4a020f Name the depot categories as the old starter did
Elektrowozy, Spalinowozy, Szynobusy, Wagony A... in Polish, and the old names
in English, Czech and Hungarian; Hungarian keeps the electric locomotives
apart from the trams, which the old list called the same, and Russian, which
it did not have, goes plural like the rest.
2026-10-04 18:49:02 +02:00
maj00r
52ad490fb7 Drop the update check - Steam updates the starter
The daily GitHub check, the top-bar button, the stable/staging channel and
"check now" go, with their settings and texts.
2026-10-04 18:46:38 +02:00
maj00r
6cedf8b6f6 Lay out and drive the depot browser the way the old starter did
Picking a category picks its first class and lists that class, instead of
every vehicle of the category; only categories with something in them are
offered, in the old order. The archival switch has its own line, the class
box shows the thumbnail of the class picked, and the search sits above the
list and looks through every vehicle. The rows are the bare texture names, a
set marked faintly; an empty list says what to do; the thumbnail and Add
share a line so the list keeps its height.
2026-10-04 18:44:17 +02:00
maj00r
9459a21083 Count the depot consist after writing it back, not before
The stats were read off the trainset before the edit was written into it,
so the vehicle count and the rest lagged one change behind.
2026-10-04 18:21:08 +02:00
maj00r
384d8c1bca 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.
2026-10-04 18:15:01 +02:00
maj00r
b4ae9164bb Drop the unused paused-volume string
The simulator reads no sound.volume.paused - nor gfx.framebuffer.fidelity,
whose job the buffer scale does through gfx.framebuffer.width and height.
2026-10-04 18:11:59 +02:00
maj00r
0d6af369c4 Open no menu on a scenery group in the tree 2026-10-04 18:11:59 +02:00
maj00r
3dd6aa755e Join the user ini path in the tests the way the starter does
The tests spelled it with slashes and failed on the Windows runner, where
Path.Combine uses backslashes. Also drops a null warning in the drag code.
2026-10-04 18:08:48 +02:00
maj00r
72b4e44c43 Hand the driver over when a locomotive is moved to the head
The locomotive put first takes the driver, in cab A; the one it pushed
behind is left unstaffed. Stepping a card left or right is now an ordinary
move, so it also recouples the train and frees the coupler at its back.
2026-10-04 18:08:14 +02:00
maj00r
bfa899718c Size the class list's thumbnails like the consist cards 2026-10-04 14:43:26 +02:00
maj00r
4650e4899c Bring back the maximum amount button among the consist load tools 2026-10-04 14:40:08 +02:00
maj00r
a54576b975 Find the list item under the pointer with FindAncestorOfType 2026-10-04 14:38:05 +02:00
maj00r
3ac792c0fa Move the log and crash dump lookup out of the start use case 2026-10-04 14:38:05 +02:00
maj00r
00795513b9 Keep a last-vehicle coupler set by hand
The back of the consist goes to 0 after every change unless its coupler was
set in the editor; a car that gets a neighbour loses that mark, so it is
freed again once it is last again.
2026-10-04 14:33:48 +02:00
maj00r
925ac87129 Add several copies from a vehicle's menu in the consist too
The copies go right after the vehicle, a whole unit for one of a set. The
count flyout is shared with the browser.
2026-10-04 14:30:53 +02:00
maj00r
6232930f4c Leave the last vehicle's coupler at 0 so the train gets its end signals
The simulator hangs end signals only on a last vehicle with coupler 0; every
new car came with 3 and the pass that couples neighbours never touched the
last one, nor did taking a car off the end. The coupler editor says so for
the last vehicle.
2026-10-04 14:28:40 +02:00
maj00r
e0901ae0ab Star favourite sceneries in the list
A right click stars or unstars the scenery under it; the starred ones are
gathered in a group on top and marked where they belong. They are kept in
favorites.txt beside the settings, not in eu07.ini.
2026-10-04 14:23:16 +02:00
maj00r
be34d48033 Open the scenery editor from the start button's menu
eu07 -edit with the scenery file itself, not the export, so what is saved
lands in the scenery. Not every simulator build has the editor; that is said
before it starts.
2026-10-04 14:17:02 +02:00
maj00r
e8cec0867e Let the consist panel shrink with the small thumbnails 2026-10-04 14:09:26 +02:00
maj00r
a9f4a09cf5 Add a vehicle several times from the browser's menu
The count is asked for in a flyout; the copies go in one after another, each
staffed as a single add would be, with one redraw.
2026-10-04 14:03:52 +02:00
maj00r
bbc163b204 Warn when the experimental renderer is picked 2026-10-04 14:00:52 +02:00
maj00r
73ff00f22e Join and split vehicles facing different ways without moving a car
Joining took each card's cars in stored order and turned the lot by the
first card's flag, so a turned card came out reversed; splitting gave every
car the unit's flag. Both now go by the running order, and the coupler sides
by each car's own facing, which is what the export writes.
2026-10-04 13:59:01 +02:00
maj00r
d510a55740 Turn multi-car units as a whole when orientation is randomised or a unit swapped
Randomising flipped only the card's flag, so a multi-car unit was exported
with its cars in reverse order but each still facing forward - coupled back
to front. A swap copied the flag without turning the new cars. Both now turn
flag, cars and order together, as Flip does, and a locked unit as one.
2026-10-04 13:54:51 +02:00
maj00r
c1c47f746e Harden the CI workflow
Actions pinned to full commits, no token left in the checkout, no binaries
from a fork's pull request among the artifacts, the version passed through the
environment, an audit of the NuGet packages, time limits, one release at a
time with checksums and never over another commit's release, and Dependabot
for the actions and packages.
2026-10-04 13:50:41 +02:00
maj00r
5e130fcd98 Point the crash report at the minidump the simulator left
The simulator writes crash_*.dmp relative to its working directory, and
crashpad under crashdumps; the newest one from this run is named, with an
offer to open its folder.
2026-10-04 13:44:47 +02:00
maj00r
59798e41fa Report a simulator that crashes or closes right after the start
The exit code, read with its signal or NTSTATUS, and the last lines of the
error stream - or of log.txt when it stayed silent. The stream is captured
only while the starter stays to read it.
2026-10-04 13:38:29 +02:00
maj00r
04f6a4cc8d Keep the crew when a vehicle is swapped in the depot
The crew was copied to the card but not to the new cars, which are what is
shown and exported, so a swapped locomotive came out unstaffed. Swapping now
moves the crew over and otherwise staffs the vehicle as adding would.
2026-10-04 13:31:53 +02:00
maj00r
76f104798c Start a Windows build of the simulator through Wine on Linux
Where wine is on the PATH, an eu07.exe in the installation is found after any
native binary and needs no execute bit.
2026-10-04 13:28:07 +02:00
maj00r
3083523ceb Let the simulator be picked from outside the installation
A build tree kept beside the data can be chosen in the settings, and when no
simulator is found the starter asks for one instead of calling the
installation broken. The simulator now runs in the installation, not in the
folder of its binary, and a binary for the other system is no longer refused.
2026-10-04 13:27:28 +02:00
maj00r
2b3c46938c Check GitHub for a newer starter once a day, with a button to check now
The stable channel compares versions; the testing channel offers the staging
build of another commit. The channel switch is the starter's only, not the
simulator's.
2026-10-04 13:26:49 +02:00
maj00r
a7a1e34239 Version every build of main by its commit count and release it
Major and minor stay in the project file; the patch is counted by CI, so no
bot has to commit a bump. staging keeps its rolling pre-release.
2026-10-04 13:25:46 +02:00