• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# Server.BinaryFileWriter类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中Server.BinaryFileWriter的典型用法代码示例。如果您正苦于以下问题:C# BinaryFileWriter类的具体用法?C# BinaryFileWriter怎么用?C# BinaryFileWriter使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



BinaryFileWriter类属于Server命名空间,在下文中一共展示了BinaryFileWriter类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: Serialize

		public static void Serialize(FileInfo file, Action<GenericWriter> serializer)
		{
			file.Refresh();

			if (file.Directory != null && !file.Directory.Exists)
			{
				file.Directory.Create();
			}

			if (!file.Exists)
			{
				file.Create().Close();
			}
				
			file.Refresh();

			using (var fs = file.OpenWrite())
			{
				var writer = new BinaryFileWriter(fs, true);

				try
				{
					serializer(writer);
				}
				finally
				{
					writer.Flush();
					writer.Close();
				}
			}
		}
开发者ID:Crome696,项目名称:ServUO,代码行数:31,代码来源:Persistence.cs


示例2: SerializeMessages

		public static void SerializeMessages()
		{
			if( !Directory.Exists( SavePath ) )
				Directory.CreateDirectory( SavePath );

			BinaryFileWriter writer = new BinaryFileWriter( SaveFile, true );

			writer.Write( (int)_messageTable.Count );

			if( _messageTable.Count > 0 )
			{
				foreach( KeyValuePair<Mobile, List<ChatMessage>> kvp in _messageTable )
				{
					if( kvp.Key == null || kvp.Key.Deleted || kvp.Value == null )
					{
						writer.Write( (int)-1 );
					}
					else
					{
						writer.Write( (int)kvp.Key.Serial );

						writer.Write( (int)kvp.Value.Count );
						kvp.Value.ForEach(
							delegate( ChatMessage message )
							{
								message.Serialize( writer );
							} );
					}
				}
			}

			writer.Close();
		}
开发者ID:greeduomacro,项目名称:hubroot,代码行数:33,代码来源:ChatMessageManager.cs


示例3: CustomSeperateSave

        public static void CustomSeperateSave(SeperateSaveData data)
        {
            GenericWriter writer = new BinaryFileWriter(Path.Combine(data.SaveLocation, data.SaveName + ".bin"), true);
            DirectoryCheck(data.SaveLocation);

            data.SaveMethod(writer);
            writer.Write(writer.Position);
            writer.Close();
        }
开发者ID:kamronbatman,项目名称:Defiance-AOS-Pre-2012,代码行数:9,代码来源:CustomSaving.cs


示例4: Save

		public static void Save()
		{
            try
            {
                if (!Directory.Exists(General.SavePath))
                    Directory.CreateDirectory(General.SavePath);

                GenericWriter writer = new BinaryFileWriter(Path.Combine(General.SavePath, "Gumps.bin"), true);

                writer.Write(0); // version

                writer.Write(s_ForceMenu);
                writer.Write(s_ForceInfos.Count);
                foreach (GumpInfo ginfo in s_ForceInfos.Values)
                    ginfo.Save(writer);

                ArrayList list = new ArrayList();
                GumpInfo info;

                foreach (object o in new ArrayList(s_Infos.Values))
                {
                    if (!(o is Hashtable))
                        continue;

                    foreach (object ob in new ArrayList(((Hashtable)o).Values))
                    {
                        if (!(ob is GumpInfo))
                            continue;

                        info = (GumpInfo)ob;

                        if (info.Mobile != null
                        && info.Mobile.Player
                        && !info.Mobile.Deleted
                        && info.Mobile.Account != null
                        && ((Account)info.Mobile.Account).LastLogin > DateTime.Now - TimeSpan.FromDays(30))
                            list.Add(ob);
                    }
                }

                writer.Write(list.Count);

                foreach (GumpInfo ginfo in list)
                    ginfo.Save(writer);

                writer.Close();
            }
            catch (Exception e)
            {
                Errors.Report(General.Local(199));
                Console.WriteLine(e.Message);
                Console.WriteLine(e.Source);
                Console.WriteLine(e.StackTrace);
            }
		}
