Exemplo n.º 1
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);
        }
Exemplo n.º 2
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();
        }