public static TSR_Function Load(TSR_Reader tsrReader, int offset) { tsrReader.Position = offset; TSR_Function function = new TSR_Function() { Tags = new List <TSR_Tag>(), Sentences = new List <TSR_Sentence>() }; int enc_pos = 4; function.Header = tsrReader.ReadInt32(); function.Name = tsrReader.DecodeString(ref enc_pos); function.Unk = tsrReader.ReadUInt16(); //Tags int tagCount = tsrReader.ReadUInt16(); for (int i = 0; i < tagCount; i++) { function.Tags.Add(TSR_Tag.Load(tsrReader, ref enc_pos)); } //Sentence int sentenceCount = tsrReader.ReadUInt16(); for (int i = 0; i < sentenceCount; i++) { function.Sentences.Add(TSR_Sentence.Load(tsrReader, ref enc_pos)); } //Lines function.Lines = new List <object>(); for (int i = 0; i < function.Sentences.Count; i++) { var tag = function.GetTag(i); if (tag != null) { function.Lines.Add(tag); } function.Lines.Add(function.Sentences[i]); } return(function); }
public static TSR_File Parse(TSR_Reader tsrReader, List <byte> bytes, byte[] rawBytes) { TSR_File tsrFile = new TSR_File() { Functions = new List <TSR_Function>() }; int functionCount = BitConverter.ToUInt16(rawBytes, 0); int functionOffset = 2 + (functionCount * 4); for (int i = 0; i < functionCount; i++) { int funcSize = BitConverter.ToInt32(rawBytes, 2 + (4 * i)); tsrFile.Functions.Add(TSR_Function.Load(tsrReader, functionOffset)); functionOffset += funcSize; } return(tsrFile); }