开发者ID:Jascen,项目名称:UOSmart,代码行数:55,代码来源:GumpInfo.cs


示例5: SaveMobiles

		protected void SaveMobiles(SaveMetrics metrics)
		{
			Dictionary<Serial, Mobile> mobiles = World.Mobiles;

			GenericWriter idx;
			GenericWriter tdb;
			GenericWriter bin;

			if (UseSequentialWriters)
			{
				idx = new BinaryFileWriter(World.MobileIndexPath, false);
				tdb = new BinaryFileWriter(World.MobileTypesPath, false);
				bin = new BinaryFileWriter(World.MobileDataPath, true);
			}
			else
			{
				idx = new AsyncWriter(World.MobileIndexPath, false);
				tdb = new AsyncWriter(World.MobileTypesPath, false);
				bin = new AsyncWriter(World.MobileDataPath, true);
			}

			idx.Write(mobiles.Count);

			foreach (Mobile m in mobiles.Values)
			{
				long start = bin.Position;

				idx.Write(m._TypeRef);
				idx.Write(m.Serial);
				idx.Write(start);

				m.Serialize(bin);

				if (metrics != null)
				{
					metrics.OnMobileSaved((int)(bin.Position - start));
				}

				idx.Write((int)(bin.Position - start));

				m.FreeCache();
			}

			tdb.Write(World.m_MobileTypes.Count);

			foreach (Type t in World.m_MobileTypes)
			{
				tdb.Write(t.FullName);
			}

			idx.Close();
			tdb.Close();
			bin.Close();
		}
开发者ID:rokann,项目名称:JustUO,代码行数:54,代码来源:StandardSaveStrategy.cs


示例6: SaveMobiles

		protected void SaveMobiles( SaveMetrics metrics ) {
			Dictionary<Serial, Mobile> mobiles = World.Mobiles;

			GenericWriter idx;
			GenericWriter tdb;
			GenericWriter bin;

			if ( World.SaveType == World.SaveOption.Normal ) {
				idx = new BinaryFileWriter( World.MobileIndexPath, false );
				tdb = new BinaryFileWriter( World.MobileTypesPath, false );
				bin = new BinaryFileWriter( World.MobileDataPath, true );
			} else {
				idx = new AsyncWriter( World.MobileIndexPath, false );
				tdb = new AsyncWriter( World.MobileTypesPath, false );
				bin = new AsyncWriter( World.MobileDataPath, true );
			}

			idx.Write( ( int ) mobiles.Count );
			foreach ( Mobile m in mobiles.Values ) {
				long start = bin.Position;

				idx.Write( ( int ) m.m_TypeRef );
				idx.Write( ( int ) m.Serial );
				idx.Write( ( long ) start );

				m.Serialize( bin );

				if ( metrics != null ) {
					metrics.OnMobileSaved( ( int ) ( bin.Position - start ) );
				}

				idx.Write( ( int ) ( bin.Position - start ) );

				m.FreeCache();
			}

			tdb.Write( ( int ) World.m_MobileTypes.Count );

			for ( int i = 0; i < World.m_MobileTypes.Count; ++i )
				tdb.Write( World.m_MobileTypes[i].FullName );

			idx.Close();
			tdb.Close();
			bin.Close();
		}
开发者ID:PepeBiondi,项目名称:runsa,代码行数:45,代码来源:StandardSaveStrategy.cs


