mirror of
https://github.com/MaSzyna-EU07/StarterNG.git
synced 2026-11-01 12:22:09 +01:00
Take the remaining I/O out of the domain and drop AppState.Instance
Scenery translations and load weights get repositories; AppState moves to the application layer.
This commit is contained in:
@@ -146,7 +146,7 @@ public partial class Depot : UserControl
|
||||
_drag.VehicleListPressed(sender, e);
|
||||
|
||||
private Dynamic NewVehicle(VehicleTexture texture) =>
|
||||
_consist.MakeDynamic(texture, _listScenery ?? AppState.Instance.CurrentScenery);
|
||||
_consist.MakeDynamic(texture, _listScenery ?? AppServices.Current.State.CurrentScenery);
|
||||
|
||||
private void SyncFromSelection()
|
||||
{
|
||||
@@ -155,7 +155,7 @@ public partial class Depot : UserControl
|
||||
|
||||
PopulateSceneryConsists();
|
||||
|
||||
var trainset = AppState.Instance.CurrentTrainset;
|
||||
var trainset = AppServices.Current.State.CurrentTrainset;
|
||||
if (trainset != null && !ReferenceEquals(trainset, _consist.EditingTrainset))
|
||||
_consist.LoadFrom(trainset);
|
||||
else if (_consist.EditingTrainset != null)
|
||||
@@ -220,7 +220,7 @@ public partial class Depot : UserControl
|
||||
_consist.EditingTrainset,
|
||||
_info.PhysicsFor,
|
||||
car => _db.TextureForSkin(car.SkinFile) is { } t ? VehicleInfo.CategoryOf(t) : null,
|
||||
LoadWeights.WeightOf));
|
||||
AppServices.Current.LoadWeights.Table.WeightOf));
|
||||
}
|
||||
|
||||
private void RemoveVehicleButton_OnClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
|
||||
@@ -245,7 +245,7 @@ public partial class Depot : UserControl
|
||||
depotShowAiCheck.IsChecked = StarterNG.Classes.Settings.Instance.ShowAiVehicles;
|
||||
depotDrivableOnlyCheck.IsChecked = StarterNG.Classes.Settings.Instance.DrivableOnly;
|
||||
|
||||
_listScenery = AppState.Instance.CurrentScenery ?? _sceneries.FirstOrDefault();
|
||||
_listScenery = AppServices.Current.State.CurrentScenery ?? _sceneries.FirstOrDefault();
|
||||
sceneryConsistsTab.Header = App.Loc["SceneryConsists"];
|
||||
ToolTip.SetTip(sceneryConsistsTab,
|
||||
_listScenery != null ? Path.GetFileNameWithoutExtension(_listScenery.Path) : App.Loc["NoSceneryConsists"]);
|
||||
@@ -276,7 +276,7 @@ public partial class Depot : UserControl
|
||||
randomTurn: ToolRandomOrientation);
|
||||
sceneryConsistList.Items.Add(entry);
|
||||
|
||||
if (ReferenceEquals(trainset, AppState.Instance.CurrentTrainset))
|
||||
if (ReferenceEquals(trainset, AppServices.Current.State.CurrentTrainset))
|
||||
sceneryConsistList.SelectedItem = entry;
|
||||
}
|
||||
}
|
||||
@@ -289,9 +289,9 @@ public partial class Depot : UserControl
|
||||
if (sceneryConsistList.SelectedItem is not ListBoxItem { Tag: Trainset trainset })
|
||||
return;
|
||||
|
||||
AppState.Instance.CurrentScenery = _listScenery;
|
||||
AppState.Instance.CurrentTrainset = trainset;
|
||||
AppState.Instance.StartingVehicleName = TrainsetDisplay.DefaultStartingVehicle(trainset);
|
||||
AppServices.Current.State.CurrentScenery = _listScenery;
|
||||
AppServices.Current.State.CurrentTrainset = trainset;
|
||||
AppServices.Current.State.StartingVehicleName = TrainsetDisplay.DefaultStartingVehicle(trainset);
|
||||
_consist.LoadFrom(trainset);
|
||||
}
|
||||
|
||||
@@ -313,8 +313,8 @@ public partial class Depot : UserControl
|
||||
private void ApplyConsist(Trainset target, List<Dynamic> vehicles)
|
||||
{
|
||||
target.Vehicles = vehicles;
|
||||
AppState.Instance.CurrentScenery = _listScenery;
|
||||
AppState.Instance.CurrentTrainset = target;
|
||||
AppServices.Current.State.CurrentScenery = _listScenery;
|
||||
AppServices.Current.State.CurrentTrainset = target;
|
||||
_consist.LoadFrom(target);
|
||||
PopulateSceneryConsists();
|
||||
}
|
||||
@@ -322,8 +322,8 @@ public partial class Depot : UserControl
|
||||
private void RemoveAllVehicles(Trainset target)
|
||||
{
|
||||
target.Vehicles = new List<Dynamic>();
|
||||
AppState.Instance.CurrentScenery = _listScenery;
|
||||
AppState.Instance.CurrentTrainset = target;
|
||||
AppServices.Current.State.CurrentScenery = _listScenery;
|
||||
AppServices.Current.State.CurrentTrainset = target;
|
||||
_consist.LoadFrom(target);
|
||||
PopulateSceneryConsists();
|
||||
}
|
||||
@@ -355,7 +355,7 @@ public partial class Depot : UserControl
|
||||
|
||||
public async Task RandomizeCurrentTrainsetAsync()
|
||||
{
|
||||
if (AppState.Instance.CurrentTrainset is not { } trainset)
|
||||
if (AppServices.Current.State.CurrentTrainset is not { } trainset)
|
||||
return;
|
||||
|
||||
if (!ReferenceEquals(trainset, _consist.EditingTrainset))
|
||||
|
||||
@@ -13,6 +13,7 @@ using StarterNG.Classes;
|
||||
using StarterNG.Controls;
|
||||
using StarterNG.Domain;
|
||||
using StarterNG.Domain.Vehicles;
|
||||
using StarterNG.Application;
|
||||
|
||||
namespace StarterNG.Views;
|
||||
|
||||
@@ -277,7 +278,7 @@ public sealed class VehicleDetails
|
||||
if (ReferenceEquals(_consist.Selected, item))
|
||||
_consist.SyncStartingVehicle();
|
||||
_redraw();
|
||||
AppState.Instance.NotifyChanged();
|
||||
AppServices.Current.State.NotifyChanged();
|
||||
};
|
||||
driver.MinWidth = 0;
|
||||
driver.HorizontalAlignment = HorizontalAlignment.Stretch;
|
||||
@@ -617,7 +618,7 @@ public sealed class VehicleDetails
|
||||
var typeCombo = new ComboBox { FontSize = 12, MinWidth = 120 };
|
||||
typeCombo.Items.Add(new ComboBoxItem { Content = App.Loc["None"], Tag = null });
|
||||
foreach (var name in available)
|
||||
typeCombo.Items.Add(new ComboBoxItem { Content = LoadWeights.Describe(name), Tag = name });
|
||||
typeCombo.Items.Add(new ComboBoxItem { Content = DescribeLoad(name), Tag = name });
|
||||
|
||||
typeCombo.SelectedIndex = 0;
|
||||
if (!string.IsNullOrEmpty(lead.LoadType))
|
||||
@@ -754,4 +755,14 @@ public sealed class VehicleDetails
|
||||
countRow,
|
||||
BuildVehicleLoadTools(item));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Label for a cargo type. The pantograph state is carried as a pseudo load
|
||||
/// and gets a translated name rather than its raw token.
|
||||
/// </summary>
|
||||
private static string DescribeLoad(string name) =>
|
||||
string.Equals(name, Dynamic.PantState, StringComparison.OrdinalIgnoreCase)
|
||||
? App.Loc["LoadPantState"]
|
||||
: name;
|
||||
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ public partial class Scenarios : UserControl
|
||||
continue;
|
||||
|
||||
bool expand = StarterNG.Classes.Settings.Instance.AutoExpandSceneryTree;
|
||||
SceneryI18n.LoadFor(scenery, App.Loc.CurrentLangCode);
|
||||
AppServices.Current.SceneryTexts.LoadFor(scenery, App.Loc.CurrentLangCode);
|
||||
string label = scenery.DisplayName;
|
||||
|
||||
if (string.IsNullOrEmpty(scenery.Group))
|
||||
@@ -93,7 +93,7 @@ public partial class Scenarios : UserControl
|
||||
{
|
||||
groupNode = new TreeViewItem
|
||||
{
|
||||
Header = SceneryI18n.T(scenery.Group),
|
||||
Header = AppServices.Current.SceneryTexts.Translate(scenery.Group),
|
||||
IsExpanded = expand
|
||||
};
|
||||
groupNodes[scenery.Group] = groupNode;
|
||||
@@ -261,7 +261,7 @@ public partial class Scenarios : UserControl
|
||||
{
|
||||
trainset.Vehicles = vehicles;
|
||||
item.Content = TrainsetListContent(trainset);
|
||||
if (ReferenceEquals(AppState.Instance.CurrentTrainset, trainset))
|
||||
if (ReferenceEquals(AppServices.Current.State.CurrentTrainset, trainset))
|
||||
ShowConsist(trainset);
|
||||
}
|
||||
|
||||
@@ -309,8 +309,8 @@ public partial class Scenarios : UserControl
|
||||
|
||||
private void ShowSceneryInfo(Scenery scenery)
|
||||
{
|
||||
SceneryI18n.LoadFor(scenery, App.Loc.CurrentLangCode);
|
||||
sceneryDescription.Text = scenery.LocalizedDescription;
|
||||
AppServices.Current.SceneryTexts.LoadFor(scenery, App.Loc.CurrentLangCode);
|
||||
sceneryDescription.Text = scenery.LocalizedDescription(AppServices.Current.SceneryTexts);
|
||||
|
||||
string? imagePath = AppServices.Current.SceneryImages.Resolve(scenery);
|
||||
if (imagePath is not null)
|
||||
@@ -401,7 +401,7 @@ public partial class Scenarios : UserControl
|
||||
|
||||
public void RebuildAfterLanguageChange()
|
||||
{
|
||||
string? selected = AppState.Instance.CurrentScenery?.Path;
|
||||
string? selected = AppServices.Current.State.CurrentScenery?.Path;
|
||||
BuildSceneryTree();
|
||||
if (!string.IsNullOrEmpty(selected))
|
||||
{
|
||||
@@ -409,8 +409,8 @@ public partial class Scenarios : UserControl
|
||||
Path.GetFileNameWithoutExtension(selected);
|
||||
RestoreLastScenery();
|
||||
}
|
||||
if (AppState.Instance.CurrentScenery != null)
|
||||
ShowSceneryInfo(AppState.Instance.CurrentScenery);
|
||||
if (AppServices.Current.State.CurrentScenery != null)
|
||||
ShowSceneryInfo(AppServices.Current.State.CurrentScenery);
|
||||
RefreshSelectedConsist();
|
||||
}
|
||||
|
||||
@@ -422,7 +422,7 @@ public partial class Scenarios : UserControl
|
||||
_reloading = true;
|
||||
try
|
||||
{
|
||||
string? selected = AppState.Instance.CurrentScenery?.Path;
|
||||
string? selected = AppServices.Current.State.CurrentScenery?.Path;
|
||||
await Task.Run(() => AppServices.Current.Library.ReloadSceneries());
|
||||
Sceneries = AppServices.Current.Library.Sceneries;
|
||||
BuildSceneryTree();
|
||||
@@ -443,14 +443,14 @@ public partial class Scenarios : UserControl
|
||||
|
||||
private void RandomTexturesButton_OnClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
if (AppState.Instance.CurrentScenery is { } scenery)
|
||||
if (AppServices.Current.State.CurrentScenery is { } scenery)
|
||||
RandomizeTexturesRequested?.Invoke(scenery);
|
||||
}
|
||||
|
||||
public void RefreshConsistView()
|
||||
{
|
||||
RefreshVehicleLabels();
|
||||
if (AppState.Instance.CurrentTrainset is { } trainset)
|
||||
if (AppServices.Current.State.CurrentTrainset is { } trainset)
|
||||
ShowConsist(trainset);
|
||||
}
|
||||
|
||||
@@ -505,7 +505,7 @@ public partial class Scenarios : UserControl
|
||||
|
||||
private void OpenSceneryDir_OnClick(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
var scn = AppState.Instance.CurrentScenery;
|
||||
var scn = AppServices.Current.State.CurrentScenery;
|
||||
string dir = scn != null
|
||||
? (Path.GetDirectoryName(Path.GetFullPath(scn.Path)) ?? "scenery")
|
||||
: Path.GetFullPath("scenery");
|
||||
@@ -538,9 +538,9 @@ public partial class Scenarios : UserControl
|
||||
return;
|
||||
Trainset selectedTrainset = selectedScn.Trainsets[vTag];
|
||||
|
||||
AppState.Instance.CurrentScenery = selectedScn;
|
||||
AppState.Instance.CurrentTrainset = selectedTrainset;
|
||||
AppState.Instance.StartingVehicleName = TrainsetDisplay.DefaultStartingVehicle(selectedTrainset);
|
||||
AppServices.Current.State.CurrentScenery = selectedScn;
|
||||
AppServices.Current.State.CurrentTrainset = selectedTrainset;
|
||||
AppServices.Current.State.StartingVehicleName = TrainsetDisplay.DefaultStartingVehicle(selectedTrainset);
|
||||
|
||||
ShowConsist(selectedTrainset);
|
||||
ShowTimetable(selectedScn, selectedTrainset);
|
||||
@@ -874,13 +874,13 @@ public partial class Scenarios : UserControl
|
||||
trainset.Vehicles.Remove(v);
|
||||
|
||||
bool wasPicked = !string.IsNullOrEmpty(v.Name) &&
|
||||
string.Equals(v.Name, AppState.Instance.StartingVehicleName,
|
||||
string.Equals(v.Name, AppServices.Current.State.StartingVehicleName,
|
||||
StringComparison.OrdinalIgnoreCase);
|
||||
if (wasPicked && trainset.Vehicles.Count > 0)
|
||||
{
|
||||
int next = Math.Clamp(gap, 0, trainset.Vehicles.Count - 1);
|
||||
AppState.Instance.StartingVehicleName = trainset.Vehicles[next].Name;
|
||||
AppState.Instance.NotifyChanged();
|
||||
AppServices.Current.State.StartingVehicleName = trainset.Vehicles[next].Name;
|
||||
AppServices.Current.State.NotifyChanged();
|
||||
}
|
||||
|
||||
RefreshVehicleLabels();
|
||||
@@ -909,7 +909,7 @@ public partial class Scenarios : UserControl
|
||||
: MissingMiniBox(train.SkinFile, thumbH);
|
||||
|
||||
bool selected = !string.IsNullOrEmpty(train.Name) &&
|
||||
string.Equals(train.Name, AppState.Instance.StartingVehicleName,
|
||||
string.Equals(train.Name, AppServices.Current.State.StartingVehicleName,
|
||||
StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
var slot = new Border
|
||||
@@ -946,7 +946,7 @@ public partial class Scenarios : UserControl
|
||||
string desc = trainset.Description ?? "";
|
||||
if (desc.TrimStart().StartsWith('-'))
|
||||
desc = desc.TrimStart()[1..].TrimStart();
|
||||
missionDescription.Text = SceneryI18n.T(desc);
|
||||
missionDescription.Text = AppServices.Current.SceneryTexts.Translate(desc);
|
||||
UpdateTrainStats(trainset);
|
||||
}
|
||||
|
||||
@@ -995,8 +995,8 @@ public partial class Scenarios : UserControl
|
||||
index >= clicked.Vehicles.Count)
|
||||
return;
|
||||
|
||||
AppState.Instance.StartingVehicleName = clicked.Vehicles[index].Name;
|
||||
AppState.Instance.NotifyChanged();
|
||||
AppServices.Current.State.StartingVehicleName = clicked.Vehicles[index].Name;
|
||||
AppServices.Current.State.NotifyChanged();
|
||||
ShowConsist(clicked);
|
||||
return;
|
||||
}
|
||||
@@ -1204,7 +1204,7 @@ public partial class Scenarios : UserControl
|
||||
|
||||
private void RefreshSelectedConsist()
|
||||
{
|
||||
if (AppState.Instance.CurrentTrainset is { } trainset)
|
||||
if (AppServices.Current.State.CurrentTrainset is { } trainset)
|
||||
ShowConsist(trainset);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user