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; } } } }
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; } } } }