示例7: OnSave

		private static void OnSave( WorldSaveEventArgs e )
		{try{

			if ( !Directory.Exists( "Saves/Gumps/" ) )
				Directory.CreateDirectory( "Saves/Gumps/" );

			GenericWriter writer = new BinaryFileWriter( Path.Combine( "Saves/Gumps/", "Gumps.bin" ), true );

			writer.Write( 0 ); // version

			ArrayList list = new ArrayList();

			GumpInfo gumpi;
			foreach( object obj in new ArrayList( s_Infos.Values ) )
			{
				if ( !(obj is Hashtable) )
					continue;

				foreach( object obje in new ArrayList( ((Hashtable)obj).Values ) )
				{
					if ( !(obje is GumpInfo ) )
						continue;

					gumpi = (GumpInfo)obje;

					if ( gumpi.Mobile != null
					&& gumpi.Mobile.Player
					&& !gumpi.Mobile.Deleted
					&& gumpi.Mobile.Account != null
					&& ((Account)gumpi.Mobile.Account).LastLogin > DateTime.Now - TimeSpan.FromDays( 30 ) )
						list.Add( obje );
				}
			}

			writer.Write( list.Count );

			foreach( GumpInfo info in list )
				info.Save( writer );

			writer.Close();

		}catch{ Errors.Report( "GumpInfo-> OnSave" ); } }
开发者ID:greeduomacro,项目名称:uodarktimes-1,代码行数:42,代码来源:GumpInfo.cs


示例8: SaveGlobalOptions

        public static void SaveGlobalOptions()
        {
            CleanUpData();

            if (!Directory.Exists(General.SavePath))
                Directory.CreateDirectory(General.SavePath);

            GenericWriter writer = new BinaryFileWriter(Path.Combine(General.SavePath, "GlobalOptions.bin"), true);

            writer.Write(2); // version

            writer.Write(s_MultiPort);
            writer.Write(s_MultiServer);

            writer.Write(s_Notifications.Count);
            foreach (Notification not in s_Notifications)
                not.Save(writer);

            writer.Write(s_Filters.Count);
            foreach (string str in s_Filters)
                writer.Write(str);

            writer.Write((int)s_FilterPenalty);
            writer.Write((int)s_MacroPenalty);
            writer.Write(s_MaxMsgs);
            writer.Write(s_ChatSpam);
            writer.Write(s_MsgSpam);
            writer.Write(s_RequestSpam);
            writer.Write(s_FilterBanLength);
            writer.Write(s_FilterWarnings);
            writer.Write(s_AntiMacroDelay);
            writer.Write(s_IrcPort);
            writer.Write(s_IrcMaxAttempts);
            writer.Write(s_IrcEnabled);
            writer.Write(s_IrcAutoConnect);
            writer.Write(s_IrcAutoReconnect);
            writer.Write(s_FilterSpeech);
            writer.Write(s_FilterMsg);
            writer.Write(s_Debug);
            writer.Write(s_LogChat);
            writer.Write(s_LogPms);
            writer.Write((int)s_IrcStaffColor);
            writer.Write(s_IrcServer);
            writer.Write(s_IrcRoom);
            writer.Write(s_IrcNick);
            writer.Write(s_TotalChats+1);

            writer.Close();
        }
开发者ID:guy489,项目名称:runuot2a,代码行数:49,代码来源:Data.cs


示例9: SaveGuilds

        private static void SaveGuilds(string guildBase)
        {
            string guildIdxPath = Path.Combine(guildBase, "Guilds.idx");
            string guildBinPath = Path.Combine(guildBase, "Guilds.bin");

            GenericWriter idx;
            GenericWriter bin;

            if (!Directory.Exists(guildBase))
                Directory.CreateDirectory(guildBase);

            if ( SaveType == SaveOption.Normal )
            {
                idx = new BinaryFileWriter( guildIdxPath, false );
                bin = new BinaryFileWriter( guildBinPath, true );
            }
            else
            {
                idx = new AsyncWriter( guildIdxPath, false );
                bin = new AsyncWriter( guildBinPath, true );
            }

            idx.Write( (int) BaseGuild.List.Count );
            foreach ( BaseGuild guild in BaseGuild.List.Values )
            {
                long start = bin.Position;

                idx.Write( (int)0 );//guilds have no typeid
                idx.Write( (int)guild.Id );
                idx.Write( (long)start );

                guild.Serialize( bin );

                idx.Write( (int) (bin.Position - start) );
            }

            idx.Close();
            bin.Close();
        }
