Example #1
0
        protected virtual void ReadCLPSDataFromXML(XmlReader reader, Level level)
        {
            byte[] clpsEntry  = new byte[8];
            int    valueCount = 0;

            while (reader.Read())
            {
                reader.MoveToContent();

                if (reader.NodeType.Equals(XmlNodeType.Element))
                {
                    switch (reader.LocalName)
                    {
                    case "Value":
                        clpsEntry  = new byte[8];
                        valueCount = 0;
                        break;

                    case "Byte":
                        if (valueCount >= 8)
                        {
                            break;
                        }
                        clpsEntry[valueCount++] = Byte.Parse(reader.ReadElementContentAsString());
                        break;
                    }
                }
                else if (reader.NodeType.Equals(XmlNodeType.EndElement))
                {
                    if (reader.LocalName.Equals("Entry"))
                    {
                        CLPS.Entry clps = new CLPS.Entry();
                        clps.flags  = DataHelper.Read32(clpsEntry, 0);
                        clps.flags |= (ulong)DataHelper.Read32(clpsEntry, 4) << 32;
                        level.m_CLPS.Add(clps);
                    }
                    else if (reader.LocalName.Equals("CLPS"))
                    {
                        break;
                    }
                }
            }
        }
Example #2
0
        protected override void ReadCLPSDataFromXML(XmlReader reader, Level level)
        {
            CLPS.Entry entry = new CLPS.Entry();

            while (reader.Read())
            {
                reader.MoveToContent();

                if (reader.NodeType.Equals(XmlNodeType.Element))
                {
                    switch (reader.LocalName)
                    {
                    case "Entry":
                        entry = new CLPS.Entry();
                        break;

                    case "TerrainType":
                        entry.m_Texture = (ulong)reader.ReadElementContentAsLong();
                        break;

                    case "Water":
                        entry.m_Water = (ulong)(reader.ReadElementContentAsBoolean() ? 1 : 0);
                        break;

                    case "ViewID":
                        entry.m_ViewID = (ulong)reader.ReadElementContentAsLong();
                        break;

                    case "Traction":
                        entry.m_Traction = (ulong)reader.ReadElementContentAsLong();
                        break;

                    case "CameraBehaviour":
                        entry.m_CamBehav = (ulong)reader.ReadElementContentAsLong();
                        break;

                    case "Behaviour":
                        entry.m_Behav = (ulong)reader.ReadElementContentAsLong();
                        break;

                    case "TransparentToCamera":
                        entry.m_CamThrough = (ulong)(reader.ReadElementContentAsBoolean() ? 1 : 0);
                        break;

                    case "Toxic":
                        entry.m_Toxic = (ulong)(reader.ReadElementContentAsBoolean() ? 1 : 0);
                        break;

                    case "Unknown26":
                        entry.m_Unk26 = (ulong)reader.ReadElementContentAsLong();
                        break;

                    case "Padding1":
                        entry.m_Pad1 = (ulong)reader.ReadElementContentAsLong();
                        break;

                    case "WindID":
                        entry.m_WindID = (ulong)reader.ReadElementContentAsLong();
                        break;

                    case "Padding2":
                        entry.m_Pad2 = (ulong)reader.ReadElementContentAsLong();
                        break;
                    }
                }
                else if (reader.NodeType.Equals(XmlNodeType.EndElement))
                {
                    if (reader.LocalName.Equals("Entry"))
                    {
                        level.m_CLPS.Add(entry);
                    }
                    else if (reader.LocalName.Equals("CLPS"))
                    {
                        return;
                    }
                }
            }
        }