Commit Graph

214 Commits

Author SHA1 Message Date
maj00r
9872b316c2 fix(blackbox): the traction's values in two columns, each whole in its cell 2026-11-11 03:19:14 +01:00
maj00r
ed9c1394bd fix(blackbox): the driver's valve as its gauge shows, no clash of the traction's labels, fewer self-made events
- The pressure of the driver's valve is named as what its gauge shows
  (the equalizing reservoir, the FV4a's time reservoir), alike in both
  languages.
- The traction's values are clipped to their columns, and the torque
  converter's label is shorter: it ran into the oil pressure's.
- The doors in two columns, the radio's label shorter: the names were cut.
- The compressor and the motor fans go on and off by themselves: no
  events for them.
- The summary of HeadCodes.Right back above it.
2026-11-11 02:55:42 +01:00
maj00r
0d16524953 feat(blackbox): the cab panel as fits the vehicle, every switch the driver worked in the events
- The rest of the cab record is read when written: what drives the
  vehicle, the doors' permits and departure signal, the brakes of the
  whole train, a diesel's oil and temperatures, the cruise control and
  the rest.
- Cab panel: the traction as fits what drives the vehicle (voltage and
  current of an electric one; revolutions, oil pressure and temperatures
  of a diesel; clutch or torque converter of a mechanical or hydraulic
  one; nothing for a draisine), the equalizing reservoir, the main
  reservoir pipe and the most braked cylinder of the train, the brakes'
  setting and mode, a group of the doors, the pumps of a diesel where an
  electric vehicle has its pantographs, the hand brake, the releaser, the
  horn's tone, the radio's channel, the integrated handle of a unit.
- Events: every switch on and off, doors opened and closed, the departure
  signal, the hand brake, the brakes' setting, the radio channel, the
  cruise control's speed; moving with the doors open and an overheating
  engine as faults.
- A vehicle with no lamps at an end (a draisine) is not judged on its
  lights, and one which never had a voltage shows none.
2026-11-11 02:43:51 +01:00
maj00r
4dcfd1c4e3 fix(blackbox): the timeline's labels on a narrow timeline, marks out of view, the cab on a short window
- The hover label and the clock bubble keep to the left edge on a
  narrow timeline instead of throwing in Render.
- A mark is told under the pointer only when it is drawn: within the
  plot and the time shown.
- The device groups are clipped at their own width, not 4 px short.
- On a short window the cab card scrolls, so the list above it keeps
  room for a few rows.
2026-11-11 01:50:40 +01:00
maj00r
9ee059bc16 feat(blackbox): a readable map legend, a key for the timeline's marks, the cab panel in titled parts
- Map legend: a title for each part, the texts in the text colour, the
  speed bands said in full ("up to 5 km/h faster than the AI").
- Timeline: the key names every mark (station, W6, signal passed,
  coupling, autopilot, command), the row of marks has its name, and the
  mark under the pointer is told in a label. The key no longer sits on
  the station plates.
- Cab panel: titled parts (controls, brakes, traction, lights, devices);
  the AI's speed and the next limit no longer run into the controllers;
  the lights of each end with the signal they show, and the one they are
  to show when it differs; the devices in three groups (power, driving,
  safety) instead of one long list.
2026-11-11 01:45:40 +01:00
maj00r
88adf5ee0f Black box: the test of an older recording's light pattern checks the lights were judged 2026-11-11 01:09:46 +01:00
maj00r
de3f088ba8 Black box: older recordings read as before, single vehicles told apart, each platform end its own tolerance
- A light pattern asked for in a recording made before the lamps were
  written is checked as the signal it shows, as before.
- Whether the couplings were written is told by the format (the
  movement in the cab samples), not by there being any: a recording
  where every train is a single vehicle has none, and the user going
  over to another vehicle left the timetable shown.
- The 2 m a train may stand off the platform is at each end, not for
  both together.
2026-11-11 01:05:59 +01:00
maj00r
532875fc7b Black box: the queries of the user's train worked out once a read, lights as the driver checks them
- The stations, the signals passed, the horn points, the couplings, the
  consists and the timetable progress of the user's train are kept until
  a read adds something; the views asked for them every frame, which on
  a long session with many trains took the window down. A read that adds
  nothing no longer counts as a change.
- The lights are checked against the lamps the vehicles at the ends have
  (written by the simulator from now on), as its driver checks them: Pc 1
  without the upper headlight, with the auxiliary lamps, Pc 5 with the
  rear-end signals. Only while the user drives: the autopilot's lights
  are its own.
- A train off the platform counts at both ends: its head past the stop
  point as well as its tail before the platform's end.
- A recording without the couplings keeps the timetable for any vehicle
  of the user.
- A signal passed at danger is ringed on the map only once it was.
- In the tapes window a black box opens on a click or Enter, not when
  the arrow keys go over it.
- The viewer's screenshot of a window not laid out saves nothing and
  still closes.
2026-11-11 00:57:57 +01:00
maj00r
e530b95352 Play back the black box of the simulator: map, cab, timeline, timetable and a summary
The simulator writes a black box of each run to physicslog/*.blackbox
(blackbox_doc.md in the maszyna repository). Three new projects read and
show it:

- Eu07.BlackBox: the reader of the records, the recording as a whole
  (the user's vehicle and consist at a time, the timetable shown, the
  progress along it with arrival and departure delays, whether the
  train stood at the platform), the light patterns Pc 1, Pc 2, Pc 5 and
  Tb 1 with the ones the run asks for, and a summary of the driving.
- Eu07.BlackBox.Views: the player window, with the scenery map (tracks,
  signals, W4 stop points with their heading and W32, the train, the
  cameras), the cab, the timeline of speed against the AI's reference,
  the events, the timetable and the summary.
- Eu07.BlackBox.Viewer: the window on its own, with options for the
  time, following the train and screenshots.

The tapes window of the starter lists the black boxes of each session
beside the Hasler tapes and opens them in the player.
2026-11-11 00:39:35 +01:00
e7d8596652 Merge pull request #37 from MaSzyna-EU07/feature/hasler-tape
Feature/hasler tape
v1.5.205
2026-11-07 14:18:27 +00:00
maj00r
cb092784ae Put the comment of FullPath back on it
It stayed above DlssLibraries, which then had two summaries, when that method
went in between.
2026-11-03 21:51:58 +01:00
maj00r
d68999dfb7 Look at each source file of a scenery once
The watch of scenery files asked three times per file, whether it is there,
its time and its size, every two seconds for every source of every scenery.
One look gives all three.
2026-11-03 21:51:56 +01:00
maj00r
9eb10fc9bd Let the signatures of saved trainsets go with their sceneries
They were kept by the trainset's text for the whole session, behind one lock,
and every reload added more. They are now kept as long as a trainset holds
that text.
2026-11-03 21:51:55 +01:00
maj00r
71c32c5b9a Read the old starter's key descriptions in code page 1250 too
Its language files are code page 1250 as often as UTF-8. Read as UTF-8 only,
Czech and Polish descriptions came out with replacement characters.
2026-11-03 21:51:55 +01:00
maj00r
cf1ba319c1 Leave the settings as they are when they are written
Writing the settings put them right for the simulator, DLSS to TAA on OpenGL
and the like, in the object given. A preview of the changes or a look at the
levels goes through the same write and changed the held settings. A copy is
put right now.
2026-11-03 21:51:54 +01:00
maj00r
02ea1277fc Read the last run's log before a start has to
A start notes down which vehicles the player drove in the run before, as the
log begins anew. With the tape window never opened nothing of a long run's log
had been read yet, and Start waited on the whole of it. It is now read off the
UI thread when the simulator exits and when the starter opens.
2026-11-03 21:51:54 +01:00
maj00r
306bdc44df Write the list of launches beside the tapes in one move
The tape window reads starter-launch.txt every two seconds. Written in place,
the file could be read half written, and a crash during the write lost the
launches noted before.
2026-11-03 21:51:54 +01:00
maj00r
d95182f17c List a key taken out of eu07.ini once
A uart or uarttune the settings no longer write was found missing twice, as a
key of set length and as one the file had, and showed twice among the changes.
2026-11-03 21:51:54 +01:00
maj00r
c10d771f00 Save a profile without taking it for a save of eu07.ini
A profile went through the save of eu07.ini with another path: what the store
holds of the file took the changes the file never got, and the list of changes
was empty after it. A profile is now written as an export, from a copy. Like a
save, an export is not written from defaults when the settings could not be
read.
2026-11-03 21:51:53 +01:00
maj00r
2cfb4e4fec Tell the tapes the simulator runs only while the starter watches it
The tapes looked for any process named as the chosen exe, every two seconds
off the UI thread. Under Wine the process is eu07.exe and never matched, so a
run never showed as running and the tape window did not follow the driven
vehicle, while a simulator started some other way was taken for the last
launch. The starter's own watch of the process it started now says it.
2026-11-03 21:51:53 +01:00
maj00r
a8f8cb0b74 Keep each file's encoding in the copy written for a start
The copy carries the scenario includes put in place of their include lines,
read as UTF-8 where they are, and it was written all in code page 1250. A name
with a Polish letter in a UTF-8 include then no longer matched the same name in
the files the simulator reads apart, and what 1250 lacks became '?'. Each part
now goes out in the encoding of the file it came from, the scenery's own file
too, as a save of a trainset already did.
2026-11-03 21:51:52 +01:00
maj00r
32d7417c22 Read the processor once and take FMA into the AVX2 check
/arch:AVX2 lets the compiler use FMA as well, so a processor that reports AVX2
without it would still stop the simulator. The comment on OSXSAVE no longer
says more than the bit does.
2026-11-03 20:42:28 +01:00
maj00r
16d665156c Take code page 1250 in the trainset save tests from LegacyText
The tests asked Encoding for it before anything had registered the code pages.
That held only when another test had made an InMemoryFileSystem first, so the
class failed when it ran first, as it did on Linux in CI.
2026-11-03 20:42:28 +01:00
maj00r
39d4ef0bc4 Read AVX2 from the processor
Avx2.IsSupported says whether the starter's own code may use AVX2, and the AOT
compiler fixes that at build time to its baseline, which has none. A published
starter told every player that their processor lacked AVX2. The check now reads
CPUID: AVX2 in leaf 7, AVX and OSXSAVE in leaf 1.
2026-11-03 20:29:18 +01:00
maj00r
6d8a6c36e7 Put what only the new simulator reads in one panel
The rows of keys the public simulator does not read sat among the others in
Graphics and Effects, where a player with that exe could not tell them apart. They
are now one section at the end of Advanced, with a note that an older exe skips
them. Graphics and Effects hold what that exe reads.

Buffer scale and anti-aliasing stay in Graphics, as an older exe reads them through
other keys. The level list of the atmosphere rows goes with them; the whole levels
still set that group. With its rows gone, the nature section is called Smoke.
2026-11-01 22:32:11 +01:00
maj00r
96cfe2503e Shorten the experimental renderer's warning
It says what can go wrong and what to do then. That the renderer is still being
developed helps nobody choosing it.
2026-11-01 22:32:11 +01:00
maj00r
b12189b2d5 Center the text of buttons
Buttons have a minimum height but kept their text at the top of it.
2026-11-01 22:32:09 +01:00
maj00r
42b2259b7c Show the graphics card beside the levels
Its name and memory, with the other cards in the tooltip. Windows has them in the
registry. On Linux the name comes from the driver or pci.ids and the memory from
amdgpu or nvidia-smi; without either there is only the name. A card in a processor
says shared memory, as what it reports is a share set in the firmware.

No rating of the card against the settings: what a ride takes depends on the
textures of its scenery and vehicles, which are not known before it starts.
2026-11-01 20:54:01 +01:00
maj00r
a7c9cdb97f Take the rest of feat/opengl-vulkan's settings
What the merge left out, now on this branch's own six levels:
- GraphicsRules, which say what a renderer or an anti-aliasing mode rules out,
  and the notes that show it
- the settings split into Graphics and Effects tabs
- the DLSS library check beside the exe
- eu07.ini import and export
- one list of renderers: the backend follows from the renderer chosen

The post-processing part of the levels is gone, as three switches cannot tell six
levels apart. Bloom goes with the whole level.

Still a transitional variant. The old renderers, their keys and their rows stay
on the page, as the exe a player runs may be an old one or may have no Vulkan.
That branch's five-level list and its removal of the old renderers stay out.
2026-11-01 20:54:01 +01:00
maj00r
0d2e5de110 Keep the gaps of the bottom bar equal
The editor button had a margin of its own on top of the grid's spacing.
2026-11-01 20:54:00 +01:00
maj00r
1f231423f3 Ask once when the settings file changes
The window is activated again as the question closes, before the answer is in,
so a changed eu07.ini was asked about three times in a row.
2026-11-01 20:53:59 +01:00
maj00r
b60c176533 Merge feat/opengl-vulkan: settings for the OpenGL 4.6 and Vulkan 1.4 simulator
A transitional variant, since the exe a player runs may not have the new
renderers. The old renderers stay in the list and the old keys are still written
next to the new ones. A new exe without Vulkan starts OpenGL by itself, an old one
reads the word as its legacy renderer, and both pass over the keys they do not know.

Taken from Hirek193's branch:
- the new keys as rows of a section of their own, with their texts
- their values on the graphics levels, in steps over the six levels here, with
  High as what the simulator does with nothing set
- Vulkan 1.4 in the list of renderers, and its own keys marked as idle without it
- gfx.buffer.percent next to the old buffer keys, read before them
- gfx.antialiasing saved below multisampling, for the later line to count

Keys checked against feat/gl46-migration of the simulator.

Left out, as this branch has its own or does not need them: the rewritten settings
page and its five levels, GraphicsRules, the DLSS library check, eu07.ini import and
export, and the removal of the old renderers.
2026-11-01 19:43:46 +01:00
maj00r
212e11278f Move to Avalonia 12.1.4
12.1.3 stops drawing a stretched PathGeometry, which took the Discord icon, so
this goes one patch past the version Dependabot offered.

Three things follow from the new version. A combo box placeholder keeps its full
opacity. The consist strip's padding, ignored until now, is gone, as it would
take 4 px from the panels above. A scenery picked from code is brought into view.
2026-11-01 18:59:57 +01:00
maj00r
81c7e8ba95 Find an old starter's language file on Linux too
The list of languages holds codes in lower case, so lang-ZH.txt was not found
on a case-sensitive file system and its key descriptions stayed empty.
2026-11-01 16:16:39 +01:00
maj00r
b56a2a0ae6 Raise the version to 1.5 2026-11-01 16:12:02 +01:00
maj00r
80115b7a7e Set the start and editor button pairs apart
Each button stays close to its arrow, with a clear gap between the two pairs.
Both arrows are the same size.
2026-11-01 16:12:02 +01:00
maj00r
ceab05462a Fit the main window to small screens and wire up the new services
Pages scroll below the size they are laid out for and Start stays in view. The
crash window shows this session's log only.
2026-11-01 16:06:16 +01:00
maj00r
2ebff91316 Start the scenery editor from its own button and note launches
With no scenery selected the button starts a new one in the editor. Each launch
notes the scenery, the timetable number and the vehicles for the tapes. Tools
work on the selected scenery, and an emptied consist stays listed.
2026-11-01 16:06:16 +01:00
maj00r
6e45f5de59 Add Hasler tape viewer for the simulator's physics logs
Reads physicslog/*.dat and draws each trip as a Hasler tape or, for vehicles
with an electronic recorder, as an evaluation screen. Tapes are grouped by
launch, and a launch still running can be followed live. Includes whole-tape
PNG export and a summary of times and averages. With the log off, the page
offers to turn it on.
2026-11-01 16:06:16 +01:00
maj00r
82429010d4 Rework the depot, warehouse and vehicle base
A consist added to the warehouse gets a name there. The crew type stays through
loading a consist. The vehicle base window replaces the texture base. The depot
follows consists changed on the scenarios page, also with the warehouse tab
left open.
2026-11-01 16:06:16 +01:00
maj00r
f152a020e3 Rebuild the settings page
A sticky quality bar, a level and a reset per section, key bindings in their
own tab. UART moves into the page. A log and tools window replaces
AdvancedSettingsWindow, and the developer tab is gone.
2026-11-01 16:06:16 +01:00
maj00r
3b21583b53 Add graphics levels, screen choices and the rest of the simulator's keys
Six levels of detail climbing in even steps, High being where a player with no
settings of their own starts. Five parts of the picture can also take a level
of their own. Resolutions start from the monitors in the computer.

uartfeature with nothing selected writes "no no no no"; uart and uarttune are
written whole or not at all. On Linux the file's contents tell a Windows build,
a native one and a script from a note that merely has the execute bit.
2026-11-01 16:06:15 +01:00
maj00r
69aa075bfa Keep scenery files intact on save and follow them on disk
Saves keep comments and every byte they do not change. Faults in a scenery's
text are found and described. Files that change while the starter runs are
picked up without a manual reload.
2026-11-01 16:06:15 +01:00
maj00r
b6735fe345 Load languages from the player's own folders and add the new strings
Translations also come from folders of the player's, the old starter's
lang-XX.txt and the simulator's XX.po. Strings for the commits that follow in five
languages, shorter where they had grown.
2026-11-01 16:06:15 +01:00
maj00r
07987a60a9 Write settings, presets and favourites whole or not at all
A failed write leaves the old file in place. Settings that could not be read
are not saved over. UI exceptions reach the log. Started from a shortcut set
up elsewhere, the starter moves to its own folder when only that one holds a
game.
2026-11-01 16:06:15 +01:00
maj00r
6948b13503 Merge pull request #35 from dos1/fullscreen
Maximize the window automatically when running in gamescope or Steam Big Picture
v1.4.166
2026-10-31 22:10:26 +01:00
f8617942ea Settings for new vulkan/opengl 2026-10-29 22:15:19 +01:00
Sebastian Krzyszkowiak
22c51ddf3c Maximize the window automatically when running in gamescope or Steam Big Picture 2026-10-28 07:08:29 +01:00
d222f49179 Describe the DLSS presets instead of showing their bare letters 2026-10-27 10:54:50 +01:00
8d6b4805c8 Add graphics presets, eu07.ini import/export and the new simulator settings 2026-10-27 10:44:48 +01:00