开发者ID:BackupTheBerlios,项目名称:sunuo-svn,代码行数:39,代码来源:World.cs


示例10: SaveMobiles

        private static void SaveMobiles(string mobileBase)
        {
            ArrayList restock = new ArrayList();

            GenericWriter idx;
            GenericWriter tdb;
            GenericWriter bin;

            if (!Directory.Exists(mobileBase))
                Directory.CreateDirectory(mobileBase);

            string mobIdxPath = Path.Combine(mobileBase, "Mobiles.idx");
            string mobTdbPath = Path.Combine(mobileBase, "Mobiles.tdb");
            string mobBinPath = Path.Combine(mobileBase, "Mobiles.bin");

            if ( SaveType == SaveOption.Normal )
            {
                idx = new BinaryFileWriter( mobIdxPath, false );
                tdb = new BinaryFileWriter( mobTdbPath, false );
                bin = new BinaryFileWriter( mobBinPath, true );
            }
            else
            {
                idx = new AsyncWriter( mobIdxPath, false );
                tdb = new AsyncWriter( mobTdbPath, false );
                bin = new AsyncWriter( mobBinPath, true );
            }

            idx.Write( (int) m_Mobiles.Count );
            foreach ( Mobile m in m_Mobiles.Values )
            {
                long start = bin.Position;

                idx.Write( (int) m.m_TypeRef );
                idx.Write( (int) m.Serial );
                idx.Write( (long) start );

                m.Serialize( bin );

                idx.Write( (int) (bin.Position - start) );

                if ( m is IVendor )
                {
                    if ( ((IVendor)m).LastRestock + ((IVendor)m).RestockDelay < DateTime.Now )
                        restock.Add( m );
                }

                m.FreeCache();
            }

            tdb.Write( (int) m_MobileTypes.Count );
            for ( int i = 0; i < m_MobileTypes.Count; ++i )
                tdb.Write( ((Type)m_MobileTypes[i]).FullName );

            for (int i=0;i<restock.Count;i++)
            {
                IVendor vend = (IVendor)restock[i];
                vend.Restock();
                vend.LastRestock = DateTime.Now;
            }

            idx.Close();
            tdb.Close();
            bin.Close();
        }
开发者ID:BackupTheBerlios,项目名称:sunuo-svn,代码行数:65,代码来源:World.cs


示例11: SaveBackup

        public static void SaveBackup( Mobile mobile, ArrayList ArgsList )
        {
            MC.SetProcess( Process.SaveBackup );

            if ( !Directory.Exists( MC.BackupDirectory ) )
                Directory.CreateDirectory( MC.BackupDirectory );

            string path = Path.Combine( MC.BackupDirectory, "Backup.mbk" );

            mobile.SendMessage( "Creating backup file..." );

            MC.CheckSpawners();

            ArrayList SpawnerList = CompileSpawnerList();

            GenericWriter writer;

            try
            {
                writer = new BinaryFileWriter( path, true );
            }
            catch(Exception ex)
            {
                MC.SetProcess( Process.None );

                ArgsList[2] = "Create Backup File";
                ArgsList[4] = String.Format( "Exception caught:\n{0}", ex );

                mobile.SendGump( new FileMenuGump( mobile, ArgsList ) );

                return;
            }

            writer.Write( SpawnerList.Count );

            try
            {
                foreach ( MegaSpawner megaSpawner in SpawnerList )
                    Serialize( megaSpawner, writer );
            }
            catch{}

            writer.Close();

            MC.SetProcess( Process.None );

            ArgsList[2] = "Create Backup File";
            ArgsList[4] = "All Mega Spawners have now been backed up to the backup file.";

            mobile.SendGump( new FileMenuGump( mobile, ArgsList ) );
        }
