From ba7c2afe2ad23c404b63fe49447d4b20954c4159 Mon Sep 17 00:00:00 2001 From: bird_egop Date: Mon, 24 Feb 2025 23:35:55 +0300 Subject: [PATCH] unknown fixes --- MissionTmaLib/GameObjectInfo.cs | 2 +- MissionTmaLib/Parsing/MissionTma.cs | 3 +++ MissionTmaLib/Parsing/MissionTmaParser.cs | 10 ++++++---- NResUI/ImGuiUI/MainMenuBar.cs | 10 ++++++++++ NResUI/ImGuiUI/MissionTmaExplorer.cs | 4 ++-- 5 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 MissionTmaLib/Parsing/MissionTma.cs diff --git a/MissionTmaLib/GameObjectInfo.cs b/MissionTmaLib/GameObjectInfo.cs index 100146f..35f1161 100644 --- a/MissionTmaLib/GameObjectInfo.cs +++ b/MissionTmaLib/GameObjectInfo.cs @@ -22,7 +22,7 @@ public class GameObjectInfo /// public int OwningClanIndex { get; set; } - public int UnknownInt3 { get; set; } + public int Order { get; set; } public Vector3 Position { get; set; } public Vector3 Rotation { get; set; } diff --git a/MissionTmaLib/Parsing/MissionTma.cs b/MissionTmaLib/Parsing/MissionTma.cs new file mode 100644 index 0000000..2da0703 --- /dev/null +++ b/MissionTmaLib/Parsing/MissionTma.cs @@ -0,0 +1,3 @@ +namespace MissionTmaLib.Parsing; + +public record MissionTma(ArealsFileData ArealData, ClansFileData ClansData, GameObjectsFileData GameObjectsData); \ No newline at end of file diff --git a/MissionTmaLib/Parsing/MissionTmaParser.cs b/MissionTmaLib/Parsing/MissionTmaParser.cs index 300d1a6..fef65c7 100644 --- a/MissionTmaLib/Parsing/MissionTmaParser.cs +++ b/MissionTmaLib/Parsing/MissionTmaParser.cs @@ -185,7 +185,11 @@ public class MissionTmaParser if (3 < gameObjectsFeatureSet) { - gameObjectInfo.UnknownInt3 = fileStream.ReadInt32LittleEndian(); + gameObjectInfo.Order = fileStream.ReadInt32LittleEndian(); + if (gameObjectInfo.Type == GameObjectType.Building) + { + gameObjectInfo.Order += int.MaxValue; + } } // читает 12 байт @@ -378,6 +382,4 @@ public class MissionTmaParser lodeData ); } -} - -public record MissionTma(ArealsFileData ArealData, ClansFileData ClansData, GameObjectsFileData GameObjectsData); \ No newline at end of file +} \ No newline at end of file diff --git a/NResUI/ImGuiUI/MainMenuBar.cs b/NResUI/ImGuiUI/MainMenuBar.cs index af05b1e..3025482 100644 --- a/NResUI/ImGuiUI/MainMenuBar.cs +++ b/NResUI/ImGuiUI/MainMenuBar.cs @@ -1,5 +1,6 @@ using System.Numerics; using ImGuiNET; +using MissionTmaLib; using MissionTmaLib.Parsing; using NativeFileDialogSharp; using NResLib; @@ -91,6 +92,15 @@ namespace NResUI.ImGuiUI var parseResult = MissionTmaParser.ReadFile(path); _missionTmaViewModel.SetParseResult(parseResult, path); + + var orderedBuildings = parseResult.Mission.GameObjectsData.GameObjectInfos.Where(x => x.Type == GameObjectType.Building) + .OrderBy(x => x.Order) + .ToList(); + + foreach (var gameObjectInfo in orderedBuildings) + { + Console.WriteLine($"{gameObjectInfo.Order} : {gameObjectInfo.DatString}"); + } } } diff --git a/NResUI/ImGuiUI/MissionTmaExplorer.cs b/NResUI/ImGuiUI/MissionTmaExplorer.cs index bcdfcb4..f4848ec 100644 --- a/NResUI/ImGuiUI/MissionTmaExplorer.cs +++ b/NResUI/ImGuiUI/MissionTmaExplorer.cs @@ -254,9 +254,9 @@ public class MissionTmaExplorer : IImGuiPanel ImGui.SameLine(); ImGui.Text(gameObjectInfo.OwningClanIndex.ToString()); - ImGui.Text("Неизвестное число 3: "); + ImGui.Text("Порядковый номер: "); ImGui.SameLine(); - ImGui.Text(gameObjectInfo.UnknownInt3.ToString()); + ImGui.Text(gameObjectInfo.Order.ToString()); ImGui.Text("Вектор позиции: "); ImGui.SameLine();