mirror of
https://github.com/sampletext32/ParkanPlayground.git
synced 2026-08-15 02:57:49 +04:00
vibecoded inspector
This commit is contained in:
@@ -1,13 +1,16 @@
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using Common;
|
||||
using ControlLib;
|
||||
using MshLib;
|
||||
using NResLib;
|
||||
using WeaLib;
|
||||
|
||||
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
|
||||
//
|
||||
var ctl = ControlResourceReader.ReadCtlFile("E:\\ParkanUnpacked\\bases.rlb\\2_CTLD_r_l_03.ctl");
|
||||
var cpt = ControlResourceReader.ReadCptFile("E:\\ParkanUnpacked\\bases.rlb\\18_CTPT_R_L_03.CPT");
|
||||
var ndp = ControlResourceReader.ReadNdpFile("E:\\ParkanUnpacked\\bases.rlb\\14_NDPR_r_l_03.ndp");
|
||||
// var ctl = ControlResourceReader.ReadCtlFile("E:\\ParkanUnpacked\\bases.rlb\\2_CTLD_r_l_03.ctl");
|
||||
// var cpt = ControlResourceReader.ReadCptFile("E:\\ParkanUnpacked\\bases.rlb\\18_CTPT_R_L_03.CPT");
|
||||
// var ndp = ControlResourceReader.ReadNdpFile("E:\\ParkanUnpacked\\bases.rlb\\14_NDPR_r_l_03.ndp");
|
||||
|
||||
// var ctl = ControlResourceReader.ReadCtlFile("E:\\ParkanUnpacked\\turrets.rlb\\30_CTLD_o_tur_lt_02.ctl");
|
||||
// var cpt = ControlResourceReader.ReadCptFile("E:\\ParkanUnpacked\\turrets.rlb\\162_CTPT_o_tur_lt_02.cpt");
|
||||
@@ -17,7 +20,72 @@ var ndp = ControlResourceReader.ReadNdpFile("E:\\ParkanUnpacked\\bases.rlb\\14_N
|
||||
// var cpt = ControlResourceReader.ReadCptFile("E:\\ParkanUnpacked\\guns.rlb\\364_CTPT_o_gun_la_01.cpt");
|
||||
// var ndp = ControlResourceReader.ReadNdpFile("E:\\ParkanUnpacked\\guns.rlb\\309_NDPR_o_gun_la_01.ndp");
|
||||
|
||||
ControlResourceDump.DumpAll(ctl, cpt, ndp, Console.Out);
|
||||
// ControlResourceDump.DumpAll(ctl, cpt, ndp, Console.Out);
|
||||
|
||||
List<string> allNres =
|
||||
[
|
||||
"animals.rlb",
|
||||
"bases.rlb",
|
||||
"behpsp.res",
|
||||
"effects.rlb",
|
||||
"fortif.rlb",
|
||||
// "gamefont.rlb", // NL
|
||||
"guns.rlb",
|
||||
"intsys.rlb",
|
||||
"lightmap.lib",
|
||||
"Material.lib",
|
||||
"objects.dlb",
|
||||
"objects.rlb",
|
||||
"Palettes.lib",
|
||||
"parts.rlb",
|
||||
"static.rlb",
|
||||
"sys.lib",
|
||||
"system.rlb",
|
||||
"Textures.lib",
|
||||
"turrets.rlb",
|
||||
"voices.lib",
|
||||
"weapon.rlb"
|
||||
];
|
||||
|
||||
// CONFIRMED:
|
||||
// all .msh have .wea in the same archive with the same name, so no cross-referencing
|
||||
|
||||
foreach (var nres in allNres)
|
||||
{
|
||||
var path = Path.Combine("C:\\IronStrategy", nres);
|
||||
|
||||
using var nResFs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||
var archive = NResParser.ReadFile(nResFs).Archive!;
|
||||
|
||||
foreach (var archiveFile in archive.Files)
|
||||
{
|
||||
if (archiveFile.FileType != "MESH") continue;
|
||||
|
||||
// Console.WriteLine($"Found mesh {archiveFile.FileName} in {nres}");
|
||||
|
||||
var entry = Path.GetFileNameWithoutExtension(archiveFile.FileName);
|
||||
var weaEntry = archive.Files.FirstOrDefault(x => x.FileType == "WEAR" &&
|
||||
string.Equals(x.FileName, $"{entry}.wea",
|
||||
StringComparison.OrdinalIgnoreCase));
|
||||
if (weaEntry is null)
|
||||
{
|
||||
Console.WriteLine($"Mesh {archiveFile.FileName} in {nres} has no WEA");
|
||||
continue;
|
||||
}
|
||||
|
||||
// Console.WriteLine($"Has matching wear {weaEntry.FileName}");
|
||||
|
||||
var weaData = new byte[weaEntry.FileLength];
|
||||
|
||||
nResFs.Seek(weaEntry.OffsetInFile, SeekOrigin.Begin);
|
||||
nResFs.ReadExactly(weaData, 0, weaData.Length);
|
||||
|
||||
var weaContent = Encoding.UTF8.GetString(weaData);
|
||||
var wea = WeaParser.ReadText(weaContent);
|
||||
|
||||
_ = 5;
|
||||
}
|
||||
}
|
||||
|
||||
// foreach (var item in ctl.ItemRecords)
|
||||
// {
|
||||
@@ -25,4 +93,4 @@ ControlResourceDump.DumpAll(ctl, cpt, ndp, Console.Out);
|
||||
// $"0x{item.Offset:X4}-0x{item.EndOffset:X4} " +
|
||||
// $"type={item.ItemType:X} piece={item.LocalPieceIndex} " +
|
||||
// $"name='{item.ItemName}' bindings=[{string.Join(", ", item.PieceBindingIndices)}]");
|
||||
// }
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user