开发者ID:cynricthehun,项目名称:UOLegends,代码行数:51,代码来源:BackupSystem.cs


示例12: Save

		public static void Save( WorldSaveEventArgs args )
		{
			if( !Directory.Exists( "Saves/ACC" ) )
				Directory.CreateDirectory( "Saves/ACC" );

			string filename = "acc.sav";
			string path [email protected]"Saves/ACC/";
			string pathNfile = path+filename;
			DateTime start = DateTime.Now;

			Console.WriteLine();
			Console.WriteLine();
			Console.WriteLine( "----------" );
			Console.WriteLine( "Saving ACC..." );

			try
			{
				using( FileStream m_FileStream = new FileStream( pathNfile, FileMode.OpenOrCreate, FileAccess.Write ) )
				{
					BinaryFileWriter writer = new BinaryFileWriter( m_FileStream, true );

					writer.Write( (int) m_RegSystems.Count );
					foreach( DictionaryEntry de in m_RegSystems )
					{
						Type t = ScriptCompiler.FindTypeByFullName( (string)de.Key );
						if( t != null )
						{
							writer.Write( (string)de.Key );
							writer.Write( (bool)de.Value );

							if( (bool)m_RegSystems[(string)de.Key] )
							{
								ACCSystem system = (ACCSystem)Activator.CreateInstance( t );
								if( system != null )
									system.StartSave( path );
							}
						}

					}

					writer.Close();
					m_FileStream.Close();
				}

				Console.WriteLine( "Done in {0:F1} seconds.", (DateTime.Now-start).TotalSeconds );
				Console.WriteLine( "----------" );
				Console.WriteLine();
			}
			catch( Exception err )
			{
				Console.WriteLine( "Failed. Exception: "+err );
			}
		}
开发者ID:greeduomacro,项目名称:cov-shard-svn-1,代码行数:53,代码来源:ACC.cs


示例13: SaveItems

        protected void SaveItems(SaveMetrics metrics)
        {
            Dictionary<Serial, Item> items = World.Items;

            GenericWriter idx;
            GenericWriter tdb;
            GenericWriter bin;

            if (UseSequentialWriters)
            {
                idx = new BinaryFileWriter( World.ItemIndexPath, false );
                tdb = new BinaryFileWriter( World.ItemTypesPath, false );
                bin = new BinaryFileWriter( World.ItemDataPath, true );
            } else {
                idx = new AsyncWriter( World.ItemIndexPath, false );
                tdb = new AsyncWriter( World.ItemTypesPath, false );
                bin = new AsyncWriter( World.ItemDataPath, true );
            }

            idx.Write( ( int ) items.Count );
            foreach ( Item item in items.Values ) {
                if ( item.Decays && item.Parent == null && item.Map != Map.Internal && ( item.LastMoved + item.DecayTime ) <= DateTime.Now ) {
                    _decayQueue.Enqueue( item );
                }

                long start = bin.Position;

                idx.Write( ( int ) item.m_TypeRef );
                idx.Write( ( int ) item.Serial );
                idx.Write( ( long ) start );

                item.Serialize( bin );

                if ( metrics != null ) {
                    metrics.OnItemSaved( ( int ) ( bin.Position - start ) );
                }

                idx.Write( ( int ) ( bin.Position - start ) );

                item.FreeCache();
            }

            tdb.Write( ( int ) World.m_ItemTypes.Count );
            for ( int i = 0; i < World.m_ItemTypes.Count; ++i )
                tdb.Write( World.m_ItemTypes[i].FullName );

            idx.Close();
            tdb.Close();
            bin.Close();
        }
