返回提交历史
Modified
SpaceEngineersBlueprintEditor.SpaceEngineersCore/Initializer.cs
+7
-2
Modified
SpaceEngineersBlueprintEditor/App.xaml.cs
+1
-1
Added
SpaceEngineersBlueprintEditor/Model/DefinitionViewData.cs
+10
-0
Modified
SpaceEngineersBlueprintEditor/Utilities/Helpers/Extensions.cs
+2
-0
Modified
SpaceEngineersBlueprintEditor/Utilities/SpaceEngineersPath.cs
+2
-0
Modified
SpaceEngineersBlueprintEditor/ViewModels/GameDefinitionsViewPageViewModel.cs
+37
-2
Modified
SpaceEngineersBlueprintEditor/Views/AppShellPage.xaml
+3
-3
Modified
SpaceEngineersBlueprintEditor/Views/GameDefinitionsViewPage.xaml
+14
-3
SpaceEngineersModDev/SpaceEngineersBlueprintEditorInWinUI
add-添加游戏定义集的本地化语言加载器
d8127c0
代码差异
8 个文件
+76
-11
@@ -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
@@ -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)
@@ -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
}
@@ -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
}
@@ -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
}
@@ -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
}
@@ -58,17 +58,17 @@
58
58
<FontIcon Glyph=""/>
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=""/>
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=""/>
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=""/>
74
74
</NavigationViewItem.Icon>
@@ -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>