返回提交历史
Added
SpaceEngineersBlueprintEditor.BlueprintConverter/Program.cs
+44
-0
Added
SpaceEngineersBlueprintEditor.BlueprintConverter/SpaceEngineersBlueprintEditor.BlueprintConverter.csproj
+115
-0
Modified
SpaceEngineersBlueprintEditor.SpaceEngineersCore/InnerModel/VRageSystemImpl.cs
+1
-0
Modified
SpaceEngineersBlueprintEditor.SpaceEngineersCore/SpaceEngineerDefinitions.cs
+12
-0
Modified
SpaceEngineersBlueprintEditor.SpaceEngineersCore/SpaceEngineersBlueprintEditor.SpaceEngineersCore.csproj
+2
-1
Modified
SpaceEngineersBlueprintEditor.Test/Program.cs
+30
-2
Modified
SpaceEngineersBlueprintEditor.Test/SpaceEngineersBlueprintEditor.Test.csproj
+3
-1
Modified
SpaceEngineersBlueprintEditor.sln
+19
-0
Modified
SpaceEngineersBlueprintEditor/SpaceEngineersBlueprintEditor.csproj
+2
-1
SpaceEngineersModDev/SpaceEngineersBlueprintEditorInWinUI
添加蓝图转换器
252b44c
代码差异
9 个文件
+228
-5
@@ -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
}
@@ -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>
@@ -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
}
@@ -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
}
@@ -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>
@@ -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
}
@@ -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>
@@ -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
@@ -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>