mirror of
https://github.com/sampletext32/ParkanPlayground.git
synced 2026-08-15 02:57:49 +04:00
Research tree parsing and view
This commit is contained in:
@@ -61,6 +61,7 @@ public class App
|
||||
serviceCollection.AddSingleton(new VarsetViewModel());
|
||||
serviceCollection.AddSingleton(new CpDatSchemeViewModel());
|
||||
serviceCollection.AddSingleton(new MaterialViewModel());
|
||||
serviceCollection.AddSingleton(new ResearchTreeViewModel());
|
||||
|
||||
var serviceProvider = serviceCollection.BuildServiceProvider();
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ using NativeFileDialogSharp;
|
||||
using NResLib;
|
||||
using NResUI.Abstractions;
|
||||
using NResUI.Models;
|
||||
using ResTreeLib;
|
||||
using ScrLib;
|
||||
using TexmLib;
|
||||
using VarsetLib;
|
||||
@@ -20,6 +21,7 @@ namespace NResUI.ImGuiUI
|
||||
MissionTmaViewModel missionTmaViewModel,
|
||||
VarsetViewModel varsetViewModel,
|
||||
CpDatSchemeViewModel cpDatSchemeViewModel,
|
||||
ResearchTreeViewModel researchTreeViewModel,
|
||||
MessageBoxModalPanel messageBox)
|
||||
: IImGuiPanel
|
||||
{
|
||||
@@ -138,6 +140,21 @@ namespace NResUI.ImGuiUI
|
||||
}
|
||||
}
|
||||
|
||||
if (ImGui.MenuItem("Open research .trf File"))
|
||||
{
|
||||
var result = Dialog.FileOpen("trf");
|
||||
|
||||
if (result.IsOk)
|
||||
{
|
||||
var path = result.Path;
|
||||
var parseResult = ResTreeParser.Parse(path);
|
||||
|
||||
researchTreeViewModel.SetParseResult(parseResult, path);
|
||||
|
||||
Console.WriteLine("Read .trf");
|
||||
}
|
||||
}
|
||||
|
||||
if (nResExplorerViewModel.HasFile)
|
||||
{
|
||||
if (ImGui.MenuItem("Экспортировать NRes"))
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
using ImGuiNET;
|
||||
using NResUI.Abstractions;
|
||||
using NResUI.Models;
|
||||
|
||||
namespace NResUI.ImGuiUI;
|
||||
|
||||
public class ResearchTreeExplorer : IImGuiPanel
|
||||
{
|
||||
private readonly ResearchTreeViewModel _viewModel;
|
||||
|
||||
public ResearchTreeExplorer(ResearchTreeViewModel viewModel)
|
||||
{
|
||||
_viewModel = viewModel;
|
||||
}
|
||||
|
||||
public void OnImGuiRender()
|
||||
{
|
||||
if (ImGui.Begin("Research Tree Explorer (trf)"))
|
||||
{
|
||||
ImGui.Text("trf - это файл дерева исследований. Их можно найти в папке MISSIONS/SCRIPTS");
|
||||
ImGui.Separator();
|
||||
|
||||
var nodes = _viewModel.ResearchNodeDatas;
|
||||
|
||||
if (_viewModel.HasFile && nodes is not null)
|
||||
{
|
||||
if (ImGui.TreeNodeEx("Узлы"))
|
||||
{
|
||||
for (var i = 0; i < nodes.Count; i++)
|
||||
{
|
||||
var node = nodes[i];
|
||||
if (ImGui.TreeNodeEx($"{i} - \"{node.LongName}\" (\"{node.ShortName}\")"))
|
||||
{
|
||||
ImGui.Text("Состояние: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(node.State.ToString("G"));
|
||||
|
||||
ImGui.Text("ShortName: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(node.ShortName);
|
||||
|
||||
ImGui.Text("LongName: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(node.LongName);
|
||||
|
||||
ImGui.Text("HelpText: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(node.HelpText);
|
||||
|
||||
ImGui.Text("Description: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(node.Description);
|
||||
|
||||
ImGui.Text("Тип турели: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(node.Node.TurretType.ToString());
|
||||
|
||||
ImGui.Text("Основной тип: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(node.Node.MainType.ToString());
|
||||
|
||||
ImGui.Text("Подтип: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(node.Node.SubType.ToString());
|
||||
|
||||
ImGui.Text("Подтип строения: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(node.Node.BuildSubSystem.ToString());
|
||||
|
||||
ImGui.Text("Размер типа: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(node.Node.SizeOfType.ToString());
|
||||
|
||||
ImGui.Text("Уровень апгрейда: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(node.Node.UpgradeLevel.ToString());
|
||||
|
||||
ImGui.Text("Условия: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(string.Join(", ", node.PrerequisiteIds));
|
||||
|
||||
ImGui.Text("Открывает: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(string.Join(", ", node.UnlockIds));
|
||||
|
||||
ImGui.TreePop();
|
||||
}
|
||||
}
|
||||
|
||||
ImGui.TreePop();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui.Text("trf не открыт");
|
||||
}
|
||||
|
||||
ImGui.End();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using ResTreeLib;
|
||||
|
||||
namespace NResUI.Models;
|
||||
|
||||
public class ResearchTreeViewModel
|
||||
{
|
||||
public bool HasFile { get; set; }
|
||||
public string? Error { get; set; }
|
||||
|
||||
public List<ResearchNodeData>? ResearchNodeDatas { get; set; }
|
||||
|
||||
public string? Path { get; set; }
|
||||
|
||||
public void SetParseResult(List<ResearchNodeData> researchNodeDatas, string path)
|
||||
{
|
||||
ResearchNodeDatas = researchNodeDatas;
|
||||
HasFile = true;
|
||||
Path = path;
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@
|
||||
<ProjectReference Include="..\CpDatLib\CpDatLib.csproj" />
|
||||
<ProjectReference Include="..\MissionTmaLib\MissionTmaLib.csproj" />
|
||||
<ProjectReference Include="..\NResLib\NResLib.csproj" />
|
||||
<ProjectReference Include="..\ResTreeLib\ResTreeLib.csproj" />
|
||||
<ProjectReference Include="..\ScrLib\ScrLib.csproj" />
|
||||
<ProjectReference Include="..\TexmLib\TexmLib.csproj" />
|
||||
<ProjectReference Include="..\VarsetLib\VarsetLib.csproj" />
|
||||
|
||||
Reference in New Issue
Block a user