开发者ID:Godkong,项目名称:RunUO,代码行数:50,代码来源:StandardSaveStrategy.cs


示例14: HandleError

        private static void HandleError(Exception error, string name, object[] loadinfo)
        {
            bool sep = loadinfo == null;
            bool nerr = error == null;
            string type = sep ? "seperate savefile" : "save module";
            string placename = sep ? "the file can be found at" : "this module was indexed under the name";

            Console.WriteLine();
            if (nerr)
            {
                Console.WriteLine("The loading and saving methods of a {0} are inconsistent, {1} \"{2}\".", type, placename, name);
                if (!sep && (bool)loadinfo[3])
                    Console.WriteLine("More data was read than written.");
                else
                    Console.WriteLine("More data was written than read.");
            }
            else
            {
                Console.WriteLine("During the loading of a {0} an exception was caught, {1} \"{2}\".", type, placename, name);
                Console.WriteLine("The following error was caught:");
                Console.WriteLine(error.ToString());
            }

            Console.WriteLine("Please Review your Save/Load methods for this {0}", sep ? "file" : "module");

            if (!m_IgnoreErrors)
            {
                string str = sep ? "Do you wish to continue loading with faulty data(Y), or stop the program(N)?" : "Do you wish to remove this module and restart(Y), or continue loading with faulty data(N)?";
                Console.WriteLine(str);

                if (Console.ReadKey(true).Key == ConsoleKey.Y)
                {
                    if (!sep)
                    {
                        int oldcount = (int)loadinfo[0];
                        int location = (int)loadinfo[1];
                        BinaryFileReader idxreader = (BinaryFileReader)loadinfo[2];

                        int newcount = oldcount - 1;
                        string[] indexarray = new string[newcount];
                        long[] binposarray = new long[newcount];
                        long[] finposarray = new long[newcount];

                        idxreader.Seek(0, SeekOrigin.Begin);
                        idxreader.ReadInt();
                        int loc = 0;
                        for (int j = 0; j < oldcount; j++)
                        {
                            if (j != location)
                            {
                                indexarray[loc] = idxreader.ReadString();
                                binposarray[loc] = idxreader.ReadLong();
                                finposarray[loc] = idxreader.ReadLong();
                                loc++;
                            }
                            else
                            {
                                idxreader.ReadString();
                                idxreader.ReadLong();
                                idxreader.ReadLong();
                            }
                        }
                        idxreader.Close();
                        GenericWriter idxwriter = new BinaryFileWriter(m_FullPath + ".idx", true);

                        idxwriter.Write(newcount);
                        for (int j = 0; j < newcount; j++)
                        {
                            idxwriter.Write(indexarray[j]);
                            idxwriter.Write(binposarray[j]);
                            idxwriter.Write(finposarray[j]);
                        }
                        idxwriter.Close();

                        Process.Start(Core.ExePath, Core.Arguments);
                        Core.Process.Kill();
                    }
                }

                else if (sep)
                    Core.Process.Kill();
            }
        }
开发者ID:kamronbatman,项目名称:Defiance-AOS-Pre-2012,代码行数:83,代码来源:CustomSaving.cs


示例15: CustomSave

        private static void CustomSave()
        {
            DirectoryCheck(m_FilePath);

            GenericWriter idx = new BinaryFileWriter(m_FullPath + ".idx", true);
            GenericWriter bin = new BinaryFileWriter(m_FullPath + ".bin", true);

            idx.Write(m_DataDictionary.Count);
            foreach (KeyValuePair<string, SaveData> kv in m_DataDictionary)
            {
                idx.Write(kv.Key);
                idx.Write(bin.Position);
                kv.Value.SaveMethod(bin);
                idx.Write(bin.Position);
            }

            idx.Close();
            bin.Close();
        }
开发者ID:kamronbatman,项目名称:Defiance-AOS-Pre-2012,代码行数:19,代码来源:CustomSaving.cs


