Esempio n. 1
0
        public static void Read(this GenericReader reader, byte[] buffer)
        {
            for (int i = 0; i < buffer.Length; i++)
            {
                if (reader.End())
                {
                    break;
                }

                buffer[i] = reader.ReadByte();
            }
        }
Esempio n. 2
0
        public static byte[] ReadLongBytes(this GenericReader reader)
        {
            var length = reader.ReadLong();

            var block = new byte[length];

            for (long i = 0; i < length && !reader.End(); i++)
            {
                block[i] = reader.ReadByte();
            }

            return(block);
        }
Esempio n. 3
0
        public static int Skip(this GenericReader reader, int length)
        {
            var skipped = 0;

            while (--length >= 0)
            {
                if (reader.End())
                {
                    break;
                }

                reader.ReadByte();
                ++skipped;
            }

            return(skipped);
        }
Esempio n. 4
0
		public virtual void Load(XmlTextReader reader, GenericReader rcreader)
		{
			int version = Int32.Parse(reader.GetAttribute("version"));
			reader.ReadStartElement("ResourceData");

			switch (version)
			{
				case 0:
				{
					m_Name = reader.ReadElementString("Name");
					m_Type = Type.GetType(reader.ReadElementString("Type"));
					m_BunchName = reader.ReadElementString("BunchName");
					m_ResalePrice = Double.Parse(reader.ReadElementString("ResalePrice"));
					m_WholesalePrice = Double.Parse(reader.ReadElementString("WholesalePrice"));
					m_ItemID = Int32.Parse(reader.ReadElementString("ItemID"));
					m_Hue = Int32.Parse(reader.ReadElementString("Hue"));
					m_SmallestFirstFactor = Double.Parse(reader.ReadElementString("SmallestFirstFactor"));
					m_ValidFailsafe = bool.Parse(reader.ReadElementString("ValidFailsafe"));
					
					if (m_Type == null || m_Type.GetInterface("ICommodity", false) == null)
						throw new Exception(String.Format("Error: Type of resource '{0}' does not exist or does not implement ICommodity.", m_Name));
					
					m_ConsignmentList = new ArrayList();
					
					if (rcreader == null)// || !FindPosition(rcreader))
						break;

					((BinaryFileReader)rcreader).Seek(0, SeekOrigin.Begin);
					if (rcreader.End())
						break;
					int rcversion = rcreader.ReadInt();
					switch (rcversion)
					{
						case 0:
						{
							while (!rcreader.End())
							{
								ResourceConsignment rc = new ResourceConsignment(rcreader);
								if (rc.Type == m_Type)
									m_ConsignmentList.Add(rc);
							}

							break;
						}
						default:
							throw new Exception("ResourcePool error: Invalid file version for Consignments.dat");
					}
					/*if (!rcreader.End() && rcreader.ReadString() == m_Type.FullName)
							{
								int rcversion = rcreader.ReadInt();
								switch (rcversion)
								{
									case 0:
									{
										count = rcreader.ReadInt();
										for (; count > 0; count--)
											m_ConsignmentList.Add(new ResourceConsignment(rcreader));
										break;
									}
									default:
									{
										throw new Exception("ResourcePool error: Invalid ResourceData entry save version in Consignments.dat");
									}
								}
							}*/

					break;
				}
				default:
				{
					throw new Exception("Error loading ResourceData: Invalid saveversion");
				}
			}

			reader.ReadEndElement();
		}
Esempio n. 5
0
		private bool FindPosition(GenericReader rcreader)
		{
			((BinaryFileReader)rcreader).Seek(0, SeekOrigin.Begin);
			if (rcreader.End())
				return false;

			int rcversion = rcreader.ReadInt();
			switch (rcversion)
			{
				case 0:
				{
					long tableposition = rcreader.ReadLong();
					Console.WriteLine("Tableposition: {0}", tableposition);
					((BinaryFileReader)rcreader).Seek(tableposition, SeekOrigin.Begin);
					while (!rcreader.End())
					{
						string typename = rcreader.ReadString();
						long location = rcreader.ReadLong();
						Console.WriteLine("{0}, {1}", typename, location);
						if (typename == m_Type.FullName)
						{
							((BinaryFileReader)rcreader).Seek(location, SeekOrigin.Begin);
							return true;
						}
					}

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

			return false;
		}