public void Deserialize( GenericReader reader )
		{
			int version = reader.ReadEncodedInt();

			m_Combination = reader.ReadString();
			m_Area = reader.ReadString();
			m_Design = DesignTypes.FindDesign( reader.ReadString() );
			m_NormalHue = reader.ReadInt();
			m_ActivateHue = reader.ReadInt();
			m_DeactivateHue = reader.ReadInt();
			m_StartingPos = reader.ReadUInt();
			m_Reversed = reader.ReadBool();
			m_DropChance = reader.ReadDouble();
			m_GateHue = reader.ReadInt();
		}
		public static void LoadDesigns()
		{
			Console.Write( "Stargate Designs: Loading..." );

			string filePath = Path.Combine( "Data/Stargate", "gatedesigns.xml" );

			if ( !File.Exists( filePath ) )
			{
				m_Designs = new Dictionary<string, DesignType>( 0 );
				return;
			}

			XmlDocument doc = new XmlDocument();
			doc.Load( filePath );

			XmlElement root = doc["designs"];
			m_Designs = new Dictionary<string, DesignType>( Utility.ToInt32( Utility.GetAttribute( root, "count", "0" )) );
			foreach ( XmlElement designxml in root.GetElementsByTagName( "design" ) )
			{
				try
				{
					DesignType design = new DesignType( Utility.GetAttribute( designxml, "name", "Unknown" ) );
					int setcounter = 0;
					foreach( XmlElement designset in designxml.GetElementsByTagName( "set" ) )
					{
						design.DesignOffsets[setcounter++] = Utility.ToInt32( Utility.GetAttribute( designset, "x", "0" ) );
						design.DesignOffsets[setcounter++] = Utility.ToInt32( Utility.GetAttribute( designset, "y", "0" ) );
					}
					m_Designs[design.Name.ToLower()] = design;
				}
				catch
				{
					Console.WriteLine( "Warning: Stargate designs failed to load." );
				}
			}
			Console.WriteLine( "done" );
		}
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			m_Combination = reader.ReadString();
			m_Area = reader.ReadString();
			m_Design = DesignTypes.FindDesign( reader.ReadString() );
			m_StartingPos = reader.ReadUInt();
			m_Reversed = reader.ReadBool();
		}