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

SpaceEngineersModDev/SpaceEngineersBlueprintEditorInWinUI

添加蓝图转换器

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

代码差异

9 个文件 +228 -5
Added SpaceEngineersBlueprintEditor.BlueprintConverter/Program.cs +44 -0
@@ -0,0 +1,44 @@
1 using Newtonsoft.Json;
2 using System.Xml.Serialization;
3 using VRage.Game;
4
5 public class Program
6 {
7 private static void Main(string[] args)
8 {
9 foreach (var arg in args)
10 {
11 Console.Write($"Info:开始转换文件:{arg}...");
12 try
13 {
14 if (File.Exists(arg))
15 {
16 if (JsonConvert.DeserializeObject<MyObjectBuilder_Definitions>(File.ReadAllText(arg), new JsonSerializerSettings
17 {
18 TypeNameHandling = TypeNameHandling.Auto
19 }) is MyObjectBuilder_Definitions myObjectBuilder_Definitions)
20 {
21 using var stream = new MemoryStream();
22 var serializer = new XmlSerializer(typeof(MyObjectBuilder_Definitions));
23 serializer.Serialize(stream, myObjectBuilder_Definitions);
24 stream.Position = 0;
25 File.WriteAllText($"{arg}.sbc", new StreamReader(stream).ReadToEnd());
26 Console.Write($"Success:转换完成:{Path.GetFileName(arg)}");
27 }
28 else
29 {
30 Console.Write($"Error:文件:{arg} 序列化失败!");
31 }
32 }
33 else
34 {
35 Console.Write($"Error:文件:{arg} 不存在!");
36 }
37 }
38 catch (Exception ex)
39 {
40 Console.Write($"Error:{ex.Message}");
41 }
42 }
43 }
44 }
Added SpaceEngineersBlueprintEditor.BlueprintConverter/SpaceEngineersBlueprintEditor.BlueprintConverter.csproj +115 -0
@@ -0,0 +1,115 @@
1 <Project Sdk="Microsoft.NET.Sdk">
2
3 <PropertyGroup>
4 <OutputType>Exe</OutputType>
5 <TargetFramework>net48</TargetFramework>
6 <LangVersion>latest</LangVersion>
7 <ImplicitUsings>enable</ImplicitUsings>
8 <Nullable>enable</Nullable>
9 </PropertyGroup>
10
11 <ItemGroup>
12 <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
13 </ItemGroup>
14
15 <ItemGroup>
16 <ProjectReference Include="..\SpaceEngineersBlueprintEditor.SpaceEngineersCore\SpaceEngineersBlueprintEditor.SpaceEngineersCore.csproj" />
17 </ItemGroup>
18
19 <ItemGroup>
20 <Reference Include="EmptyKeys.UserInterface">
21 <HintPath>..\DLLReference\EmptyKeys.UserInterface.dll</HintPath>
22 </Reference>
23 <Reference Include="EmptyKeys.UserInterface.Core">
24 <HintPath>..\DLLReference\EmptyKeys.UserInterface.Core.dll</HintPath>
25 </Reference>
26 <Reference Include="HavokWrapper">
27 <HintPath>..\DLLReference\HavokWrapper.dll</HintPath>
28 </Reference>
29 <Reference Include="log4net">
30 <HintPath>..\DLLReference\log4net.dll</HintPath>
31 </Reference>
32 <Reference Include="ProtoBuf.Net">
33 <HintPath>..\DLLReference\ProtoBuf.Net.dll</HintPath>
34 </Reference>
35 <Reference Include="ProtoBuf.Net.Core">
36 <HintPath>..\DLLReference\ProtoBuf.Net.Core.dll</HintPath>
37 </Reference>
38 <Reference Include="Sandbox.Common">
39 <HintPath>..\DLLReference\Sandbox.Common.dll</HintPath>
40 </Reference>
41 <Reference Include="Sandbox.Game">
42 <HintPath>..\DLLReference\Sandbox.Game.dll</HintPath>
43 </Reference>
44 <Reference Include="Sandbox.Game.XmlSerializers">
45 <HintPath>..\DLLReference\Sandbox.Game.XmlSerializers.dll</HintPath>
46 </Reference>
47 <Reference Include="Sandbox.Graphics">
48 <HintPath>..\DLLReference\Sandbox.Graphics.dll</HintPath>
49 </Reference>
50 <Reference Include="Sandbox.RenderDirect">
51 <HintPath>..\DLLReference\Sandbox.RenderDirect.dll</HintPath>
52 </Reference>
53 <Reference Include="SpaceEngineers.Game">
54 <HintPath>..\DLLReference\SpaceEngineers.Game.dll</HintPath>
55 </Reference>
56 <Reference Include="SpaceEngineers.ObjectBuilders">
57 <HintPath>..\DLLReference\SpaceEngineers.ObjectBuilders.dll</HintPath>
58 </Reference>
59 <Reference Include="SpaceEngineers.ObjectBuilders.XmlSerializers">
60 <HintPath>..\DLLReference\SpaceEngineers.ObjectBuilders.XmlSerializers.dll</HintPath>
61 </Reference>
62 <Reference Include="Steamworks.NET">
63 <HintPath>..\DLLReference\Steamworks.NET.dll</HintPath>
64 </Reference>
65 <Reference Include="VRage">
66 <HintPath>..\DLLReference\VRage.dll</HintPath>
67 </Reference>
68 <Reference Include="VRage.Ansel">
69 <HintPath>..\DLLReference\VRage.Ansel.dll</HintPath>
70 </Reference>
71 <Reference Include="VRage.Audio">
72 <HintPath>..\DLLReference\VRage.Audio.dll</HintPath>
73 </Reference>
74 <Reference Include="VRage.Game">
75 <HintPath>..\DLLReference\VRage.Game.dll</HintPath>
76 </Reference>
77 <Reference Include="VRage.Game.XmlSerializers">
78 <HintPath>..\DLLReference\VRage.Game.XmlSerializers.dll</HintPath>
79 </Reference>
80 <Reference Include="VRage.Input">
81 <HintPath>..\DLLReference\VRage.Input.dll</HintPath>
82 </Reference>
83 <Reference Include="VRage.Library">
84 <HintPath>..\DLLReference\VRage.Library.dll</HintPath>
85 </Reference>
86 <Reference Include="VRage.Math">
87 <HintPath>..\DLLReference\VRage.Math.dll</HintPath>
88 </Reference>
89 <Reference Include="VRage.Math.XmlSerializers">
90 <HintPath>..\DLLReference\VRage.Math.XmlSerializers.dll</HintPath>
91 </Reference>
92 <Reference Include="VRage.NativeWrapper">
93 <HintPath>..\DLLReference\VRage.NativeWrapper.dll</HintPath>
94 </Reference>
95 <Reference Include="VRage.Network">
96 <HintPath>..\DLLReference\VRage.Network.dll</HintPath>
97 </Reference>
98 <Reference Include="VRage.Render">
99 <HintPath>..\DLLReference\VRage.Render.dll</HintPath>
100 </Reference>
101 <Reference Include="VRage.Render11">
102 <HintPath>..\DLLReference\VRage.Render11.dll</HintPath>
103 </Reference>
104 <Reference Include="VRage.Scripting">
105 <HintPath>..\DLLReference\VRage.Scripting.dll</HintPath>
106 </Reference>
107 <Reference Include="VRage.Steam">
108 <HintPath>..\DLLReference\VRage.Steam.dll</HintPath>
109 </Reference>
110 <Reference Include="VRage.XmlSerializers">
111 <HintPath>..\DLLReference\VRage.XmlSerializers.dll</HintPath>
112 </Reference>
113 </ItemGroup>
114
115 </Project>
Modified SpaceEngineersBlueprintEditor.SpaceEngineersCore/InnerModel/VRageSystemImpl.cs +1 -0
@@ -377,5 +377,6 @@ internal class VRageSystemImpl : IVRageSystem
377 377 return null;
378 378 }
379 379
380
380 381 private ValueTuple<string, uint, uint> m_cpuInfo;
381 382 }
Modified SpaceEngineersBlueprintEditor.SpaceEngineersCore/SpaceEngineerDefinitions.cs +12 -0
@@ -10,4 +10,16 @@ public class SpaceEngineerDefinitions
10 10 MyObjectBuilderSerializerKeen.DeserializeXML(path, out T objectBuilder);
11 11 return objectBuilder;
12 12 }
13
14 public static string Serialize<T>(MyObjectBuilder_Base item) where T : MyObjectBuilder_Base
15 {
16 using var outStream = new MemoryStream();
17 if (MyObjectBuilderSerializerKeen.SerializeXML(outStream, item))
18 {
19 outStream.Position = 0;
20 var streamReader = new StreamReader(outStream);
21 return streamReader.ReadToEnd();
22 }
23 return string.Empty;
24 }
13 25 }
Modified SpaceEngineersBlueprintEditor.SpaceEngineersCore/SpaceEngineersBlueprintEditor.SpaceEngineersCore.csproj +2 -1
@@ -2,7 +2,8 @@
2 2
3 3 <PropertyGroup>
4 4 <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
5 <TargetFramework>net8.0</TargetFramework>
5 <TargetFramework>net48</TargetFramework>
6 <LangVersion>latest</LangVersion>
6 7 <ImplicitUsings>enable</ImplicitUsings>
7 8 <Nullable>enable</Nullable>
8 9 </PropertyGroup>
Modified SpaceEngineersBlueprintEditor.Test/Program.cs +30 -2
@@ -1,5 +1,7 @@
1 using Sandbox.Definitions;
1 using Newtonsoft.Json;
2 2 using SpaceEngineersBlueprintEditor.SpaceEngineersCore;
3 using System.Diagnostics;
4 using VRage.Game;
3 5
4 6 namespace SpaceEngineersBlueprintEditor.Test;
5 7
@@ -9,6 +11,32 @@ internal class Program
9 11 public static void TestMethod()
10 12 {
11 13 Initializer.Initialize();
12 var result = MyDefinitionManager.Static.GetAllDefinitions();
14 var blueprint = SpaceEngineerDefinitions.Load<MyObjectBuilder_Definitions>(@"C:\Users\XFEstudio\AppData\Roaming\SpaceEngineers\Blueprints\local\寰宇号(大型武装殖民飞船)[Infinity Edition] V6_8_6\bp.sbc");
15 var process = new Process();
16 process.StartInfo.FileName = @"C:\Users\XFEstudio\Desktop\work\C#\GitHub\XFEstudio\SpaceEngineersBlueprintEditor\SpaceEngineersBlueprintEditor.BlueprintConverter\bin\Debug\net48\SpaceEngineersBlueprintEditor.BlueprintConverter.exe";
17 var jsonString = JsonConvert.SerializeObject(blueprint, new JsonSerializerSettings
18 {
19 TypeNameHandling = TypeNameHandling.Auto
20 });
21 File.WriteAllText("TestJson", jsonString);
22 process.StartInfo.RedirectStandardInput = true;
23 process.StartInfo.RedirectStandardOutput = true;
24 process.StartInfo.RedirectStandardError = true;
25 process.StartInfo.ArgumentList.Add("TestJson");
26 process.StartInfo.UseShellExecute = false;
27 process.StartInfo.CreateNoWindow = false;
28 process.Start();
29 do
30 {
31 try
32 {
33 Console.Write((char)process.StandardOutput.Read());
34 }
35 catch (Exception ex)
36 {
37 Console.WriteLine(ex.ToString());
38 }
39 }
40 while (!process.HasExited);
13 41 }
14 42 }
Modified SpaceEngineersBlueprintEditor.Test/SpaceEngineersBlueprintEditor.Test.csproj +3 -1
@@ -8,8 +8,10 @@
8 8 </PropertyGroup>
9 9
10 10 <ItemGroup>
11 <PackageReference Include="XFEExtension.NetCore" Version="3.1.4" />
11 <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
12 <PackageReference Include="XFEExtension.NetCore" Version="3.2.0" />
12 13 <PackageReference Include="XFEExtension.NetCore.XUnit" Version="2.0.4" />
14 <PackageReference Include="System.Configuration.ConfigurationManager" Version="9.0.0" />
13 15 </ItemGroup>
14 16
15 17 <ItemGroup>
Modified SpaceEngineersBlueprintEditor.sln +19 -0
@@ -14,8 +14,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpaceEngineersBlueprintEdit
14 14 ProjectSection(ProjectDependencies) = postProject
15 15 {049E595C-0B3F-4586-A897-F480C611A95E} = {049E595C-0B3F-4586-A897-F480C611A95E}
16 16 {23F2F2BB-4AE7-4DEE-AF7D-CFF1470D5F3E} = {23F2F2BB-4AE7-4DEE-AF7D-CFF1470D5F3E}
17 {FDAC0E77-51B3-4B0D-876C-55488B8AF503} = {FDAC0E77-51B3-4B0D-876C-55488B8AF503}
17 18 EndProjectSection
18 19 EndProject
20 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpaceEngineersBlueprintEditor.BlueprintConverter", "SpaceEngineersBlueprintEditor.BlueprintConverter\SpaceEngineersBlueprintEditor.BlueprintConverter.csproj", "{FDAC0E77-51B3-4B0D-876C-55488B8AF503}"
21 EndProject
19 22 Global
20 23 GlobalSection(SolutionConfigurationPlatforms) = preSolution
21 24 Debug|Any CPU = Debug|Any CPU
@@ -84,6 +87,22 @@ Global
84 87 {74296AA0-AEBE-4139-9B23-4ACAF07F7101}.Release|x64.Build.0 = Release|Any CPU
85 88 {74296AA0-AEBE-4139-9B23-4ACAF07F7101}.Release|x86.ActiveCfg = Release|Any CPU
86 89 {74296AA0-AEBE-4139-9B23-4ACAF07F7101}.Release|x86.Build.0 = Release|Any CPU
90 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
91 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Debug|Any CPU.Build.0 = Debug|Any CPU
92 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Debug|ARM64.ActiveCfg = Debug|Any CPU
93 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Debug|ARM64.Build.0 = Debug|Any CPU
94 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Debug|x64.ActiveCfg = Debug|Any CPU
95 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Debug|x64.Build.0 = Debug|Any CPU
96 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Debug|x86.ActiveCfg = Debug|Any CPU
97 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Debug|x86.Build.0 = Debug|Any CPU
98 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Release|Any CPU.ActiveCfg = Release|Any CPU
99 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Release|Any CPU.Build.0 = Release|Any CPU
100 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Release|ARM64.ActiveCfg = Release|Any CPU
101 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Release|ARM64.Build.0 = Release|Any CPU
102 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Release|x64.ActiveCfg = Release|Any CPU
103 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Release|x64.Build.0 = Release|Any CPU
104 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Release|x86.ActiveCfg = Release|Any CPU
105 {FDAC0E77-51B3-4B0D-876C-55488B8AF503}.Release|x86.Build.0 = Release|Any CPU
87 106 EndGlobalSection
88 107 GlobalSection(SolutionProperties) = preSolution
89 108 HideSolutionNode = FALSE
Modified SpaceEngineersBlueprintEditor/SpaceEngineersBlueprintEditor.csproj +2 -1
@@ -16,6 +16,8 @@
16 16 <!--<WindowsPackageType>None</WindowsPackageType>-->
17 17 <!--<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>-->
18 18 <WindowsSdkPackageVersion>10.0.22621.38</WindowsSdkPackageVersion>
19 <ImplicitUsings>enable</ImplicitUsings>
20 <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
19 21 </PropertyGroup>
20 22 <ItemGroup>
21 23 <Page Remove="Styles\Thickness.xaml" />
@@ -200,6 +202,5 @@
200 202 <PublishReadyToRun Condition="'$(Configuration)' != 'Debug'">True</PublishReadyToRun>
201 203 <PublishTrimmed Condition="'$(Configuration)' == 'Debug'">False</PublishTrimmed>
202 204 <PublishTrimmed Condition="'$(Configuration)' != 'Debug'">True</PublishTrimmed>
203 <ImplicitUsings>enable</ImplicitUsings>
204 205 </PropertyGroup>
205 206 </Project>