public SavedStateIndex(GameSave gameSave, long timestamp, StringBlock saveName, ChunkTable chunkTable) : base(gameSave) { _timestamp = timestamp; _saveName = saveName; _chunkTable = chunkTable; UpdateLength(); }
private Block DoubleQuotedUrl(char current) { while (true) { if (current.IsLineBreak()) { ErrorHandler(ParserError.UnexpectedLineBreak, ErrorMessages.InvalidUrlEnd); return(BadUrl(_stylesheetReader.Next)); } if (Specification.EndOfFile == current) { return(StringBlock.Url(FlushBuffer())); } if (current == Specification.DoubleQuote) { return(UrlEnd(_stylesheetReader.Next)); } if (current == Specification.ReverseSolidus) { current = _stylesheetReader.Next; if (current == Specification.EndOfFile) { _stylesheetReader.Back(2); ErrorHandler(ParserError.EndOfFile, ErrorMessages.InvalidUrlEnd); return(StringBlock.Url(FlushBuffer(), true)); } if (current.IsLineBreak()) { _buffer.AppendLine(); } else { _buffer.Append(ConsumeEscape(current)); } } else { _buffer.Append(current); } current = _stylesheetReader.Next; } }
private Block UrlEnd(char current) { while (true) { if (current == Specification.ParenClose) { return(StringBlock.Url(FlushBuffer())); } if (!current.IsSpaceCharacter()) { ErrorHandler(ParserError.InvalidCharacter, ErrorMessages.InvalidUrlCharacter); return(BadUrl(current)); } current = _stylesheetReader.Next; } }
private Block SingleQuoteString(char current) { while (true) { switch (current) { case Specification.SingleQuote: case Specification.EndOfFile: return(StringBlock.Plain(FlushBuffer())); case Specification.FormFeed: case Specification.LineFeed: ErrorHandler(ParserError.UnexpectedLineBreak, ErrorMessages.SingleQuotedString); _stylesheetReader.Back(); return(StringBlock.Plain(FlushBuffer(), true)); case Specification.ReverseSolidus: current = _stylesheetReader.Next; if (current.IsLineBreak()) { _buffer.AppendLine(); } else if (current != Specification.EndOfFile) { _buffer.Append(ConsumeEscape(current)); } else { ErrorHandler(ParserError.EndOfFile, ErrorMessages.SingleQuotedStringEof); _stylesheetReader.Back(); return(StringBlock.Plain(FlushBuffer(), true)); } break; default: _buffer.Append(current); break; } current = _stylesheetReader.Next; } }
private Block UnquotedUrl(char current) { while (true) { if (current.IsSpaceCharacter()) { return(UrlEnd(_stylesheetReader.Next)); } if (current == Specification.ParenClose || current == Specification.EndOfFile) { return(StringBlock.Url(FlushBuffer())); } if (current == Specification.DoubleQuote || current == Specification.SingleQuote || current == Specification.ParenOpen || current.IsNonPrintable()) { ErrorHandler(ParserError.InvalidCharacter, ErrorMessages.InvalidUrlQuote); return(BadUrl(_stylesheetReader.Next)); } if (current == Specification.ReverseSolidus) { if (IsValidEscape(current)) { current = _stylesheetReader.Next; _buffer.Append(ConsumeEscape(current)); } else { ErrorHandler(ParserError.InvalidCharacter, ErrorMessages.InvalidUrlCharacter); return(BadUrl(_stylesheetReader.Next)); } } else { _buffer.Append(current); } current = _stylesheetReader.Next; } }
public override sealed bool ParseCSV(byte[] buffer, FileManager fileManager = null) { if ((buffer == null)) { return(false); } string[][] stringBuffer = FileTools.UnicodeCSVToStringArray(buffer, 0x09, 0x22); if ((stringBuffer == null)) { return(false); } int row = 0; Rows = new List <Object>(); FieldInfo[] stringFields = typeof(StringBlock).GetFields(); foreach (string[] bufferRow in stringBuffer) { if (row == 0) { row++; continue; } int col = 0; StringBlock stringBlock = new StringBlock(); foreach (FieldInfo fieldInfo in stringFields) { fieldInfo.SetValue(stringBlock, FileTools.StringToObject(bufferRow[col++], fieldInfo.FieldType)); } Rows.Add(stringBlock); } return(HasIntegrity = true); }
public Chunk_MTEX(ADTFile file) : base(file, "MTEX", Magic) { textures = new StringBlock(file, (int)ChunkSize); }
public Chunk_MOTX(WMOFile file) : base(file, "MOTX", Magic) { textures = new StringBlock(file, (int)ChunkSize); }
public Chunk_MOGN(WMOFile file) : base(file, "MOGN", Magic) { data = new StringBlock(file, (int)ChunkSize); LogWrite("Loaded " + data.count() + " group names."); }
public Chunk_MWMO(ADTFile file) : base(file, "MWMO", Magic) { objects = new StringBlock(file, (int)ChunkSize); }
protected override void ReadData(BinaryReader reader) { _timestamp = reader.ReadInt64(); _saveName = StringBlock.FromSave(GameSave, ReadAddress(reader)); _chunkTable = ChunkTable.FromSave(GameSave, ReadAddress(reader)); }
protected override void ForgetData() { _saveName = null; _chunkTable = null; }
public Chunk_MMDX(ADTFile file) : base(file, "MMDX", Magic) { models = new StringBlock(file, (int)ChunkSize); }
public override sealed bool ParseData(byte[] buffer) { if ((buffer == null)) { return(false); } int offset = 0; StringsHeader stringsHeader = FileTools.ByteArrayToStructure <StringsHeader>(buffer, ref offset); for (int i = 0; i < stringsHeader.Count; i++) { StringBlock stringBlock = new StringBlock { ReferenceId = FileTools.ByteArrayToInt32(buffer, ref offset), Unknown = FileTools.ByteArrayToInt32(buffer, ref offset) }; int count = FileTools.ByteArrayToInt32(buffer, ref offset); stringBlock.StringId = FileTools.ByteArrayToStringASCII(buffer, offset); offset += count + 1; stringBlock.Reserved = FileTools.ByteArrayToInt32(buffer, ref offset); count = FileTools.ByteArrayToInt32(buffer, ref offset); stringBlock.String = FileTools.ByteArrayToStringUnicode(buffer, offset, count); offset += count; int attributeCount = FileTools.ByteArrayToInt32(buffer, ref offset); for (int j = 0; j < attributeCount; j++) { count = FileTools.ByteArrayToInt32(buffer, ref offset); int byteCount = (count + 1) * 2; switch (j) { case 0: stringBlock.Attribute1 = FileTools.ByteArrayToStringUnicode(buffer, offset, byteCount); break; case 1: stringBlock.Attribute2 = FileTools.ByteArrayToStringUnicode(buffer, offset, byteCount); break; case 2: stringBlock.Attribute3 = FileTools.ByteArrayToStringUnicode(buffer, offset, byteCount); break; case 3: stringBlock.Attribute4 = FileTools.ByteArrayToStringUnicode(buffer, offset, byteCount); break; } offset += byteCount; } Rows.Add(stringBlock); } return(HasIntegrity = ((offset == buffer.Length)) ? true : false); }
public Chunk_MODN(WMOFile file) : base(file, "MODN", Magic) { data = new StringBlock(file, (int) ChunkSize); LogWrite("Loaded " + data.count() + " doodad names."); }
/// <summary>Adds a new string to the list to render.</summary> /// <param name="text">Text to render</param> /// <param name="textBox">Rectangle to constrain text</param> /// <param name="alignment">Font alignment</param> /// <param name="size">Font size</param> /// <param name="color">Color</param> /// <param name="kerning">true to use kerning, false otherwise.</param> /// <returns>The index of the added StringBlock</returns> public int AddString( string text, RectangleF textBox, Align alignment, float size, Vector4 color, bool kerning ) { StringBlock b = new StringBlock( text, textBox, alignment, size, color, kerning ); m_strings.Add( b ); int index = m_strings.Count - 1; // m_quads.AddRange( GetProcessedQuads( index ) ); return index; }