Ejemplo n.º 1
0
        public SavedStateIndex(GameSave gameSave, long timestamp, StringBlock saveName, ChunkTable chunkTable)
            : base(gameSave)
        {
            _timestamp = timestamp;
            _saveName = saveName;
            _chunkTable = chunkTable;

            UpdateLength();
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 5
0
        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;
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 public Chunk_MTEX(ADTFile file)
     : base(file, "MTEX", Magic)
 {
     textures = new StringBlock(file, (int)ChunkSize);
 }
Ejemplo n.º 8
0
 public Chunk_MOTX(WMOFile file) : base(file, "MOTX", Magic)
 {
     textures = new StringBlock(file, (int)ChunkSize);
 }
Ejemplo n.º 9
0
 public Chunk_MOGN(WMOFile file) : base(file, "MOGN", Magic)
 {
     data = new StringBlock(file, (int)ChunkSize);
     LogWrite("Loaded " + data.count() + " group names.");
 }
Ejemplo n.º 10
0
 public Chunk_MWMO(ADTFile file) : base(file, "MWMO", Magic)
 {
     objects = new StringBlock(file, (int)ChunkSize);
 }
Ejemplo n.º 11
0
        protected override void ReadData(BinaryReader reader)
        {
            _timestamp = reader.ReadInt64();

            _saveName = StringBlock.FromSave(GameSave, ReadAddress(reader));
            _chunkTable = ChunkTable.FromSave(GameSave, ReadAddress(reader));
        }
Ejemplo n.º 12
0
 protected override void ForgetData()
 {
     _saveName = null;
     _chunkTable = null;
 }
Ejemplo n.º 13
0
 public Chunk_MMDX(ADTFile file) : base(file, "MMDX", Magic)
 {
     models = new StringBlock(file, (int)ChunkSize);
 }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
 public Chunk_MOTX(WMOFile file)
     : base(file, "MOTX", Magic)
 {
     textures = new StringBlock(file, (int)ChunkSize);
 }
Ejemplo n.º 16
0
 public Chunk_MWMO(ADTFile file)
     : base(file, "MWMO", Magic)
 {
     objects = new StringBlock(file, (int)ChunkSize);
 }
Ejemplo n.º 17
0
 public Chunk_MODN(WMOFile file)
     : base(file, "MODN", Magic)
 {
     data = new StringBlock(file, (int) ChunkSize);
     LogWrite("Loaded " + data.count() + " doodad names.");
 }
Ejemplo n.º 18
0
 public Chunk_MTEX(ADTFile file) : base(file, "MTEX", Magic)
 {
     textures = new StringBlock(file, (int)ChunkSize);
 }
Ejemplo n.º 19
0
     /// <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;
     }