mirror of
https://github.com/MaSzyna-EU07/StarterNG.git
synced 2026-10-30 03:30:29 +01:00
Add trainset parser
This commit is contained in:
@@ -17,20 +17,17 @@
|
||||
<RowDefinition Height="40" />
|
||||
</Grid.RowDefinitions>
|
||||
<sukiUi:GroupBox Grid.RowSpan="2" Header="Scenerie">
|
||||
<TreeView Name="sceneryList">
|
||||
<TreeView Name="sceneryList" SelectionChanged="SceneryList_OnSelectionChanged">
|
||||
|
||||
</TreeView>
|
||||
</sukiUi:GroupBox>
|
||||
<sukiUi:GroupBox Grid.Column="1" Header="Pojazdy">
|
||||
<ListBox>
|
||||
<ListBoxItem>EP07P-2003</ListBoxItem>
|
||||
<ListBoxItem>EP07-1049</ListBoxItem>
|
||||
<ListBoxItem>EN57AKM-1562</ListBoxItem>
|
||||
<ListBox Name="vehicleList" SelectionChanged="VehicleList_OnSelectionChanged">
|
||||
</ListBox>
|
||||
</sukiUi:GroupBox>
|
||||
<sukiUi:GroupBox Grid.Column="1" Grid.Row="1" Header="Opis scenariusza">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<TextBlock TextWrapping="Wrap">
|
||||
<TextBlock TextWrapping="Wrap" Name="missionDescription">
|
||||
Prowadzimy RegioExpress RPE23119 z Dębicy do Sandomierza. Misję rozpoczynamy w lokomotywowni w Dębicy. Jedziemy zgodnie ze wskazaniami tarcz manewrowych na bocznicę z drugiej strony stacji, gdzie przypinamy wagony do naszego składu, po czym wciągamy je w peron. Następnie jedziemy do Sandomierza, zatrzymując się po drodze tylko w Turowie. Po przyjeździe do Sandomierza odczepiamy lokomotywę i zjeżdżamy na tor postojowy, gdzie kończymy służbę. Czas misji: ok. 80 minut.
|
||||
</TextBlock>
|
||||
</ScrollViewer>
|
||||
@@ -41,8 +38,7 @@
|
||||
<ScrollViewer VerticalAlignment="Bottom"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Disabled">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Image Source="avares://StarterNG/Assets/Test/ep07p.bmp" Height="50"></Image>
|
||||
<StackPanel Orientation="Horizontal" Name="consistStack">
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</sukiUi:GroupBox>
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Linq;
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Avalonia.Media.Imaging;
|
||||
using StarterNG.Classes;
|
||||
|
||||
namespace StarterNG.Views;
|
||||
@@ -66,8 +67,72 @@ public partial class Scenarios : UserControl
|
||||
Tag = i
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void SceneryList_OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
var item = sceneryList.SelectedItem as TreeViewItem;
|
||||
if (item?.Tag is not int tag)
|
||||
return;
|
||||
Scenery selectedScn = sceneries[tag];
|
||||
vehicleList.Items.Clear();
|
||||
|
||||
// add all trainsets to list
|
||||
for (int i = 0; i < selectedScn.Trainsets.Count; i++)
|
||||
{
|
||||
string trainsetName = string.Join(
|
||||
" + ",
|
||||
selectedScn.Trainsets[i].Vehicles.Select(dyn => dyn.Name)
|
||||
);
|
||||
if (string.IsNullOrWhiteSpace(trainsetName)) continue; // skip empty
|
||||
vehicleList.Items.Add(new ListBoxItem
|
||||
{
|
||||
Content = trainsetName,
|
||||
Tag = i
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void VehicleList_OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
consistStack.Children.Clear();
|
||||
|
||||
// get selected scenery
|
||||
var tItem = sceneryList.SelectedItem as TreeViewItem;
|
||||
if (tItem?.Tag is not int tTag)
|
||||
return;
|
||||
Scenery selectedScn = sceneries[tTag];
|
||||
|
||||
// get selected trainset
|
||||
ListBoxItem vItem = vehicleList.SelectedItem as ListBoxItem;
|
||||
if (vItem?.Tag is not int vTag)
|
||||
return;
|
||||
Trainset selectedTrainset = selectedScn.Trainsets[vTag];
|
||||
foreach (var train in selectedTrainset.Vehicles)
|
||||
{
|
||||
string path = Path.Combine(
|
||||
"textures",
|
||||
"mini",
|
||||
train.SkinFile + ".bmp"
|
||||
);
|
||||
|
||||
if (!File.Exists(path))
|
||||
{
|
||||
// fallback
|
||||
continue;
|
||||
}
|
||||
|
||||
var bitmap = new Bitmap(path);
|
||||
var image = new Image
|
||||
{
|
||||
Source = bitmap,
|
||||
Height = 45,
|
||||
Stretch = Avalonia.Media.Stretch.Uniform,
|
||||
Margin = new Thickness(0)
|
||||
};
|
||||
consistStack.Children.Add(image);
|
||||
}
|
||||
missionDescription.Text = selectedTrainset.Description;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user