XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 0
返回提交历史

SpaceEngineersModDev/SpaceEngineersBlueprintEditorInWinUI

add-添加游戏定义集的本地化语言加载器

d8127c0
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

8 个文件 +76 -11
Modified SpaceEngineersBlueprintEditor.SpaceEngineersCore/Initializer.cs +7 -2
@@ -33,7 +33,7 @@ public class Initializer
33 33 {
34 34 return FormatterServices.GetUninitializedObject(type);
35 35 }
36 public static void Initialize()
36 public static void Initialize(string gameContentPath, string userDataPath)
37 37 {
38 38 XmlConfigurator.Configure();
39 39 MyFileSystem.ExePath = Path.GetDirectoryName(Assembly.GetAssembly(typeof(FastResourceLock))!.Location);
@@ -41,7 +41,7 @@ public class Initializer
41 41 SpaceEngineersGame.SetupBasicGameInfo();
42 42 _ = new MyCommonProgramStartup([]);
43 43 MyFileSystem.Reset();
44 MyFileSystem.Init("D:\\SteamLibrary\\steamapps\\common\\SpaceEngineers\\Content", "C:\\Users\\XFEstudio\\AppData\\Roaming\\SpaceEngineers");
44 MyFileSystem.Init(gameContentPath, userDataPath);
45 45 MyVRage.Init(new CorePlatform());
46 46 MyVRage.Platform.Init();
47 47 MySandboxGame.Config = new MyConfig("SpaceEngineers.cfg");
@@ -68,6 +68,11 @@ public class Initializer
68 68 myPlanets.LoadData();
69 69 MyDefinitionManager.Static.PreloadDefinitions();
70 70 MyDefinitionManager.Static.LoadData([]);
71 MyTexts.Clear();
72 var culture = Thread.CurrentThread.CurrentUICulture.IetfLanguageTag.Split(['-'], StringSplitOptions.RemoveEmptyEntries);
73 var language = culture.Length > 0 ? culture[0] : null;
74 var country = culture.Length > 1 ? culture[1] : null;
75 MyTexts.LoadTexts(@$"{gameContentPath}\Data\Localization", language, country);
71 76 IsDefinitionsLoadComplete = true;
72 77 }
73 78
Modified SpaceEngineersBlueprintEditor/App.xaml.cs +1 -1
@@ -26,7 +26,7 @@ public partial class App : Application
26 26 {
27 27 try
28 28 {
29 Initializer.Initialize();
29 Initializer.Initialize(SpaceEngineersPath.SpaceEngineerContentPath, SpaceEngineersPath.UserGameDataRoot);
30 30 GlobalServiceManager.GetService<IMessageService>()?.ShowMessage("游戏集定义加载完成", "完成", InfoBarSeverity.Success);
31 31 }
32 32 catch (Exception ex)
Added SpaceEngineersBlueprintEditor/Model/DefinitionViewData.cs +10 -0
@@ -0,0 +1,10 @@
1 using Microsoft.UI.Xaml.Media;
2 using VRage.Game;
3
4 namespace SpaceEngineersBlueprintEditor.Model;
5
6 public class DefinitionViewData(ImageSource? imageSource, MyDefinitionBase myDefinitionBase)
7 {
8 public ImageSource? ImageSource { get; set; } = imageSource;
9 public MyDefinitionBase? DefinitionBase { get; set; } = myDefinitionBase;
10 }
Modified SpaceEngineersBlueprintEditor/Utilities/Helpers/Extensions.cs +2 -0
@@ -1,6 +1,7 @@
1 1 using Microsoft.UI.Xaml.Media.Imaging;
2 2 using Microsoft.Windows.ApplicationModel.Resources;
3 3 using SpaceEngineersBlueprintEditor.Model;
4 using VRage.Game;
4 5
5 6 namespace SpaceEngineersBlueprintEditor.Utilities.Helpers;
6 7
@@ -9,4 +10,5 @@ public static class Extensions
9 10 private static readonly ResourceLoader _resourceLoader = new();
10 11 public static string GetLocalized(this string resourceKey) => _resourceLoader.GetString(resourceKey);
11 12 public static BlueprintInfoViewData ToBlueprintInfoViewData(this BlueprintInfo blueprintInfo) => new(new BitmapImage(blueprintInfo.HasImage ? new(blueprintInfo.ImagePath) : new Uri("ms-appx:///Assets/Images/BlueprintDrag.png", UriKind.RelativeOrAbsolute)), !blueprintInfo.HasBlueprint, blueprintInfo.Name, blueprintInfo.FileSize, blueprintInfo.BlueprintPath);
13 public static DefinitionViewData TpDefinitionViewData(this MyDefinitionBase myDefinitionBase) => new(new BitmapImage(new($"{SpaceEngineersPath.SpaceEngineerContentPath}{myDefinitionBase.Icons[0]}")), myDefinitionBase);
12 14 }
Modified SpaceEngineersBlueprintEditor/Utilities/SpaceEngineersPath.cs +2 -0
@@ -14,4 +14,6 @@ public partial class SpaceEngineersPath
14 14 private static readonly string cloudBlueprints = $@"{BlueprintsRoot}\cloud";
15 15 [AutoPath]
16 16 private static readonly string workshopBlueprints = $@"{BlueprintsRoot}\workshop\temp\Steam";
17 [AutoPath]
18 private static readonly string spaceEngineerContentPath = @"D:\SteamLibrary\steamapps\common\SpaceEngineers\Content";
17 19 }
Modified SpaceEngineersBlueprintEditor/ViewModels/GameDefinitionsViewPageViewModel.cs +37 -2
@@ -1,14 +1,49 @@
1 using SpaceEngineersBlueprintEditor.Implements.Services;
1 using CommunityToolkit.Mvvm.ComponentModel;
2 using SpaceEngineersBlueprintEditor.Implements.Services;
2 3 using SpaceEngineersBlueprintEditor.Interface.Services;
4 using SpaceEngineersBlueprintEditor.Model;
5 using SpaceEngineersBlueprintEditor.Utilities.Helpers;
6 using System.Collections.ObjectModel;
7 using VRage.Game;
3 8
4 9 namespace SpaceEngineersBlueprintEditor.ViewModels;
5 10
6 11 public partial class GameDefinitionsViewPageViewModel : ViewModelBase
7 12 {
13 [ObservableProperty]
14 private string searchText = "";
8 15 private string currentParameter = "";
16 public ObservableCollection<DefinitionViewData> Definitions { get; } = [];
9 17 public INavigationParameterService<string> NavigationParameterService { get; } = new NavigationParameterService<string>();
10 18
11 public GameDefinitionsViewPageViewModel()
19 public GameDefinitionsViewPageViewModel() => NavigationParameterService.ParameterChange += NavigationParameterService_ParameterChange;
20
21 private void NavigationParameterService_ParameterChange(object? sender, string e)
22 {
23 currentParameter = e;
24 LoadDefinitions(GetCurrentDefinitions(currentParameter));
25 }
26
27 private void LoadDefinitions(IEnumerable<MyDefinitionBase> myDefinitions)
28 {
29 foreach (var definition in myDefinitions)
30 if (definition is not null)
31 Definitions.Add(definition.TpDefinitionViewData());
32 }
33
34 private static IEnumerable<MyDefinitionBase> SearchDefinitions(string searchMode, string definitionsName) => GetCurrentDefinitions(searchMode).Where(definition => definition.DisplayNameString.Contains(definitionsName));
35
36 private static IEnumerable<MyDefinitionBase> GetCurrentDefinitions(string currentLocation) => currentLocation switch
37 {
38 "Cubes" => SpaceEngineersHelper.CubeBlockDefinitions,
39 "Components" => SpaceEngineersHelper.ComponentDefinitions,
40 "Items" => SpaceEngineersHelper.ItemDefinitions,
41 _ => throw new NotImplementedException()
42 };
43
44 partial void OnSearchTextChanged(string value)
12 45 {
46 Definitions.Clear();
47 LoadDefinitions(SearchDefinitions(currentParameter, value));
13 48 }
14 49 }
Modified SpaceEngineersBlueprintEditor/Views/AppShellPage.xaml +3 -3
@@ -58,17 +58,17 @@
58 58 <FontIcon Glyph="&#xECAA;"/>
59 59 </NavigationViewItem.Icon>
60 60 <NavigationViewItem.MenuItems>
61 <NavigationViewItem x:Uid="AppShell_ShellMenu_ViewDefinitions_CubeDefinitions" add:NavigationAddition.NavigateTo="SpaceEngineersBlueprintEditor.Views.GameDefinitionsViewPage" add:NavigationAddition.NavigateParameter="Cube">
61 <NavigationViewItem x:Uid="AppShell_ShellMenu_ViewDefinitions_CubeDefinitions" add:NavigationAddition.NavigateTo="SpaceEngineersBlueprintEditor.Views.GameDefinitionsViewPage" add:NavigationAddition.NavigateParameter="Cubes">
62 62 <NavigationViewItem.Icon>
63 63 <FontIcon Glyph="&#xF158;"/>
64 64 </NavigationViewItem.Icon>
65 65 </NavigationViewItem>
66 <NavigationViewItem x:Uid="AppShell_ShellMenu_ViewDefinitions_ComponentDefinitions" add:NavigationAddition.NavigateTo="SpaceEngineersBlueprintEditor.Views.GameDefinitionsViewPage" add:NavigationAddition.NavigateParameter="Component">
66 <NavigationViewItem x:Uid="AppShell_ShellMenu_ViewDefinitions_ComponentDefinitions" add:NavigationAddition.NavigateTo="SpaceEngineersBlueprintEditor.Views.GameDefinitionsViewPage" add:NavigationAddition.NavigateParameter="Components">
67 67 <NavigationViewItem.Icon>
68 68 <FontIcon Glyph="&#xF157;"/>
69 69 </NavigationViewItem.Icon>
70 70 </NavigationViewItem>
71 <NavigationViewItem x:Uid="AppShell_ShellMenu_ViewDefinitions_ItemDefinitions" add:NavigationAddition.NavigateTo="SpaceEngineersBlueprintEditor.Views.GameDefinitionsViewPage" add:NavigationAddition.NavigateParameter="Item">
71 <NavigationViewItem x:Uid="AppShell_ShellMenu_ViewDefinitions_ItemDefinitions" add:NavigationAddition.NavigateTo="SpaceEngineersBlueprintEditor.Views.GameDefinitionsViewPage" add:NavigationAddition.NavigateParameter="Items">
72 72 <NavigationViewItem.Icon>
73 73 <FontIcon Glyph="&#xECA5;"/>
74 74 </NavigationViewItem.Icon>
Modified SpaceEngineersBlueprintEditor/Views/GameDefinitionsViewPage.xaml +14 -3
@@ -4,11 +4,22 @@
4 4 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
5 5 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
6 6 xmlns:local="using:SpaceEngineersBlueprintEditor.Views"
7 xmlns:model="using:SpaceEngineersBlueprintEditor.Model"
7 8 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
8 9 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
9 10 mc:Ignorable="d">
10 11
11 <Grid>
12
12 <Grid ColumnDefinitions="5*, *" RowSpacing="20">
13 <GridView Canvas.ZIndex="0" ItemsSource="{x:Bind ViewModel.Definitions}">
14 <GridView.ItemTemplate>
15 <DataTemplate x:DataType="model:DefinitionViewData">
16 <Grid Width="80" Height="80" RowDefinitions="50, Auto">
17 <Image Source="{x:Bind ImageSource}" Width="50" Height="50" HorizontalAlignment="Center"/>
18 <TextBlock Grid.Row="1" TextTrimming="CharacterEllipsis" HorizontalAlignment="Center" Text="{x:Bind DefinitionBase.DisplayNameText}"/>
19 </Grid>
20 </DataTemplate>
21 </GridView.ItemTemplate>
22 </GridView>
23 <AutoSuggestBox Margin="0,0,0,20" Width="250" PlaceholderText="Search definitions..." QueryIcon="Find" Canvas.ZIndex="1" VerticalAlignment="Bottom" HorizontalAlignment="Center" Text="{x:Bind ViewModel.SearchText}"/>
13 24 </Grid>
14 </Page>
25 </Page>