MoltenMercury/libWyvernzora/IO/Packaging/AFS/AFSPackage.cs
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace libWyvernzora.IO.Packaging
{
public class AFSPackageLoader : PackageContinuous
{
public AFSPackageLoader(ExStream exs, String title = null)
: base(exs)
{
if (StreamTools.ReadASCII(m_bs, 4) != "AFS\0") throw new InvalidDataException();
Int32 fcount = StreamTools.ReadI32(m_bs, BitSequence.LittleEndian);
List<PackageEntry> files = new List<PackageEntry>();
for (int i = 0; i < fcount; i++)
{
PackageEntry macro = new PackageEntry();
macro.Offset = StreamTools.ReadI32(m_bs, BitSequence.LittleEndian);
macro.Length = StreamTools.ReadI32(m_bs, BitSequence.LittleEndian);
files.Add(macro);
}
Int32 indx_start = StreamTools.ReadI32(m_bs, BitSequence.LittleEndian);
Int32 indx_len = m_bs.ReadInt(BitSequence.LittleEndian);
m_bs.Position = indx_start;
for (int i = 0; i < fcount; i++)
{
files[i].Name = StreamTools.ReadASCII(m_bs, 0x20).Replace("\0", "");
Int16 f_dy = StreamTools.ReadI16(m_bs, BitSequence.LittleEndian);
Int16 f_dd = StreamTools.ReadI16(m_bs, BitSequence.LittleEndian);
Int16 f_dm = StreamTools.ReadI16(m_bs, BitSequence.LittleEndian);
Int16 f_th = StreamTools.ReadI16(m_bs, BitSequence.LittleEndian);
Int16 f_tm = StreamTools.ReadI16(m_bs, BitSequence.LittleEndian);
Int16 f_ts = StreamTools.ReadI16(m_bs, BitSequence.LittleEndian);
Int32 f_rsize = StreamTools.ReadI32(m_bs, BitSequence.LittleEndian);
files[i].SetAdditionalProperty("Date", new DateTime(f_dy, f_dd, f_dm, f_th, f_tm, f_ts));
files[i].SetAdditionalProperty("Data", f_rsize.ToString());
}
foreach (PackageEntry entry in files)
{ PushEntry(entry); GetInputStream(entry); }
m_root.Title = title;
}
public AFSPackageLoader(String path, String title = null)
: this(new ExStream(path, FileMode.Open, FileAccess.Read),
(title == null) ? Path.GetMainFileName(path) : title) { }
public override long GetEntryLengthInPhysicalFileDB(PackageEntry entry)
{
Int32 index = m_map[entry];
Int64 pos = index * 12 + 8;
m_bs.Position = pos;
后面还有 47 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。