示例16: Save

        public static void Save()
        {
            log.Info("Saving...");
            log.Info(String.Format("idxPath: '{0}'", idxPath));
            log.Info(String.Format("binPath: '{0}'", binPath));

            if (!Directory.Exists(Path.Combine("Saves", "Donation")))
                Directory.CreateDirectory(Path.Combine("Saves", "Donation"));

            GenericWriter idx = new BinaryFileWriter(idxPath, false);
            GenericWriter bin = new BinaryFileWriter(binPath, true);

            log.Info(String.Format("m_ClaimedOrders.Count: '{0}'", m_ClaimedOrders.Count));
            idx.Write((int)m_ClaimedOrders.Count);
            foreach (ClaimedOrder claimed in m_ClaimedOrders)
            {
                long startPos = bin.Position;
                claimed.Serialize(bin);
                idx.Write((long)startPos);
                idx.Write((int)(bin.Position - startPos));
            }
            idx.Close();
            bin.Close();
            log.Info("Saving done.");
        }
开发者ID:kamronbatman,项目名称:Defiance-AOS-Pre-2012,代码行数:25,代码来源:Donation.cs


示例17: Serialize

		public void Serialize()
		{
			//Console.WriteLine("[Vote System]: Saving Config...");

			FileInfo info = new FileInfo("Data\\VoteSystem.cfg");

			if (!info.Exists)
				info.Create().Close();

			using(FileStream fs = info.Open(FileMode.Truncate, FileAccess.Write))
			{
				BinaryFileWriter bin = new BinaryFileWriter(fs, true);
				
				bin.Write((int)0);

				bin.Write((string)_DefaultName);
				bin.Write((string)_DefaultURL);
				bin.Write((TimeSpan)_DefaultCoolDown);

				bin.Close();
			}

			//Console.WriteLine("[Vote System]: Done.");
		}
开发者ID:FreeReign,项目名称:realmofdarkness,代码行数:24,代码来源:VoteConfig.cs


