0
mirror of https://github.com/sampletext32/ParkanPlayground.git synced 2025-06-20 00:18:02 +03:00

add varset view

This commit is contained in:
bird_egop
2025-03-01 23:03:13 +03:00
parent 76ef68635e
commit 135777a4c6
11 changed files with 195 additions and 58 deletions

View File

@ -9,6 +9,8 @@
<ItemGroup>
<ProjectReference Include="..\NResLib\NResLib.csproj" />
<ProjectReference Include="..\ScrLib\ScrLib.csproj" />
<ProjectReference Include="..\VarsetLib\VarsetLib.csproj" />
</ItemGroup>
</Project>

View File

@ -1,64 +1,29 @@
using System.Buffers.Binary;
using System.Text;
using NResLib;
using ParkanPlayground;
using VarsetLib;
// var path = "C:\\Program Files (x86)\\Nikita\\Iron Strategy\\MISSIONS\\SCRIPTS\\default.scr";
// var path = "C:\\Program Files (x86)\\Nikita\\Iron Strategy\\MISSIONS\\SCRIPTS\\scr_pl_1.scr";
// var path = "C:\\Program Files (x86)\\Nikita\\Iron Strategy\\MISSIONS\\SCRIPTS\\scream.scr";
var path = "C:\\Program Files (x86)\\Nikita\\Iron Strategy\\MISSIONS\\SCRIPTS\\scream1.scr";
// var path = "C:\\Program Files (x86)\\Nikita\\Iron Strategy\\MISSIONS\\SCRIPTS\\scream1.scr";
// var path = "C:\\Program Files (x86)\\Nikita\\Iron Strategy\\MISSIONS\\SCRIPTS";
var path = "C:\\Program Files (x86)\\Nikita\\Iron Strategy\\MISSIONS\\SCRIPTS\\varset.var";
// var path = "C:\\Program Files (x86)\\Nikita\\Iron Strategy\\preload.lda";
//
// var fs = new FileStream(path, FileMode.Open);
//
// var count = fs.ReadInt32LittleEndian();
//
// Span<byte> data = stackalloc byte[0x124];
//
// for (var i = 0; i < count; i++)
// {
// fs.ReadExactly(data);
// }
//
// Console.WriteLine(
// fs.Position == fs.Length
// );
using var fs = new FileStream(path, FileMode.Open);
var items = VarsetParser.Parse(path);
// тут всегда число 59 (0x3b) - это число известных игре скриптов
var magic = fs.ReadInt32LittleEndian();
Console.WriteLine($"Count: {magic}");
var entryCount = fs.ReadInt32LittleEndian();
Console.WriteLine($"EntryCount: {entryCount}");
for (var i = 0; i < entryCount; i++)
{
Console.WriteLine($"Entry: {i}");
var str = fs.ReadLengthPrefixedString();
Console.WriteLine($"\tStr: {str}");
// тут игра дополнительно вычитывает ещё 1 байт, видимо как \0 для char*
fs.ReadByte();
var index = fs.ReadInt32LittleEndian();
Console.WriteLine($"\tIndex: {index}");
var innerCount = fs.ReadInt32LittleEndian();
Console.WriteLine($"\tInnerCount: {innerCount}");
for (var i1 = 0; i1 < innerCount; i1++)
{
var scriptIndex = fs.ReadInt32LittleEndian();
var unkInner2 = fs.ReadInt32LittleEndian();
var unkInner3 = fs.ReadInt32LittleEndian();
var unkInner4 = fs.ReadInt32LittleEndian();
var unkInner5 = fs.ReadInt32LittleEndian();
Console.WriteLine($"\t\tScriptIndex: {scriptIndex}");
Console.WriteLine($"\t\tUnkInner2: {unkInner2}");
Console.WriteLine($"\t\tUnkInner3: {unkInner3}");
Console.WriteLine($"\t\tUnkInner4: {unkInner4}");
Console.WriteLine($"\t\tUnkInner5: {unkInner5}");
var scriptArgumentsCount = fs.ReadInt32LittleEndian();
Console.WriteLine($"\t\tScript Arguments Count: {scriptArgumentsCount}");
for (var i2 = 0; i2 < scriptArgumentsCount; i2++)
{
var scriptArgument = fs.ReadInt32LittleEndian();
Console.WriteLine($"\t\t\t{scriptArgument}");
}
var unkInner7 = fs.ReadInt32LittleEndian();
Console.WriteLine($"\t\tUnkInner7 {unkInner7}");
Console.WriteLine("---");
}
}
Console.WriteLine(items.Count);