Esempio n. 1
0
        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);
                    }
                }
            }
        }
Esempio n. 2
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;
            }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Loads serialized data
        /// </summary>
        private static void OnWorldLoad()
        {
            if (!File.Exists(DataFile))
            {
                return;
            }

            using (FileStream stream = new FileStream(DataFile, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                BinaryFileReader reader = new BinaryFileReader(new BinaryReader(stream));

                int tableCount = reader.ReadInt();
                EoCTable = new Dictionary <Player, EoCContext>(tableCount);

                for (int i = 0; i < tableCount; i++)
                {
                    if (!reader.ReadBool())
                    {
                        continue;
                    }

                    Player pl = reader.ReadMobile <Player>();

                    if (pl != null && !pl.Deleted)
                    {
                        EoCTable[pl] = new EoCContext(reader);
                    }
                }

                int hitsCount = reader.ReadInt();
                HitsTable = new Dictionary <Player, HitsTimer>(hitsCount);

                for (int i = 0; i < hitsCount; i++)
                {
                    if (!reader.ReadBool())
                    {
                        continue;
                    }

                    Player player = reader.ReadMobile <Player>();

                    if (player == null || player.Deleted)
                    {
                        continue;
                    }

                    HitsTable[player] = new HitsTimer(player);

                    DateTime next = reader.ReadDateTime();

                    if (next < DateTime.Now)
                    {
                        next = DateTime.Now;
                    }

                    HitsTable[player].Delay = (next - DateTime.Now);
                }

                reader.Close();
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Loads serialized data
        /// </summary>
        private static void OnWorldLoad()
        {
            if( !File.Exists(DataFile) )
                return;

            using( FileStream stream = new FileStream(DataFile, FileMode.Open, FileAccess.Read, FileShare.Read) )
            {
                BinaryFileReader reader = new BinaryFileReader(new BinaryReader(stream));

                int tableCount = reader.ReadInt();
                EoCTable = new Dictionary<Player, EoCContext>(tableCount);

                for( int i = 0; i < tableCount; i++ )
                {
                    if( !reader.ReadBool() )
                        continue;

                    Player pl = reader.ReadMobile<Player>();

                    if( pl != null && !pl.Deleted )
                        EoCTable[pl] = new EoCContext(reader);
                }

                int hitsCount = reader.ReadInt();
                HitsTable = new Dictionary<Player, HitsTimer>(hitsCount);

                for( int i = 0; i < hitsCount; i++ )
                {
                    if( !reader.ReadBool() )
                        continue;

                    Player player = reader.ReadMobile<Player>();

                    if( player == null || player.Deleted )
                        continue;

                    HitsTable[player] = new HitsTimer(player);

                    DateTime next = reader.ReadDateTime();

                    if( next < DateTime.Now )
                        next = DateTime.Now;

                    HitsTable[player].Delay = (next - DateTime.Now);
                }

                reader.Close();
            }
        }
Esempio n. 5
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();
        }