示例18: Save

        public static void Save(WorldSaveEventArgs e)
        {
            if (XmlAttach.MobileAttachments == null && XmlAttach.ItemAttachments == null) return;

            CleanUp();

            if (!Directory.Exists("Saves/Attachments"))
                Directory.CreateDirectory("Saves/Attachments");

            string filePath = Path.Combine("Saves/Attachments", "Attachments.bin");        // the attachment serializations
            string imaPath = Path.Combine("Saves/Attachments", "Attachments.ima");         // the item/mob attachment tables
            string fpiPath = Path.Combine("Saves/Attachments", "Attachments.fpi");        // the file position indices

            BinaryFileWriter writer = null;
            BinaryFileWriter imawriter = null;
            BinaryFileWriter fpiwriter = null;

            try
            {
                writer = new BinaryFileWriter(filePath, true);
                imawriter = new BinaryFileWriter(imaPath, true);
                fpiwriter = new BinaryFileWriter(fpiPath, true);

            }
            catch (Exception err)
            {
                ErrorReporter.GenerateErrorReport(err.ToString());
                return;
            }

            if (writer != null && imawriter != null && fpiwriter != null)
            {
                // save the current global attachment serial state
                ASerial.GlobalSerialize(writer);

                // remove all deleted attachments
                XmlAttach.FullDefrag();

                // save the attachments themselves
                if (XmlAttach.AllAttachments != null)
                {
                    writer.Write(XmlAttach.AllAttachments.Count);

                    object[] valuearray = new object[XmlAttach.AllAttachments.Count];
                    XmlAttach.AllAttachments.Values.CopyTo(valuearray, 0);

                    object[] keyarray = new object[XmlAttach.AllAttachments.Count];
                    XmlAttach.AllAttachments.Keys.CopyTo(keyarray, 0);

                    for (int i = 0; i < keyarray.Length; i++)
                    {
                        // write the key
                        writer.Write((int)keyarray[i]);

                        XmlAttachment a = valuearray[i] as XmlAttachment;

                        // write the value type
                        writer.Write((string)a.GetType().ToString());

                        // serialize the attachment itself
                        a.Serialize(writer);

                        // save the fileposition index
                        fpiwriter.Write((long)writer.Position);
                    }
                }
                else
                {
                    writer.Write((int)0);
                }

                writer.Close();

                // save the hash table info for items and mobiles
                // mobile attachments
                if (XmlAttach.MobileAttachments != null)
                {
                    imawriter.Write(XmlAttach.MobileAttachments.Count);

                    object[] valuearray = new object[XmlAttach.MobileAttachments.Count];
                    XmlAttach.MobileAttachments.Values.CopyTo(valuearray, 0);

                    object[] keyarray = new object[XmlAttach.MobileAttachments.Count];
                    XmlAttach.MobileAttachments.Keys.CopyTo(keyarray, 0);

                    for (int i = 0; i < keyarray.Length; i++)
                    {
                        // write the key
                        imawriter.Write((Mobile)keyarray[i]);

                        // write out the attachments
                        ArrayList alist = (ArrayList)valuearray[i];

                        imawriter.Write((int)alist.Count);
                        foreach (XmlAttachment a in alist)
                        {
                            // write the attachment serial
                            imawriter.Write((int)a.Serial.Value);

                            // write the value type
//.........这里部分代码省略.........
开发者ID:greeduomacro,项目名称:vivre-uo,代码行数:101,代码来源:XmlAttach.cs


示例19: SaveGuilds

        protected void SaveGuilds(SaveMetrics metrics)
        {
            GenericWriter idx;
            GenericWriter bin;

            if (UseSequentialWriters)
            {
                idx = new BinaryFileWriter( World.GuildIndexPath, false );
                bin = new BinaryFileWriter( World.GuildDataPath, true );
            } else {
                idx = new AsyncWriter( World.GuildIndexPath, false );
                bin = new AsyncWriter( World.GuildDataPath, true );
            }

            idx.Write( ( int ) BaseGuild.List.Count );
            foreach ( BaseGuild guild in BaseGuild.List.Values ) {
                long start = bin.Position;

                idx.Write( ( int ) 0 );//guilds have no typeid
                idx.Write( ( int ) guild.Id );
                idx.Write( ( long ) start );

                guild.Serialize( bin );

                if ( metrics != null ) {
                    metrics.OnGuildSaved( ( int ) ( bin.Position - start ) );
                }

                idx.Write( ( int ) ( bin.Position - start ) );
            }

            idx.Close();
            bin.Close();
        }
开发者ID:Godkong,项目名称:RunUO,代码行数:34,代码来源:StandardSaveStrategy.cs


示例20: Save

		public static void Save()
		{
			if (!Directory.Exists("Saves/CTFScore/"))
				Directory.CreateDirectory("Saves/CTFScore/");

			string idxPath = Path.Combine( "Saves/CTFScore", "CTFScore.idx" );
			string binPath = Path.Combine( "Saves/CTFScore", "CTFScore.bin" );

			GenericWriter idx = new BinaryFileWriter(idxPath, false);
			GenericWriter bin = new BinaryFileWriter(binPath, true);

			idx.Write( (int)Players.Values.Count );
			foreach ( CTFPlayer player in Players.Values )
			{
				long startPos = bin.Position;
				player.Serialize( bin );
				idx.Write( (long)startPos );
				idx.Write( (int)(bin.Position - startPos) );
			}
			idx.Close();
			bin.Close();
		}
开发者ID:kamronbatman,项目名称:DefianceUO-Pre1.10,代码行数:22,代码来源:CTFScore.cs



注:本文中的Server.BinaryFileWriter类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# Server.BuffInfo类代码示例发布时间:2022-05-26
下一篇:
C# Server.AosSkillBonuses类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap