mirror of
https://github.com/MaSzyna-EU07/StarterNG.git
synced 2026-07-17 17:09:19 +02:00
LanguageManager
This commit is contained in:
@@ -1,14 +1,42 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.ApplicationLifetimes;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Avalonia.Markup.Xaml.Styling;
|
||||
using StarterNG.Services;
|
||||
|
||||
namespace StarterNG;
|
||||
|
||||
public partial class App : Application
|
||||
{
|
||||
|
||||
public static LocalizationService Loc { get; } = new();
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
AvaloniaXamlLoader.Load(this);
|
||||
|
||||
var langDict = new ResourceInclude(new Uri("avares://StarterNG/"))
|
||||
{
|
||||
Source = new Uri("Assets/Langs/English.axaml", UriKind.Relative)
|
||||
};
|
||||
|
||||
var resources = Current!.Resources;
|
||||
|
||||
var languageDictionaries = resources.MergedDictionaries
|
||||
.OfType<ResourceInclude>()
|
||||
.Where(d => d.Source != null && d.Source.OriginalString.Contains("Langs/"))
|
||||
.ToList();
|
||||
|
||||
foreach (var dict in languageDictionaries)
|
||||
{
|
||||
resources.MergedDictionaries.Remove(dict);
|
||||
}
|
||||
|
||||
resources.MergedDictionaries.Add(langDict);
|
||||
Loc.SetLanguage(langDict);
|
||||
}
|
||||
|
||||
public override void OnFrameworkInitializationCompleted()
|
||||
|
||||
111
StarterNG/Assets/Langs/English.axaml
Normal file
111
StarterNG/Assets/Langs/English.axaml
Normal file
@@ -0,0 +1,111 @@
|
||||
<ResourceDictionary xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<!-- Add Resources Here -->
|
||||
<x:String x:Key="General">General</x:String>
|
||||
|
||||
<x:String x:Key="Language">Language</x:String>
|
||||
<x:String x:Key="Fullscreen">Fullscreen</x:String>
|
||||
<x:String x:Key="PauseSimInactive">Pause simulation when window is inactive</x:String>
|
||||
<x:String x:Key="PauseSimStart">Pause on start</x:String>
|
||||
<x:String x:Key="CursorSensitivity">Cursor sensitivity:</x:String>
|
||||
<x:String x:Key="MouseHorInvert">Invert mouse horizontally</x:String>
|
||||
<x:String x:Key="MouseVertInvert">Invert mouse vertically</x:String>
|
||||
|
||||
<x:String x:Key="Communication">Communication</x:String>
|
||||
|
||||
|
||||
<x:String x:Key="GamepadSignalIgnore">Ignore gamepad input</x:String>
|
||||
|
||||
<x:String x:Key="Feedback">Feedback</x:String>
|
||||
<x:String x:Key="FeedbackOff">Off</x:String>
|
||||
<x:String x:Key="FeedbackCASHP">Caps: CA/SHP; ScrollLock: starting resistances</x:String>
|
||||
<x:String x:Key="FeedbackCA">Caps: CA; ScrollLock: SHP</x:String>
|
||||
<x:String x:Key="FeedbackLPT">LPT</x:String>
|
||||
<x:String x:Key="FeedbackPoKeys">PoKeys55</x:String>
|
||||
<x:String x:Key="FeedbackSP">Serial port (COM)</x:String>
|
||||
|
||||
|
||||
<x:String x:Key="Others">Other</x:String>
|
||||
<x:String x:Key="SelectEXE">Select exe:</x:String>
|
||||
<x:String x:Key="SelectEXEAuto">Select automatically</x:String>
|
||||
<x:String x:Key="DebugMode">Debug mode (test mode)</x:String>
|
||||
<x:String x:Key="VirtualShunting">Virtual shunting</x:String>
|
||||
|
||||
|
||||
<x:String x:Key="Graphic">Graphics</x:String>
|
||||
<x:String x:Key="RenderEngine">Render engine</x:String>
|
||||
<x:String x:Key="REFull">Full</x:String>
|
||||
<x:String x:Key="REOld">Old</x:String>
|
||||
<x:String x:Key="RESimpShader">Simplified shader</x:String>
|
||||
<x:String x:Key="RESimp">Simplified</x:String>
|
||||
<x:String x:Key="REOff">Disable visual layer</x:String>
|
||||
<x:String x:Key="REExperimental">Experimental</x:String>
|
||||
|
||||
<x:String x:Key="Resolution">Resolution:</x:String>
|
||||
<x:String x:Key="BufforResolution">Buffer resolution:</x:String>
|
||||
<x:String x:Key="MaxTexResolution">Maximum texture resolution:</x:String>
|
||||
<x:String x:Key="MaxTexCabResolution">Maximum cabin texture resolution:</x:String>
|
||||
<x:String x:Key="TexFilteringQuality">Texture filtering quality:</x:String>
|
||||
<x:String x:Key="Multisampling">Multisampling:</x:String>
|
||||
<x:String x:Key="RenderRange">Rendering range:</x:String>
|
||||
<x:String x:Key="VSync">VSync</x:String>
|
||||
<x:String x:Key="SmokeDisplay">Smoke display</x:String>
|
||||
<x:String x:Key="SmokeParticlesMultiplier">Smoke particles multiplier</x:String>
|
||||
|
||||
<x:String x:Key="Postprocessing">Post-processing</x:String>
|
||||
<x:String x:Key="PPReinhard">Reinhard</x:String>
|
||||
<x:String x:Key="PPACES">ACES</x:String>
|
||||
|
||||
<x:String x:Key="ChromaticAberration">Chromatic aberration</x:String>
|
||||
<x:String x:Key="MotionBlur">Motion blur</x:String>
|
||||
<x:String x:Key="AdditionalShadersEffects">Additional shader effects</x:String>
|
||||
<x:String x:Key="ReflectionsCubeMap">Reflections as cubemap</x:String>
|
||||
<x:String x:Key="RenderVBO">Render VBO</x:String>
|
||||
<x:String x:Key="RenderShadows">Render shadows</x:String>
|
||||
<x:String x:Key="ReflectionsFramerate">Reflections refresh rate</x:String>
|
||||
<x:String x:Key="ShadowsResolution">Shadows resolution</x:String>
|
||||
<x:String x:Key="ShaderRange">Reflections refresh rate</x:String>
|
||||
<x:String x:Key="CabShadowsRange">Cabin shadow sources range</x:String>
|
||||
|
||||
<x:String x:Key="ShadowDisplay">Display shadows</x:String>
|
||||
<x:String x:Key="CSROnlyImportant">Only important</x:String>
|
||||
<x:String x:Key="CSRLimited">Limited</x:String>
|
||||
<x:String x:Key="CSRAll">All</x:String>
|
||||
|
||||
<x:String x:Key="ReflectionsDetails">Reflections detail level</x:String>
|
||||
<x:String x:Key="RDTerrain">Terrain geometry only</x:String>
|
||||
<x:String x:Key="RDTerrainModels">Terrain geometry and static models</x:String>
|
||||
<x:String x:Key="RDTerrainModelsVehicles">Terrain geometry, static models and vehicles</x:String>
|
||||
|
||||
<x:String x:Key="ShadowsCabRange">Cabin shadow sources range</x:String>
|
||||
<x:String x:Key="RenderScreens">Render onboard computer screens</x:String>
|
||||
<x:String x:Key="RenderScreensThread">Render screens in a separate thread</x:String>
|
||||
<x:String x:Key="RenderScreensFramerate">Onboard screens refresh rate</x:String>
|
||||
|
||||
<x:String x:Key="Physics">Physics</x:String>
|
||||
|
||||
<x:String x:Key="TrackCurvesQuality">Track curves quality</x:String>
|
||||
<x:String x:Key="PhysicsAccuracyIncreased">Increased physics accuracy</x:String>
|
||||
<x:String x:Key="BreakingPantographPossibility">Possibility of pantograph breaking</x:String>
|
||||
<x:String x:Key="PowerOverheadLineOnly">Powered only under overhead line</x:String>
|
||||
<x:String x:Key="SaveSpeedometerTapes">Save speedometer tapes</x:String>
|
||||
<x:String x:Key="SaveSimLogs">Save simulation log</x:String>
|
||||
<x:String x:Key="KeepPrevLogs">Keep previous logs</x:String>
|
||||
<x:String x:Key="DisplaySimulation">Display simulation</x:String>
|
||||
<x:String x:Key="CrashDamage">Collision damage</x:String>
|
||||
|
||||
<x:String x:Key="Sounds">Sound</x:String>
|
||||
<x:String x:Key="EnableSounds">Enable sound</x:String>
|
||||
<x:String x:Key="Volume">Volume</x:String>
|
||||
<x:String x:Key="RadiophoneVolume">Radio volume</x:String>
|
||||
<x:String x:Key="VehiclesVolume">Vehicles volume</x:String>
|
||||
<x:String x:Key="PositionedSoundsVolume">Positional sounds volume</x:String>
|
||||
<x:String x:Key="AmbientVolume">Ambient volume</x:String>
|
||||
<x:String x:Key="VolumeDuringPause">Volume during pause</x:String>
|
||||
|
||||
<x:String x:Key="Starter">Starter</x:String>
|
||||
<x:String x:Key="AutoCloseStarter">Automatically close starter</x:String>
|
||||
<x:String x:Key="LargeThumbnails">Large thumbnails</x:String>
|
||||
<x:String x:Key="AutoExpandSceneryTree">Automatically expand scenery tree</x:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
114
StarterNG/Assets/Langs/Polski.axaml
Normal file
114
StarterNG/Assets/Langs/Polski.axaml
Normal file
@@ -0,0 +1,114 @@
|
||||
<ResourceDictionary xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<!-- Add Resources Here -->
|
||||
<x:String x:Key="General">Ogólne</x:String>
|
||||
|
||||
<x:String x:Key="Language">Język</x:String>
|
||||
<x:String x:Key="Fullscreen">Tryb pełnoekranowy</x:String>
|
||||
<x:String x:Key="PauseSimInactive">Wstrzymaj symulację, gdy okno nie jest aktywne</x:String>
|
||||
<x:String x:Key="PauseSimStart">Pauza po uruchomieniu</x:String>
|
||||
<x:String x:Key="CursorSensitivity">Czułość kursora:</x:String>
|
||||
<x:String x:Key="MouseHorInvert">Inwersja myszy w poziomie</x:String>
|
||||
<x:String x:Key="MouseVertInvert">Inwersja myszy w pionie</x:String>
|
||||
|
||||
<x:String x:Key="Communication">Komunikacja</x:String>
|
||||
|
||||
|
||||
<x:String x:Key="GamepadSignalIgnore">Ignoruj sygnały z gamepada</x:String>
|
||||
|
||||
<x:String x:Key="Feedback">Informacja zwrotna</x:String>
|
||||
<x:String x:Key="FeedbackOff">Wyłączona</x:String>
|
||||
<x:String x:Key="FeedbackCASHP">Caps: CA/SHP; ScrollLock: opory rozr.</x:String>
|
||||
<x:String x:Key="FeedbackCA">Caps: CA; Scrollock: SHP</x:String>
|
||||
<x:String x:Key="FeedbackLPT">LPT</x:String>
|
||||
<x:String x:Key="FeedbackPoKeys">PoKeys55</x:String>
|
||||
<x:String x:Key="FeedbackSP">Serialport (COM)</x:String>
|
||||
|
||||
|
||||
<x:String x:Key="Others">Inne</x:String>
|
||||
<x:String x:Key="SelectEXE">Wybór exe:</x:String>
|
||||
<x:String x:Key="SelectEXEAuto">Wybierz automatycznie</x:String>
|
||||
<x:String x:Key="DebugMode">Tryb testowy (debugmode)</x:String>
|
||||
<x:String x:Key="VirtualShunting">Wirtualny manewrowy</x:String>
|
||||
|
||||
|
||||
<x:String x:Key="Graphic">Grafika</x:String>
|
||||
<x:String x:Key="RenderEngine">Silnik renderowania</x:String>
|
||||
<x:String x:Key="REFull">Pełny</x:String>
|
||||
<x:String x:Key="REOld">Stary</x:String>
|
||||
<x:String x:Key="RESimpShader">Uproszczony shaderowy</x:String>
|
||||
<x:String x:Key="RESimp">Uproszczony</x:String>
|
||||
<x:String x:Key="REOff">Wyłącz warstwę wizualną</x:String>
|
||||
<x:String x:Key="REExperimental">Eksperymentalny</x:String>
|
||||
|
||||
<x:String x:Key="Resolution">Rozdzielczość:</x:String>
|
||||
<x:String x:Key="BufforResolution">Rozdzielczość bufora:</x:String>
|
||||
<x:String x:Key="MaxTexResolution">Maksymalna rozdzielczość tekstur:</x:String>
|
||||
<x:String x:Key="MaxTexCabResolution">Maksymalna rozdzielczość tekstur kabiny:</x:String>
|
||||
<x:String x:Key="TexFilteringQuality">Jakość filtrowania tekstur:</x:String>
|
||||
<x:String x:Key="Multisampling">Multisampling:</x:String>
|
||||
<x:String x:Key="RenderRange">Zasięg renderowania:</x:String>
|
||||
<x:String x:Key="VSync">VSync</x:String>
|
||||
<x:String x:Key="SmokeDisplay">Wyświetlanie dymu</x:String>
|
||||
<x:String x:Key="SmokeParticlesMultiplier">Mnożnik ilości cząsteczek dymu</x:String>
|
||||
|
||||
<x:String x:Key="Postprocessing">Postprocessing</x:String>
|
||||
<x:String x:Key="PPReinhard">Reinhard</x:String>
|
||||
<x:String x:Key="PPACES">ACES</x:String>
|
||||
|
||||
<x:String x:Key="ChromaticAberration">Aberracja chromatyczna</x:String>
|
||||
<x:String x:Key="MotionBlur">Rozmycie podczas ruchu</x:String>
|
||||
<x:String x:Key="AdditionalShadersEffects">Dodatkowe efekty shaderów</x:String>
|
||||
<x:String x:Key="ReflectionsCubeMap">Odbicia jako cubemapa</x:String>
|
||||
<x:String x:Key="RenderVBO">Renderowanie VBO</x:String>
|
||||
<x:String x:Key="RenderShadows">Renderowanie cieni</x:String>
|
||||
<x:String x:Key="ReflectionsFramerate">Odświeżanie odbić</x:String>
|
||||
<x:String x:Key="ShadowsResolution">Rozdzielczość cieni</x:String>
|
||||
<x:String x:Key="ShaderRange">Odświeżanie odbić</x:String>
|
||||
<x:String x:Key="CabShadowsRange">Zasięg źródeł cieni w kabinie</x:String>
|
||||
|
||||
<x:String x:Key="ShadowDisplay">Wyświetlanie cieni</x:String>
|
||||
<x:String x:Key="CSROnlyImportant">Tylko ważne</x:String>
|
||||
<x:String x:Key="CSRLimited">Ograniczone</x:String>
|
||||
<x:String x:Key="CSRAll">Wszystkie</x:String>
|
||||
|
||||
<x:String x:Key="ReflectionsDetails">Szczegółowość odbić</x:String>
|
||||
<x:String x:Key="RDTerrain">Tylko geometria terenu</x:String>
|
||||
<x:String x:Key="RDTerrainModels">Geometria terenu i modele statyczne</x:String>
|
||||
<x:String x:Key="RDTerrainModelsVehicles">Geometria terenu, modele statyczne i pojazdy</x:String>
|
||||
|
||||
<x:String x:Key="ShadowsCabRange">Zasięg źródeł cieni w kabinie</x:String>
|
||||
<x:String x:Key="RenderScreens">Renderowanie ekranów komputerów pokładowych</x:String>
|
||||
<x:String x:Key="RenderScreensThread">Renderowanie ekranów w osobnym wątku</x:String>
|
||||
<x:String x:Key="RenderScreensFramerate">Częstotliwość odświeżania ekranów komputerów pokładowych</x:String>
|
||||
|
||||
<x:String x:Key="Physics">Fizyka</x:String>
|
||||
|
||||
<x:String x:Key="TrackCurvesQuality">Jakość łuków torów</x:String>
|
||||
<x:String x:Key="PhysicsAccuracyIncreased">Zwiększona dokładność fizyki</x:String>
|
||||
<x:String x:Key="BreakingPantographPossibility">Możliwość złamania pantografu</x:String>
|
||||
<x:String x:Key="PowerOverheadLineOnly">Zasilanie tylko pod siecią trakcyjna</x:String>
|
||||
<x:String x:Key="SaveSpeedometerTapes">Zapisuj taśmy z prędkościomierza</x:String>
|
||||
<x:String x:Key="SaveSimLogs">Zapisuj log z symulacji</x:String>
|
||||
<x:String x:Key="KeepPrevLogs">Zachowuj poprzednie logi</x:String>
|
||||
<x:String x:Key="DisplaySimulation">Wyświetlaj symulację</x:String>
|
||||
<x:String x:Key="CrashDamage">Uszkodzenia przy zderzeniu</x:String>
|
||||
|
||||
<x:String x:Key="Sounds">Dżwięk</x:String>
|
||||
<x:String x:Key="EnableSounds">Włącz dźwięk</x:String>
|
||||
<x:String x:Key="Volume">Głośność</x:String>
|
||||
<x:String x:Key="RadiophoneVolume">Głośność radiotelefonu</x:String>
|
||||
<x:String x:Key="VehiclesVolume">Głośność pojazdów</x:String>
|
||||
<x:String x:Key="PositionedSoundsVolume">Głośność dżwięków pozycjonowanych</x:String>
|
||||
<x:String x:Key="AmbientVolume">Głośność otoczenia</x:String>
|
||||
<x:String x:Key="VolumeDuringPause">Głośność podczas pauzy</x:String>
|
||||
|
||||
<x:String x:Key="Starter">Starter</x:String>
|
||||
<x:String x:Key="AutoCloseStarter">Zamknij starter automatycznie</x:String>
|
||||
<x:String x:Key="LargeThumbnails">Duże miniaturki</x:String>
|
||||
<x:String x:Key="AutoExpandSceneryTree">Automatycznie rozwijanie drzewka scenerii</x:String>
|
||||
|
||||
|
||||
|
||||
|
||||
</ResourceDictionary>
|
||||
@@ -8,7 +8,7 @@
|
||||
xmlns:svg="clr-namespace:Avalonia.Svg;assembly=Avalonia.Svg"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:views="clr-namespace:StarterNG.Views" BackgroundStyle="Bubble"
|
||||
Title="MaSzyna - Symulator pojazdów szynowych" Height="800" Width="1000">
|
||||
Title="MaSzyna - Symulator pojazdów szynowych" Height="800" Width="1000" WindowStartupLocation="CenterScreen">
|
||||
<sukiUi:SukiSideMenu IsMenuExpanded="False">
|
||||
<sukiUi:SukiSideMenu.Items>
|
||||
<!-- SCENARIUSZE -->
|
||||
|
||||
33
StarterNG/Services/LocalizationService.cs
Normal file
33
StarterNG/Services/LocalizationService.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System.ComponentModel;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Styling;
|
||||
|
||||
namespace StarterNG.Services;
|
||||
|
||||
public class LocalizationService : INotifyPropertyChanged
|
||||
{
|
||||
private IResourceProvider _currentProvider = new ResourceDictionary();
|
||||
|
||||
public event PropertyChangedEventHandler? PropertyChanged;
|
||||
|
||||
|
||||
public string this[string key]
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_currentProvider.TryGetResource(key, null, out var value))
|
||||
{
|
||||
return value?.ToString() ?? key;
|
||||
}
|
||||
return key;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetLanguage(IResourceProvider provider)
|
||||
{
|
||||
_currentProvider = provider;
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Item"));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -6,7 +6,6 @@
|
||||
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||
<Platforms>AnyCPU;x64</Platforms>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
@@ -31,6 +30,10 @@
|
||||
<PackageReference Include="SukiUI" Version="6.0.3" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Assets\Logo\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="Assets\Logo\maszyna_black.svg" />
|
||||
<AvaloniaResource Include="Assets\Logo\maszyna_black.svg" />
|
||||
|
||||
@@ -4,46 +4,57 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:suki="clr-namespace:SukiUI.Controls;assembly=SukiUI"
|
||||
xmlns:objectModel="clr-namespace:System.Collections.ObjectModel;assembly=System.ObjectModel"
|
||||
xmlns:starterNg="clr-namespace:StarterNG"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="StarterNG.Views.Settings">
|
||||
<suki:SettingsLayout>
|
||||
<suki:SettingsLayout.Items>
|
||||
<objectModel:ObservableCollection x:TypeArguments="suki:SettingsLayoutItem">
|
||||
<suki:SettingsLayoutItem Header="Ogólne">
|
||||
<suki:SettingsLayoutItem Header="{Binding [General], Source={x:Static starterNg:App.Loc}}">
|
||||
<suki:SettingsLayoutItem.Content>
|
||||
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Vertical">
|
||||
<CheckBox>Tryb pełnoekranowy</CheckBox>
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<Label Content="{Binding [Language], Source={x:Static starterNg:App.Loc}}" VerticalAlignment="Center" FontSize="14"/>
|
||||
<ComboBox MinWidth="350" MaxWidth="350" SelectedIndex="1" SelectionChanged="LanguageComboBox_OnSelectionChanged">
|
||||
<ComboBoxItem>Polski</ComboBoxItem>
|
||||
<ComboBoxItem>English</ComboBoxItem>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
|
||||
<CheckBox Content="{Binding [Fullscreen], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Wstrzymaj symulację, gdy okno nie jest aktywne</CheckBox>
|
||||
<CheckBox Content="{Binding [PauseSimInactive], Source={x:Static starterNg:App.Loc}}" />
|
||||
|
||||
<CheckBox>Pauza po uruchomieniu</CheckBox>
|
||||
<CheckBox Content="{Binding [PauseSimStart], Source={x:Static starterNg:App.Loc}}" />
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<Label VerticalAlignment="Center" FontSize="14">Czułość kursora:</Label>
|
||||
<Label VerticalAlignment="Center" FontSize="14" Content="{Binding [CursorSensitivity], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" Maximum="5" TickFrequency="1" MinWidth="200" MaxWidth="200"
|
||||
IsSnapToTickEnabled="True" Value="3">
|
||||
</Slider>
|
||||
</StackPanel>
|
||||
|
||||
<CheckBox>Inwersja myszy w poziomie</CheckBox>
|
||||
<CheckBox>Inwersja myszy w pionie</CheckBox>
|
||||
<CheckBox Content="{Binding [MouseHorInvert], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<CheckBox Content="{Binding [MouseVertInvert], Source={x:Static starterNg:App.Loc}}" />
|
||||
</StackPanel>
|
||||
</suki:SettingsLayoutItem.Content>
|
||||
</suki:SettingsLayoutItem>
|
||||
<suki:SettingsLayoutItem Header="Komunikacja">
|
||||
<suki:SettingsLayoutItem Header="{Binding [Communication], Source={x:Static starterNg:App.Loc}}">
|
||||
<suki:SettingsLayoutItem.Content>
|
||||
<StackPanel Spacing="8" Orientation="Vertical">
|
||||
<CheckBox>Ignoruj sygnały z gamepada</CheckBox>
|
||||
<CheckBox Content="{Binding [GamepadSignalIgnore], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<Label VerticalAlignment="Center" FontSize="14">Informacja zwrotna</Label>
|
||||
<Label VerticalAlignment="Center" FontSize="14" Content="{Binding [Feedback], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBox MinWidth="350" MaxWidth="350" SelectedIndex="0">
|
||||
<ComboBoxItem Tag="0">Wyłączona</ComboBoxItem>
|
||||
<ComboBoxItem Tag="1">Caps: CA/SHP; ScrollLock: opory rozr.</ComboBoxItem>
|
||||
<ComboBoxItem Tag="2">Caps: CA; Scrollock: SHP</ComboBoxItem>
|
||||
<ComboBoxItem Tag="3">LPT</ComboBoxItem>
|
||||
<ComboBoxItem Tag="4">PoKeys55</ComboBoxItem>
|
||||
<ComboBoxItem Tag="5">Serialport (COM)</ComboBoxItem>
|
||||
<ComboBoxItem Tag="0" Content="{Binding [FeedbackOff], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Tag="1" Content="{Binding [FeedbackCASHP], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Tag="2" Content="{Binding [FeedbackCA], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Tag="3" Content="{Binding [FeedbackLPT], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Tag="4" Content="{Binding [FeedbackPoKeys], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Tag="5" Content="{Binding [FeedbackSP], Source={x:Static starterNg:App.Loc}}"/>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
|
||||
@@ -51,46 +62,46 @@
|
||||
</suki:SettingsLayoutItem.Content>
|
||||
</suki:SettingsLayoutItem>
|
||||
|
||||
<suki:SettingsLayoutItem Header="Inne">
|
||||
<suki:SettingsLayoutItem Header="{Binding [Others], Source={x:Static starterNg:App.Loc}}">
|
||||
<suki:SettingsLayoutItem.Content>
|
||||
<StackPanel Spacing="8" Orientation="Vertical">
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<Label VerticalAlignment="Center" FontSize="14">Wybór exe:</Label>
|
||||
<Label VerticalAlignment="Center" FontSize="14" Content="{Binding [SelectEXE], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBox MinWidth="350" MaxWidth="350" SelectedIndex="0">
|
||||
<ComboBoxItem>Wybierz automatycznie</ComboBoxItem>
|
||||
<ComboBoxItem Content="{Binding [SelectEXEAuto], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem>eu07.exe</ComboBoxItem>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
|
||||
<CheckBox>Tryb testowy (debugmode)</CheckBox>
|
||||
<CheckBox Content="{Binding [DebugMode], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Wirtualny manewrowy</CheckBox>
|
||||
<CheckBox Content="{Binding [VirtualShunting], Source={x:Static starterNg:App.Loc}}"/>
|
||||
</StackPanel>
|
||||
</suki:SettingsLayoutItem.Content>
|
||||
</suki:SettingsLayoutItem>
|
||||
|
||||
<suki:SettingsLayoutItem Header="Grafika">
|
||||
<suki:SettingsLayoutItem Header="{Binding [Graphic], Source={x:Static starterNg:App.Loc}}">
|
||||
<suki:SettingsLayoutItem.Content>
|
||||
<StackPanel Spacing="8" Orientation="Vertical">
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<Label VerticalAlignment="Center" FontSize="14">Silnik renderowania</Label>
|
||||
<Label VerticalAlignment="Center" FontSize="14" Content="{Binding [RenderEngine], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBox MinWidth="150" MaxWidth="150" SelectedIndex="0">
|
||||
<ComboBoxItem>Pełny</ComboBoxItem>
|
||||
<ComboBoxItem>Stary</ComboBoxItem>
|
||||
<ComboBoxItem>Uproszczony shaderowy</ComboBoxItem>
|
||||
<ComboBoxItem>Uproszczony</ComboBoxItem>
|
||||
<ComboBoxItem>Wyłącz warstwę wizualną</ComboBoxItem>
|
||||
<ComboBoxItem>Eksperymentalny</ComboBoxItem>
|
||||
<ComboBoxItem Content="{Binding [REFull], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Content="{Binding [REOld], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Content="{Binding [RESimpShader], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Content="{Binding [RESimp], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Content="{Binding [REOff], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Content="{Binding [REExperimental], Source={x:Static starterNg:App.Loc}}"/>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<Label VerticalAlignment="Center" FontSize="14">Rozdzielczość:</Label>
|
||||
<Label VerticalAlignment="Center" FontSize="14" Content="{Binding [Resolution], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBox MinWidth="150" MaxWidth="150" SelectedIndex="0">
|
||||
<ComboBoxItem>2560x1440</ComboBoxItem>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Rozdzielczość bufora:</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [BufforResolution], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Name="bufferScale" Minimum="50" MaxWidth="400" HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="200" TickFrequency="1" IsSnapToTickEnabled="True"
|
||||
Value="100" />
|
||||
@@ -99,7 +110,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Maksymalna rozdzielczość tekstur:</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [MaxTexResolution], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Name="textureResolutionSlider" Minimum="9" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="14"
|
||||
@@ -109,7 +120,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Maksymalna rozdzielczość tekstur kabiny:</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [MaxTexCabResolution], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Name="cabTextureResolutionSlider" Minimum="9" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="14"
|
||||
@@ -119,7 +130,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Jakość filtrowania tekstur</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [TexFilteringQuality], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="5"
|
||||
@@ -128,7 +139,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Multisampling</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [Multisampling], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="4"
|
||||
@@ -137,18 +148,18 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Zasięg renderowania</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [RenderRange], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="3" Value="1" />
|
||||
</StackPanel>
|
||||
|
||||
<CheckBox>VSync</CheckBox>
|
||||
<CheckBox Content="{Binding [VSync], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Wyświetlanie dymu</CheckBox>
|
||||
<CheckBox Content="{Binding [SmokeDisplay], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Mnożnik ilości cząsteczek dymu</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [SmokeParticlesMultiplier], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="4"
|
||||
@@ -157,27 +168,27 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Postprocessing</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [Postprocessing], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBox MinWidth="150" MaxWidth="150" SelectedIndex="0">
|
||||
<ComboBoxItem>Reinhard</ComboBoxItem>
|
||||
<ComboBoxItem>ACES</ComboBoxItem>
|
||||
<ComboBoxItem Content="{Binding [PPReinhard], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Content="{Binding [PPACES], Source={x:Static starterNg:App.Loc}}"/>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
|
||||
<CheckBox>Aberracja chromatyczna</CheckBox>
|
||||
<CheckBox Content="{Binding [ChromaticAberration], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Rozmycie podczas ruchu</CheckBox>
|
||||
<CheckBox Content="{Binding [MotionBlur], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Dodatkowe efekty shaderów</CheckBox>
|
||||
<CheckBox Content="{Binding [AdditionalShadersEffects], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Odbicia jako cubemapa</CheckBox>
|
||||
<CheckBox Content="{Binding [ReflectionsCubeMap], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Renderowanie VBO</CheckBox>
|
||||
<CheckBox Content="{Binding [RenderVBO], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Renderowanie cieni</CheckBox>
|
||||
<CheckBox Content="{Binding [RenderShadows], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Odświeżanie odbić</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [ReflectionsFramerate], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Name="reflectionsFramerate" Minimum="5" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="120"
|
||||
@@ -188,7 +199,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Rozdzielczość cieni</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [ShadowsResolution], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Name="shaderResolutionSlider" Minimum="9" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="14"
|
||||
@@ -198,7 +209,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Odświeżanie odbić</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [ShaderRange], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Name="shaderRange" Minimum="25" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="400"
|
||||
@@ -209,7 +220,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Zasięg źródeł cieni w kabinie</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [CabShadowsRange], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Name="cabShaderSourceRange" Minimum="0" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="100"
|
||||
@@ -220,25 +231,25 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Wyświetlanie cieni</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [ShadowDisplay], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBox MinWidth="150" MaxWidth="150" SelectedIndex="0">
|
||||
<ComboBoxItem>Tylko ważne</ComboBoxItem>
|
||||
<ComboBoxItem>Ograniczone</ComboBoxItem>
|
||||
<ComboBoxItem>Wszystkie</ComboBoxItem>
|
||||
<ComboBoxItem Content="{Binding [CSROnlyImportant], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Content="{Binding [CSRLimited], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Content="{Binding [CSRAll], Source={x:Static starterNg:App.Loc}}"/>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Szczegółowość odbić</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [ReflectionsDetails], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBox MinWidth="350" MaxWidth="350" SelectedIndex="0">
|
||||
<ComboBoxItem>Tylko geometria terenu</ComboBoxItem>
|
||||
<ComboBoxItem>Geometria terenu i modele statyczne</ComboBoxItem>
|
||||
<ComboBoxItem>Geometria terenu, modele statyczne i pojazdy</ComboBoxItem>
|
||||
<ComboBoxItem Content="{Binding [RDTerrain], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Content="{Binding [RDTerrainModels], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<ComboBoxItem Content="{Binding [RDTerrainModelsVehicles], Source={x:Static starterNg:App.Loc}}"/>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Zasięg źródeł cieni w kabinie</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [ShadowsCabRange], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Name="fovSlider" Minimum="5" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="110"
|
||||
@@ -248,11 +259,11 @@
|
||||
Content="{Binding #fovSlider.Value, StringFormat='{}{0} stopni'}" />
|
||||
</StackPanel>
|
||||
|
||||
<CheckBox>Renderowanie ekranów komputerów pokładowych</CheckBox>
|
||||
<CheckBox>Renderowanie ekranów w osobnym wątku</CheckBox>
|
||||
<CheckBox Content="{Binding [RenderScreens], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<CheckBox Content="{Binding [RenderScreensThread], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Częstotliwość odświeżania ekranów komputerów pokładowych</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [RenderScreensFramerate], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="5"
|
||||
@@ -263,11 +274,11 @@
|
||||
</suki:SettingsLayoutItem.Content>
|
||||
</suki:SettingsLayoutItem>
|
||||
|
||||
<suki:SettingsLayoutItem Header="Fizyka">
|
||||
<suki:SettingsLayoutItem Header="{Binding [Physics], Source={x:Static starterNg:App.Loc}}">
|
||||
<suki:SettingsLayoutItem.Content>
|
||||
<StackPanel Spacing="8" Orientation="Vertical">
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Jakość łuków torów</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [TrackCurvesQuality], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="4"
|
||||
@@ -275,32 +286,32 @@
|
||||
IsSnapToTickEnabled="True" Value="4" />
|
||||
</StackPanel>
|
||||
|
||||
<CheckBox>Zwiększona dokładność fizyki</CheckBox>
|
||||
<CheckBox Content="{Binding [PhysicsAccuracyIncreased], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Możliwość złamania pantografu</CheckBox>
|
||||
<CheckBox Content="{Binding [BreakingPantographPossibility], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Zasilanie tylko pod siecią trakcyjna</CheckBox>
|
||||
<CheckBox Content="{Binding [PowerOverheadLineOnly], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Zapisuj taśmy z prędkościomierza</CheckBox>
|
||||
<CheckBox Content="{Binding [SaveSpeedometerTapes], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Zapisuj log z symulacji</CheckBox>
|
||||
<CheckBox Content="{Binding [SaveSimLogs], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Zachowuj poprzednie logi</CheckBox>
|
||||
<CheckBox Content="{Binding [KeepPrevLogs], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Wyświetlaj symulację</CheckBox>
|
||||
<CheckBox Content="{Binding [DisplaySimulation], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<CheckBox>Uszkodzenia przy zderzeniu</CheckBox>
|
||||
<CheckBox Content="{Binding [CrashDamage], Source={x:Static starterNg:App.Loc}}"/>
|
||||
</StackPanel>
|
||||
</suki:SettingsLayoutItem.Content>
|
||||
</suki:SettingsLayoutItem>
|
||||
|
||||
<suki:SettingsLayoutItem Header="Dżwięk">
|
||||
<suki:SettingsLayoutItem Header="{Binding [Sounds], Source={x:Static starterNg:App.Loc}}">
|
||||
<suki:SettingsLayoutItem.Content>
|
||||
<StackPanel Spacing="8" Orientation="Vertical">
|
||||
<CheckBox>Włącz dźwięk</CheckBox>
|
||||
<CheckBox Content="{Binding [EnableSounds], Source={x:Static starterNg:App.Loc}}"/>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Głośność</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [Volume], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="100"
|
||||
@@ -309,7 +320,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Głośność radiotelefonu</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [RadiophoneVolume], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="100"
|
||||
@@ -318,7 +329,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Głośność pojazdów</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [VehiclesVolume], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="100"
|
||||
@@ -327,7 +338,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Głośność dżwięków pozycjonowanych</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [PositionedSoundsVolume], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="100"
|
||||
@@ -336,7 +347,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Głośność otoczenia</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [AmbientVolume], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="100"
|
||||
@@ -345,7 +356,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" Orientation="Horizontal">
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14">Głośność podczas pauzy</TextBlock>
|
||||
<TextBlock VerticalAlignment="Center" FontSize="14" Text="{Binding [VolumeDuringPause], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<Slider Minimum="1" MaxWidth="400"
|
||||
HorizontalAlignment="Left"
|
||||
MinWidth="250" Maximum="100"
|
||||
@@ -356,12 +367,12 @@
|
||||
</suki:SettingsLayoutItem.Content>
|
||||
</suki:SettingsLayoutItem>
|
||||
|
||||
<suki:SettingsLayoutItem Header="Starter">
|
||||
<suki:SettingsLayoutItem Header="{Binding [Starter], Source={x:Static starterNg:App.Loc}}">
|
||||
<suki:SettingsLayoutItem.Content>
|
||||
<StackPanel Spacing="8" Orientation="Vertical">
|
||||
<CheckBox>Zamknij starter automatycznie</CheckBox>
|
||||
<CheckBox>Duże miniaturki</CheckBox>
|
||||
<CheckBox>Automatycznie rozwijanie drzewka scenerii</CheckBox>
|
||||
<CheckBox Content="{Binding [AutoCloseStarter], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<CheckBox Content="{Binding [LargeThumbnails], Source={x:Static starterNg:App.Loc}}"/>
|
||||
<CheckBox Content="{Binding [AutoExpandSceneryTree], Source={x:Static starterNg:App.Loc}}"/>
|
||||
</StackPanel>
|
||||
</suki:SettingsLayoutItem.Content>
|
||||
</suki:SettingsLayoutItem>
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.Primitives;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Avalonia.Markup.Xaml.Styling;
|
||||
|
||||
namespace StarterNG.Views;
|
||||
|
||||
@@ -45,4 +47,28 @@ public partial class Settings : UserControl
|
||||
int resolution = 1 << (int)shaderResolutionSlider.Value;
|
||||
shaderResolution.Text = $"{resolution} px";
|
||||
}
|
||||
|
||||
private void LanguageComboBox_OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (sender is not ComboBox { SelectedItem: ComboBoxItem item }) return;
|
||||
var lang = item.Content?.ToString();
|
||||
if (string.IsNullOrEmpty(lang)) return;
|
||||
|
||||
var langDict = new ResourceInclude(new Uri("avares://StarterNG/"))
|
||||
{
|
||||
Source = new Uri($"Assets/Langs/{lang}.axaml", UriKind.Relative)
|
||||
};
|
||||
|
||||
var currentLangDict = App.Current.Resources.MergedDictionaries
|
||||
.OfType<ResourceInclude>()
|
||||
.FirstOrDefault(d => d.Source != null && d.Source.OriginalString.Contains("Langs/"));
|
||||
|
||||
if (currentLangDict != null)
|
||||
{
|
||||
App.Current.Resources.MergedDictionaries.Remove(currentLangDict);
|
||||
}
|
||||
App.Current.Resources.MergedDictionaries.Add(langDict);
|
||||
|
||||
App.Loc.SetLanguage(langDict);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user