public SsqInfoChunk Decode(SsqChunk ssqChunk) { var text = new string[12]; var chunkMem = new ReadOnlyMemoryStream(ssqChunk.Data); var reader = new BinaryReader(chunkMem, Encodings.CP1252); var builder = new StringBuilder(); for (var i = 0; i < text.Length; i++) { while (true) { var c = reader.ReadChar(); if (c == 0) { break; } builder.Append(c); } text[i] = builder.ToString(); builder.Clear(); } return(new SsqInfoChunk { Text = text, Difficulties = reader.ReadBytes(10) }); }
public void Write(Stream stream, SsqChunk ssqChunk) { var writer = new BinaryWriter(stream); if (ssqChunk == null) { writer.Write(0); return; } var chunkData = ssqChunk.Data ?? new byte[0]; var writeLength = ((chunkData.Length + 3) >> 2) << 2; var writeData = new byte[writeLength]; Array.Copy(chunkData, writeData, chunkData.Length); var parameter0 = ssqChunk.Parameter0; var parameter1 = ssqChunk.Parameter1; writer.Write(writeLength + 8); writer.Write(parameter0); writer.Write(parameter1); writer.Write(writeData); }