Commit Graph

53 Commits

Author SHA1 Message Date
maj00r
e3caa9d38f Fix the language picker and tidy the graphics tab
Both language combos decided a change was the user's by checking
IsKeyboardFocusWithin on the picked item. Selecting with the mouse leaves the
focus on the combo, not on the item, so on Windows the check failed and the
language never changed. The handlers now compare the picked code with the one
already loaded instead of guessing who caused the event: filling the combo in
selects what is loaded and stops there, a real pick differs and applies.

The settings tab listed a hard-coded Polski / English pair and wrote the
language back as "Polski" or "English", so picking Czech, Hungarian or
Russian in the top bar was overwritten on save. It is filled from lang/ now,
and writes back the selected entry.

LocalizationService gains a LanguageChanged event: the main window rebuilds
the captions that code builds once (train stats, panel headers, combo items)
from there, so a pick in either place refreshes them. Its PropertyChanged
also names the indexer "Item[]", which is what bindings listen for.

Graphics tab: the track-curve quality slider moves over from Physics, the
view angle shows a degree sign instead of the Polish "stopni", and the HDR
tone-mapping picker is gone - only Reinhard.glsl ever shipped, so
ApplyHdrShader copies that one and the starter.hdr setting is dropped.
2026-08-25 22:17:11 +02:00
maj00r
4d8976e43d Pad the top bar down on Windows instead of the right cluster
The 146px right margin pushed the version and social icons inwards on every
window width. Padding the whole bar down by the caption height gives the OS
buttons a strip of their own and leaves the cluster where it was; the strip
drags the window, so the handler moves to the bar's border.
2026-08-25 21:56:31 +02:00
maj00r
7503765aca additional margin for M$ product 2026-08-25 21:44:19 +02:00
maj00r
f9960e5113 updated translations [wip] 2026-08-25 21:22:39 +02:00
maj00r
9e2166065b Rework the depot browser layout and confirm a crewless start
The vehicle database panel loses its header bar and packs the search box and
the archival filter into one line, the class combo takes a full-width line of
its own with a miniature (big in the drop-down, one line when closed) and the
bulk / texture-base actions move into the Add button's drop-down. The mini
preview sits beside the texture data and stays hidden until an entry is
picked, so the list keeps the space.

Picking a class or a vehicle now fills both combos in, and a class alone is a
valid filter (it used to leave the list empty without a category). The combos
and the list are rebuilt on the next dispatcher pass, since clearing Items
from inside the SelectionChanged that asked for it throws.

Vehicle removal becomes a per-card tool next to flip / crew, the scenery and
vehicle names move into their panel headers, and the texture randomizer
dialog sizes to its content instead of clipping its last button.

