Example #1
0
		public ChatMessage( BinaryFileReader reader )
		{
			int version = reader.ReadInt();

			switch( version )
			{
				case 1:
				case 0:
					{
						_client = reader.ReadMobile();
						_message = reader.ReadString();
						_recipient = reader.ReadMobile();
						_timestamp = reader.ReadDateTime();

						break;
					}
			}
		}
		private static void OnLoad()
		{
			if ( !File.Exists( Path.Combine( SavePath, SaveFile ) ) )
			{
				return;
			}

			using ( FileStream bin = new FileStream( Path.Combine( SavePath, SaveFile ), FileMode.Open, FileAccess.Read, FileShare.Read ) )
			{
				GenericReader reader = new BinaryFileReader( new BinaryReader( bin ) );

				m_LastResetTime = reader.ReadDateTime();

				int count = reader.ReadInt();

				for ( int i = 0; i < count; ++i )
				{
					Mobile mobile = reader.ReadMobile();

					MobileRateInfo info = new MobileRateInfo();

					info.Deserialize( reader );

					if ( mobile != null )
					{
						MobileRateInfo.Entries.Add( mobile, info );
					}
				}
			}
		}
Example #3
0
		public static void Load(bool initonly)
		{
			if (initonly)
				Console.WriteLine("Initializing ResourcePool database...");
			else
				Console.WriteLine("Resource Pool Loading...");
			
			if (!Directory.Exists("Saves/ResourcePool"))
				Directory.CreateDirectory("Saves/ResourcePool");
			
			bool newconfig = false;
			FileStream rpfs = new FileStream("Saves/ResourcePool/ResourcePool.dat", FileMode.OpenOrCreate, FileAccess.Read);
			BinaryFileReader rpreader = new BinaryFileReader(new BinaryReader(rpfs));
			if (!rpreader.End())
			{
				int rpversion = rpreader.ReadInt();
				switch (rpversion)
				{
					case 0:
					{
						m_LastModified = rpreader.ReadDateTime();
						FileInfo fi = new FileInfo("Data/ResourcePool/config.xml");
						if (fi.LastWriteTime != m_LastModified)
						{
							m_LastModified = fi.LastWriteTime;
							newconfig = true;
						}
						else
							newconfig = false;

						break;
					}
					default:
						throw new Exception("Error loading ResourcePool: Invalid ResourcePool.dat save version");
				}
			}
			else
			{
				m_LastModified = (new FileInfo("Data/ResourcePool/config.xml")).LastWriteTime;
				Console.WriteLine("Warning: Saves/ResourcePool/ResourcePool.dat not found.");
				newconfig = true;
			}

			if (newconfig)
				Console.WriteLine("New configuration detected! Reading from Data/...");
			XmlTextReader reader;
			reader = new XmlTextReader((newconfig ? "Data/ResourcePool/config.xml" : "Saves/ResourcePool/config.xml"));
			reader.WhitespaceHandling = WhitespaceHandling.None;

			FileStream rcfs = new FileStream("Saves/ResourcePool/Consignments.dat", FileMode.OpenOrCreate, FileAccess.Read);
			FileStream dfs = new FileStream("Saves/ResourcePool/Debts.dat", FileMode.OpenOrCreate, FileAccess.Read);
			BinaryFileReader rcreader = new BinaryFileReader(new BinaryReader(rcfs));
			BinaryFileReader dreader = new BinaryFileReader(new BinaryReader(dfs));

			try { reader.MoveToContent(); }
			catch
			{
				Console.WriteLine("Save xml data not found or invalid, reverting to defaults");
				reader = new XmlTextReader("Data/ResourcePool/config.xml");
				reader.WhitespaceHandling = WhitespaceHandling.None;
				reader.MoveToContent();
			}
		
			int version = Int32.Parse(reader.GetAttribute("version"));
			reader.ReadStartElement("ResourcePool");

			switch (version)
			{
				case 0:
				{
					m_PaymentFactor = Double.Parse(reader.ReadElementString("PaymentFactor"));
					m_FailsafePriceHike = Double.Parse(reader.ReadElementString("FailsafePriceHike"));

					m_Resources = new Hashtable();
					while (reader.LocalName == "ResourceData")
					{
						ResourceData rd = new ResourceData(reader, (initonly ? null : rcreader));
						if (rd != null)
							m_Resources[rd.Type] = rd;
					}
					while (reader.LocalName == "RDRedirect")
					{
						RDRedirect rd = new RDRedirect(reader, (initonly ? null : rcreader));
						if (rd != null)
							m_Resources[rd.Type] = rd;
					}

					m_Debts = new Hashtable();

					if (initonly)
						break;

					while (!dreader.End())
					{
						try
						{
							Mobile m = dreader.ReadMobile();
							double debt = dreader.ReadDouble();
							if (m != null)
								m_Debts[m] = debt;
						}
						catch (Exception ex)
						{
							Console.WriteLine("Exception occured attempting to desrialize from Debts.dat : " + ex.Message );
							break;
						}
						
					}

					break;
				}

				case 1:
				{
					m_PaymentFactor = Double.Parse(reader.ReadElementString("PaymentFactor"));
					m_FailsafePriceHike = Double.Parse(reader.ReadElementString("FailsafePriceHike"));

					m_Resources = new Hashtable();
					while (reader.LocalName == "ResourceData")
					{
						ResourceData rd = new ResourceData(reader, (initonly ? null : rcreader));
						if (rd != null)
							m_Resources[rd.Type] = rd;
					}
					while (reader.LocalName == "RDRedirect")
					{
						RDRedirect rd = new RDRedirect(reader, (initonly ? null : rcreader));
						if (rd != null)
							m_Resources[rd.Type] = rd;
					}

					m_Debts = new Hashtable();

					if (initonly)
						break;

					// read count
					int count = dreader.ReadInt();

					for (int ix = 0; ix < count; ix++)
					{
						Mobile m = dreader.ReadMobile();
						double debt = dreader.ReadDouble();
						if (m != null)
							m_Debts[m] = debt;
					}

					break;
				}

				default:
				{
					throw new Exception("Invalid ResourcePool save version.");
				}
			}

			reader.ReadEndElement();
			reader.Close();
			rcfs.Close();
			rpfs.Close();
			dfs.Close();
		}