public void WriteString(X360Writer writer) { StringOffset = (int) writer.BaseStream.Position; string value = ValueEncrypted ? Encoding.Default.GetString(EncryptedValue) : Value; StringLength = value.Length; writer.WriteNullTerminatedString(value); }
public void Write(X360Writer writer) { writer.Write(Hash); writer.Write(Offset); writer.Write(Size); }
public override void Write(Stream output, IDirectory inputDirectory) { X360Writer writer = new X360Writer(output, Encoding.Default, true, IsBigEndianPlatform(Platform)); const int headerSize = 48; int indicesSize = 48*Entries.Count; int referenceSize = 16*References.Count; long startPosition = output.Position; output.Position += headerSize + indicesSize + referenceSize; foreach (var fpkEntry in Entries) { fpkEntry.WriteFilePath(writer); } foreach (var fpkReference in References) { fpkReference.WriteFilePath(writer); } output.AlignWrite(16, 0x00); foreach (var fpkEntry in Entries) { fpkEntry.WriteData(writer, inputDirectory); output.AlignWrite(16, 0x00); } uint fileSize = (uint) output.Position; output.Position = startPosition; if (writer.FlipEndian) writer.FlipEndian = false; writer.Write(0x66786f66); // foxf writer.Write((ushort) 0x6B70); //pk writer.Write((byte) FpkType); writer.WriteAsciiString(Platform, 3); writer.Write(fileSize); writer.FlipEndian = IsBigEndianPlatform(Platform); writer.WriteZeros(18); writer.Write(UnknownValue); writer.Write(Entries.Count); writer.Write(References.Count); writer.WriteZeros(4); foreach (var fpkEntry in Entries) { fpkEntry.Write(writer); } foreach (var fpkReference in References) { fpkReference.Write(writer); } }
public void Write(X360Writer writer) { writer.Write(StringOffset); writer.Write(StringLength); writer.WriteZeros(4); }
public void WriteData(X360Writer writer, IDirectory inputDirectory) { DataOffset = (uint) writer.BaseStream.Position; byte[] data = inputDirectory.ReadFile(GetFpkEntryFileName()); DataSize = (ulong)data.Length; writer.BaseStream.Write(data, 0, data.Length); }
public void WriteData(X360Writer writer, IDirectory inputDirectory) { long ftexHeaderPosition = writer.BaseStream.Position; writer.BaseStream.Position += HeaderSize + Entries.Count * PftxsFtexsFileEntry.HeaderSize; bool flipEndian = writer.FlipEndian; foreach (var entry in Entries) { var data = inputDirectory.ReadFile(entry.FilePath); entry.Offset = Convert.ToInt32(writer.BaseStream.Position - ftexHeaderPosition); entry.Size = Convert.ToInt32(data.Length); writer.Write(data); } long endPosition = writer.BaseStream.Position; writer.BaseStream.Position = ftexHeaderPosition; writer.FlipEndian = false; writer.Write(Convert.ToUInt32(0x58455446)); // FTEX writer.FlipEndian = flipEndian; writer.Write(Convert.ToUInt32(endPosition - ftexHeaderPosition)); // Size writer.Write(Hash); writer.Write(Convert.ToUInt32(Entries.Count)); writer.Write(0U); writer.Write(0U); writer.Write(0U); foreach (var entry in Entries) { entry.Write(writer); } writer.BaseStream.Position = endPosition; }
public void Write(X360Writer writer) { writer.Write(DataOffset); writer.Write(DataSize); FilePathFpkString.Write(writer); writer.Write(Md5Hash); }
public void WriteFilePath(X360Writer writer) { if (Md5Hash == null) Md5Hash = Hashing.Md5HashText(FilePath); FilePathFpkString.WriteString(writer); }
public void WriteFilePath(X360Writer writer) { ReferenceFilePath.WriteString(writer); }
public void Write(X360Writer writer) { ReferenceFilePath.Write(writer); }
public override void Write(Stream output, IDirectory inputDirectory) { X360Writer writer = new X360Writer(output, Encoding.Default, true, Endianness == "Big"); long ftexHeaderPosition = output.Position; output.Position += FtexHeaderSize; long texlHeaderPosition = output.Position; output.Position += TexlHeaderSize; foreach (var file in Files) { file.WriteData(writer, inputDirectory); } long endPosition = output.Position; output.Position = ftexHeaderPosition; writer.FlipEndian = false; writer.Write(PftxMagicNumber); writer.FlipEndian = Endianness == "Big"; writer.Write(0x40000000); writer.Write(0x00000010); writer.Write(0x00000001); output.Position = texlHeaderPosition; writer.FlipEndian = false; writer.Write(0x4C584554); // TEXL writer.FlipEndian = Endianness == "Big"; writer.Write(Convert.ToUInt32(endPosition - texlHeaderPosition)); // Size writer.Write(Convert.ToUInt32(Files.Count)); output.Position = endPosition; }