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
93463ae7f2
Load vehicles from a JSON copy of textures.txt, rebuilt when the installation changes
2026-10-04 12:18:36 +02:00
maj00r
c492c26047
fallback decode utf8 strict to win 1250
2026-10-04 12:02:50 +02:00
maj00r
4aec689059
Take the scenario presentation logic out of the code-behind
...
Scenery tree, fog scale, season dates and timetable lookup become their own
classes.
2026-09-04 21:26:28 +02:00
maj00r
3c502f630d
Split Settings into model, serializer, paths and store
...
698 lines did all of it at once. The mutable CaptureFromUi callback becomes an
ISettingsCapture the settings view implements.
2026-09-04 21:13:06 +02:00
maj00r
0444070e12
Move rolling stock and physics into the domain
...
VehicleDatabase becomes VehicleCatalog, Physics becomes VehiclePhysics, and the
textures.txt and .fiz parsers move to Infrastructure. GameLibrary replaces the
GameData singleton.
2026-09-04 21:03:08 +02:00
maj00r
789f0dd1c9
Make Scenery a domain aggregate with no I/O
...
Parsing and loading move to Infrastructure/Sceneries. Weather becomes a value
object owning the "does this differ from the file" rule.
2026-09-04 20:53:50 +02:00
maj00r
a3137a27c4
Introduce layers, ports and a composition root
...
Ports in Application/Abstractions, adapters in Infrastructure, hand-wired
AppServices (no reflection, as PublishAot requires). Adds a test project.
2026-09-04 20:46:51 +02:00