Start no longer hides behind Ctrl: a consist with no crew and no passenger
says so on the button and asks for confirmation before launching.
2026-08-25 20:58:57 +02:00
maj00r
a93af4bd44 Load sceneries in parallel and skip the splash on a fast start
Scenery parsing runs on Parallel.ForEach and the reload button does it off
the UI thread. The splash window only appears when loading passes 300ms, so
a warm start goes straight to the main window. The log button moves into the
navigation row, dropping the separate caption strip; timetable and info use
the shared MonoFont family instead of a hard-coded Consolas.
2026-08-25 20:58:15 +02:00
maj00r
a15044233e Add window icon, make the title bar draggable and drop the full-screen caption button
Use the Starter icon for the window and the executable; the whole caption strip drags the window. Extending the client area makes Avalonia 12 add an extra full-screen toggle to the window chrome (which lives in its own host, so it is not reachable from the window's visual tree); it is hidden globally in App.axaml via its WindowDecorationProperties.ElementRole. Standard minimize / maximize / close are kept.
2026-08-22 23:53:01 +02:00
maj00r
13137321c1 Gate Start on crew, pick starting vehicle, loading screen and help menu
#16 and #12 Start is enabled only with crew/passenger (hold Ctrl to force); the chosen starting vehicle is carried through launch; loading-screen logo; help menu; runtime language picker.
2026-08-22 23:15:35 +02:00
maj00r
825c6f57ec Sort the warehouse and import magazyn.ini
Preset sort by name or track; import the Pascal starter/magazyn.ini warehouse.
2026-08-22 23:15:35 +02:00
maj00r
785b8c7afa Rebuild the depot consist editor
#9 category minis in the class list; #10 coupler after the last car; #11 drag and drop from the browser and consist reorder; #12 fix forced headdriver (occupancy); #13 hide archival vehicles; #14 randomise order; #15 randomise orientation; #16 pick starting vehicle; #18 collapse multi-unit sets; texture randomiser and stock database.
2026-08-22 23:15:35 +02:00
maj00r
12b06a2689 Show consist stats, keep empty trainsets and restore last scenery in Scenarios
#20 length/mass/vehicle/track status bar; #17 empty trainsets stay listed; #19 remember last scenery; #16 default starting vehicle; scenery i18n labels, attachments/includes/info tab, weather restore and reload.
2026-08-22 23:15:35 +02:00
maj00r
ce806130f7 Add hide-archival, last-scenery, HDR tone map and external-change settings
#13 HideArchivalVehicles; #19 LastScenery; HDR tonemap + framebuffer fidelity; reload eu07.ini when it changes on disk; dump missing-vehicle log on exit.
2026-08-22 23:15:34 +02:00
maj00r
2e21d416ef Track archival vehicles and multi-unit set followers in the vehicle database
#13 ResolvedArchived flag; #18 IsSetFollower hides trailing multi-unit cars; missing-asset log lines.
2026-08-22 23:15:18 +02:00
maj00r
8fad37c6e8 Parse loose vehicles, optional includes, attachments and dual weather clocks
#17 keep empty/loose consists; #19 scenery display name; two weather clocks (time + scenario.time.override) with atmo fog randomisation; scenery fault list; reload sceneries.
2026-08-22 23:15:18 +02:00
maj00r
2298d6c803 Add scenery i18n and Czech/Hungarian/Russian translations
Scenery @token strings resolve via SceneryI18n; add cz/hu/ru language files and the new UI strings for the depot and scenarios features.
2026-08-22 23:15:18 +02:00
maj00r
905d795f54 Move new domain/infra modules out of Classes into Domain/ and Infrastructure/
Consist/scenery/vehicle logic (TrainsetDisplay, TexRandomizer, SceneryI18n) goes under Domain/; the loading-screen bitmap writer under Infrastructure/, instead of the flat Classes/ bucket.
2026-08-22 23:15:18 +02:00
2b9d7c179b Merge pull request #3 from xwizard/feature/dynamic-lights-and-macos-paths
Add settings profiles, dynamic lights, macOS config paths, and fix setting defaults
2026-07-21 11:26:16 +02:00
Mateusz Włodarczyk
a3ff2787a7 Accept .exe binary name on Linux/macOS and fix AlwaysOn battery threshold
build-macos.sh ships the macOS binary as eu07.exe, so IsValidBinaryFile
must accept that extension on non-Windows too. Also fix the AlwaysOn
battery default check to use a proper near-zero epsilon instead of an
overly broad <0.2 threshold that clobbered legitimate low velocities.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-06 11:12:32 +02:00
Mateusz Włodarczyk
1118771486 Sync setting defaults with eu07 engine, drop dead options
Cross-checked against ../maszyna: several StarterNG defaults didn't
match the simulator's actual defaults (Globals.h), and three exposed
options never mapped to a real eu07.ini key.

- Correct defaults to match the engine: VSync=false, LiveTraction=true,
  VirtualShunting(ai.trainman)=true, DynamicLights=7 fallback,
  CabShadowsRange=0, GfxResourceSweep=true, FeedbackMode=1,
  ShadowMapResolution=2048, ReflectionsFidelity=0, Volume=50.
- Remove Post-processing (gfx.postfx.tonemapping), onboard-screen
  refresh rate (pyscreenrendererpriority), and volume-during-pause
  (sound.volume.paused) — none of these keys exist in the simulator.
- Only apply parsed UART feature tokens when eu07.ini actually has an
  uartfeature line; otherwise fall back to the engine's own defaults
  instead of all-false.
2026-07-05 19:19:06 +02:00
Mateusz Włodarczyk
c4147a2f66 Add settings profiles and expand exposed eu07.ini options
Adds save/apply named settings profiles (SettingsProfileStore), a
battery-default export option that rewrites trainset velocity on
launch, and an option to omit decorative trainsets from the exported
scenery. Also surfaces many previously-unmapped eu07.ini keys in the
Settings UI (UART/feedback port, FPS limit, shadow angle, fullscreen
windowed, ANGLE Vulkan, friction/brake sensitivity, and an Advanced
section for texture/GLES/threading tunables).
2026-07-05 18:04:07 +02:00
Mateusz Włodarczyk
211863c921 Add dynamic lights setting and fix macOS config paths
- Add DynamicLights (0–7) setting mapped to the eu07.ini dynamiclights key,
  exposed as a slider in the Graphics section of Settings.
- Fix config file paths on macOS for eu07.ini, eu07_input-keyboard.ini,
  and userpresets.json to use ~/Library/Application Support/MaSzyna/
  instead of falling through to the Linux XDG path.
2026-06-30 21:30:52 +02:00
710bfc0d10 Merge pull request #1 from dos1/shadowrange
Fix a copy'n'paste error in translation values for shadow range and FOV
2026-06-26 22:12:10 +02:00
4e40232257 Merge pull request #2 from xwizard/fix/macos-arm64-platform-target
Fix build on Apple Silicon by switching PlatformTarget from x64 to AnyCPU
2026-06-26 22:11:52 +02:00
Sebastian Krzyszkowiak
92cfb82969 Fix field of view option name and description
Cabin shadow sources range is already handled by CabShadowsRange.
This duplicated value was setting FOV instead.
2026-06-26 21:40:31 +02:00
Mateusz Włodarczyk
92c698b890 Fix build on Apple Silicon by switching PlatformTarget from x64 to AnyCPU 2026-06-26 19:10:58 +02:00
Sebastian Krzyszkowiak
b5567659a3 Fix a copy'n'paste error in translation values for shadow range
"Reflections refresh rate" got doubled.
2026-06-26 00:36:33 +02:00
34758bb21d Keybinds editor 2026-06-24 19:24:06 +02:00
5908200bc4 Fix loads, some UI improvements 2026-06-24 10:08:17 +02:00
60f61a122d Physics and linux compilation support 2026-06-24 00:33:24 +02:00
d932761786 Layout improvements, depot behavior improvements 2026-06-23 23:24:46 +02:00
1bfac8b222 Auto expand scenery tree and autoselect first vehicle 2026-06-23 18:47:18 +02:00
fe8ccbca8f Improve autoclose option so starter hides itself when simulator is running and shows back after shutting down simulator 2026-06-23 18:46:39 +02:00
b977d224e9 Complete UI rebuild 2026-06-23 18:20:09 +02:00
a7bb897fc6 Split car categories 2026-06-17 22:30:22 +02:00
b2f693113d Starter improvements
- scenery Description
- scenery mini
- extracted translations outside
- autoselect first consist on scenery selection
- autoexpand on group click
2026-06-17 22:00:01 +02:00
9be97c7bda Controls section marked as work in progress 2026-06-16 23:01:06 +02:00
abe9164912 Version binding 2026-06-16 23:00:06 +02:00
1cc0cd306a fixes for trainset generation 2026-06-16 22:19:42 +02:00
fee1106cd4 Some optimisations 2026-06-16 21:21:54 +02:00
5be2a86369 nav menu translations 2026-06-16 21:21:44 +02:00
a358651a98 Add settings parsing 2026-06-16 01:20:17 +02:00
0e82841a56 consist editor improvements 2026-06-13 00:54:37 +02:00
6dc9b77a24 Initial depot view 2026-06-11 23:01:49 +02:00
ba9c16e4c4 Added system language detection 2026-02-12 11:07:36 +01:00
dec9ab6874 Add main view translations 2026-02-12 00:50:20 +01:00
1f61b150d3 Add trainset parser 2026-02-12 00:42:51 +01:00
a9c30bbdfe LanguageManager 2026-02-11 22:39:19 +01:00
19a2ac8d59 Add scenery list parser 2026-02-11 14:40:16 +01:00
9c639a87f5 Update .gitignore 2026-02-11 14:39:56 +01:00
053be8d9fc Change start button width 2025-12-23 12:14:15 +01:00