0
mirror of https://github.com/sampletext32/ParkanPlayground.git synced 2025-05-18 11:21:18 +03:00

148 lines
4.8 KiB
C#
Raw Normal View History

2024-11-15 19:06:44 +03:00
using System.Numerics;
using ImGuiNET;
2025-02-24 23:35:55 +03:00
using MissionTmaLib;
using MissionTmaLib.Parsing;
2024-11-15 19:06:44 +03:00
using NativeFileDialogSharp;
using NResLib;
using NResUI.Abstractions;
using NResUI.Models;
2025-02-26 04:27:16 +03:00
using ScrLib;
2024-11-18 23:48:42 +03:00
using TexmLib;
2025-03-01 23:03:13 +03:00
using VarsetLib;
2024-11-15 19:06:44 +03:00
namespace NResUI.ImGuiUI
{
2025-02-26 04:27:16 +03:00
public class MainMenuBar(
NResExplorerViewModel nResExplorerViewModel,
TexmExplorerViewModel texmExplorerViewModel,
ScrViewModel scrViewModel,
MissionTmaViewModel missionTmaViewModel,
2025-03-01 23:03:13 +03:00
VarsetViewModel varsetViewModel,
2025-02-26 04:27:16 +03:00
MessageBoxModalPanel messageBox)
: IImGuiPanel
2024-11-15 19:06:44 +03:00
{
public void OnImGuiRender()
{
if (ImGui.BeginMenuBar())
{
if (ImGui.BeginMenu("File"))
{
if (ImGui.MenuItem("Open NRes"))
{
var result = Dialog.FileOpen();
if (result.IsOk)
{
var path = result.Path;
var parseResult = NResParser.ReadFile(path);
2025-02-26 04:27:16 +03:00
nResExplorerViewModel.SetParseResult(parseResult, path);
2024-11-18 23:48:42 +03:00
Console.WriteLine("Read NRES");
2024-11-15 19:06:44 +03:00
}
}
2024-11-18 23:48:42 +03:00
if (ImGui.MenuItem("Open TEXM"))
{
var result = Dialog.FileOpen();
if (result.IsOk)
{
var path = result.Path;
using var fs = new FileStream(path, FileMode.Open);
2025-02-26 04:27:16 +03:00
2024-11-18 23:48:42 +03:00
var parseResult = TexmParser.ReadFromStream(fs, path);
2025-02-26 04:27:16 +03:00
texmExplorerViewModel.SetParseResult(parseResult, path);
2024-11-18 23:48:42 +03:00
Console.WriteLine("Read TEXM");
}
}
if (ImGui.MenuItem("Open TFNT TEXM"))
{
var result = Dialog.FileOpen();
if (result.IsOk)
{
var path = result.Path;
using var fs = new FileStream(path, FileMode.Open);
fs.Seek(4116, SeekOrigin.Begin);
2025-02-26 04:27:16 +03:00
var parseResult = TexmParser.ReadFromStream(fs, path);
2025-02-26 04:27:16 +03:00
texmExplorerViewModel.SetParseResult(parseResult, path);
Console.WriteLine("Read TFNT TEXM");
}
}
if (ImGui.MenuItem("Open Mission TMA"))
{
var result = Dialog.FileOpen("tma");
if (result.IsOk)
{
var path = result.Path;
var parseResult = MissionTmaParser.ReadFile(path);
2025-02-26 04:27:16 +03:00
missionTmaViewModel.SetParseResult(parseResult, path);
Console.WriteLine("Read TMA");
}
}
if (ImGui.MenuItem("Open SCR Scripts File"))
{
var result = Dialog.FileOpen("scr");
if (result.IsOk)
{
var path = result.Path;
var parseResult = ScrParser.ReadFile(path);
scrViewModel.SetParseResult(parseResult, path);
Console.WriteLine("Read SCR");
}
}
2025-03-01 23:03:13 +03:00
if (ImGui.MenuItem("Open Varset File"))
{
var result = Dialog.FileOpen("var");
if (result.IsOk)
{
var path = result.Path;
var parseResult = VarsetParser.Parse(path);
varsetViewModel.Items = parseResult;
Console.WriteLine("Read VARSET");
}
}
2025-02-26 04:27:16 +03:00
if (nResExplorerViewModel.HasFile)
2024-11-15 19:06:44 +03:00
{
if (ImGui.MenuItem("Экспортировать NRes"))
2024-11-15 19:06:44 +03:00
{
var result = Dialog.FolderPicker();
if (result.IsOk)
{
var path = result.Path;
2025-02-26 04:27:16 +03:00
NResExporter.Export(nResExplorerViewModel.Archive!, path, nResExplorerViewModel.Path!);
messageBox.Show("Успешно экспортировано");
2024-11-15 19:06:44 +03:00
}
}
}
ImGui.EndMenu();
}
ImGui.EndMenuBar();
}
}
}
}