コード例 #1
0
        public static void OnLoad()
        {
            //don't load the file if it don't exist!
            if (!File.Exists(Path.Combine(SAVE_PATH, FILENAME)))
            {
                return;
            }

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

                int version = reader.ReadInt();

                int count = reader.ReadInt();

                for (int i = 0; i < count; i++)
                {
                    GameData.Add(new BoardGameData(reader));
                }

                reader.End();
            }
        }
コード例 #2
0
        private static void OnLoad()
        {
            try{
                if (!File.Exists(Path.Combine("Saves/Gumps/", "Gumps.bin")))
                {
                    return;
                }

                using (FileStream bin = new FileStream(Path.Combine("Saves/Gumps/", "Gumps.bin"), FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    GenericReader reader = new BinaryFileReader(new BinaryReader(bin));

                    int version = reader.ReadInt();

                    if (version >= 0)
                    {
                        int      count = reader.ReadInt();
                        GumpInfo info;

                        for (int i = 0; i < count; ++i)
                        {
                            info = new GumpInfo();
                            info.Load(reader);

                            if (info.Mobile == null || info.Type == null)
                            {
                                continue;
                            }

                            if (s_Infos[info.Mobile] == null)
                            {
                                s_Infos[info.Mobile] = new Hashtable();
                            }

                            ((Hashtable)s_Infos[info.Mobile])[info.Type] = info;
                        }
                    }

                    reader.End();
                }
            }catch { Errors.Report("GumpInfo-> OnLoad"); }
        }
コード例 #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();
        }
コード例 #4
0
        private static void OnLoad()
        {
            try{
                if (!File.Exists(Path.Combine("Saves/Chat/", "Chat.bin")))
                {
                    return;
                }

                using (FileStream bin = new FileStream(Path.Combine("Saves/Chat/", "Chat.bin"), FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    GenericReader reader = new BinaryFileReader(new BinaryReader(bin));

                    int version = reader.ReadInt();

                    if (version >= 12)
                    {
                        s_PublicPlusIRC = reader.ReadBool();
                    }

                    if (version >= 11)
                    {
                        s_FilterPenalty = (FilterPenalty)reader.ReadInt();
                    }

                    if (version >= 10)
                    {
                        s_AllianceChat = reader.ReadBool();
                    }

                    if (version >= 9)
                    {
                        s_AllowFaction = reader.ReadBool();
                    }

                    if (version >= 8)
                    {
                        s_GuildMenuAccess = reader.ReadBool();
                    }

                    if (version >= 7)
                    {
                        s_MaxPmHistory = reader.ReadInt();
                    }

                    if (version >= 6)
                    {
                        s_IrcAutoReconnect = reader.ReadBool();
                    }

                    if (version >= 5)
                    {
                        s_IrcMaxAttempts = reader.ReadInt();
                    }

                    if (version >= 4)
                    {
                        s_IrcAutoConnect = reader.ReadBool();
                    }

                    if (version >= 3)
                    {
                        s_IrcStaffColor = (IrcColor)reader.ReadInt();
                    }

                    if (version >= 2)
                    {
                        s_IrcNick = reader.ReadString();
                    }

                    if (version >= 1)
                    {
                        s_IrcEnabled = reader.ReadBool();
                        s_IrcServer  = reader.ReadString();
                        s_IrcRoom    = reader.ReadString();
                        s_IrcPort    = reader.ReadInt();
                    }

                    if (version >= 0)
                    {
                        int count = reader.ReadInt();

                        for (int i = 0; i < count; ++i)
                        {
                            s_Filters.Add(reader.ReadString());
                        }

                        s_SpamLimiter     = reader.ReadDouble();
                        s_FilterBanLength = reader.ReadDouble();

                        if (version < 11)
                        {
                            reader.ReadBool();                     // FilterBan removed
                        }
                        s_ShowLocation = reader.ReadBool();
                        s_ShowStaff    = reader.ReadBool();
                        s_PublicStyle  = (PublicStyle)reader.ReadInt();

                        count = reader.ReadInt();
                        ChatInfo info;

                        for (int i = 0; i < count; ++i)
                        {
                            info = new ChatInfo(reader.ReadMobile());
                            if (!info.Load(reader))
                            {
                                return;
                            }
                        }
                    }

                    reader.End();
                }

                if (s_IrcAutoConnect)
                {
                    IrcConnection.Connection.Connect();
                }
            }catch { Errors.Report("ChatInfo-> OnLoad"); }
        }
コード例 #5
0
        public static void Load()
        {
            try
            {
                if (!File.Exists(Path.Combine(General.SavePath, "Gumps.bin")))
                {
                    return;
                }

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

                    int version = reader.ReadInt();

                    if (version >= 0)
                    {
                        s_ForceMenu = reader.ReadBool();
                        int      count = reader.ReadInt();
                        GumpInfo info;

                        for (int i = 0; i < count; ++i)
                        {
                            info = new GumpInfo();
                            info.Load(reader);

                            if (info.Type == null)
                            {
                                continue;
                            }

                            s_ForceInfos[info.Type] = info;
                        }

                        count = reader.ReadInt();

                        for (int i = 0; i < count; ++i)
                        {
                            info = new GumpInfo();
                            info.Load(reader);

                            if (info.Mobile == null || info.Type == null)
                            {
                                continue;
                            }

                            if (s_Infos[info.Mobile] == null)
                            {
                                s_Infos[info.Mobile] = new Hashtable();
                            }

                            ((Hashtable)s_Infos[info.Mobile])[info.Type] = info;
                        }
                    }

                    reader.End();
                }
            }
            catch (Exception e)
            {
                Errors.Report(General.Local(198));
                Console.WriteLine(e.Message);
                Console.WriteLine(e.Source);
                Console.WriteLine(e.StackTrace);
            }
        }