fCraft.WorldManager.SaveWorldList C# (CSharp) Method

SaveWorldList() public static method

Saves the current world list to worlds.xml. Thread-safe.
public static SaveWorldList ( ) : void
return void
        public static void SaveWorldList()
        {
            const string worldListTempFileName = Paths.WorldListFileName + ".tmp";
            // Save world list
            lock ( SyncRoot ) {
                XDocument doc = new XDocument();
                XElement root = new XElement( "fCraftWorldList" );

                foreach ( World world in Worlds ) {
                    XElement temp = new XElement( "World" );
                    temp.Add( new XAttribute( "name", world.Name ) );

                    if ( world.AccessSecurity.HasRestrictions ) {
                        temp.Add( world.AccessSecurity.Serialize( AccessSecurityXmlTagName ) );
                    }
                    if ( world.BuildSecurity.HasRestrictions ) {
                        temp.Add( world.BuildSecurity.Serialize( BuildSecurityXmlTagName ) );
                    }

                    if ( world.BackupInterval != WorldManager.DefaultBackupInterval ) {
                        temp.Add( new XAttribute( "backup", world.BackupInterval.ToTickString() ) );
                    }

                    if ( world.NeverUnload ) {
                        temp.Add( new XAttribute( "noUnload", true ) );
                    }
                    if ( world.VisitCount > 0 ) {
                        temp.Add( new XAttribute( "visitCount", world.VisitCount ) );
                    }
                    if ( world.IsHidden ) {
                        temp.Add( new XAttribute( "hidden", true ) );
                    }
                    temp.Add( world.BlockDB.SaveSettings() );

                    temp.Add( Physics.SaveSettings( world ) );
                    temp.Add( Physics.SaveOtherSettings( world ) );

                    temp.Add( world.SaveRealmState() );
                    if ( world.Greeting != null ) {
                        temp.Add( new XElement( "Greeting", world.Greeting ) );
                    }
                    World world1 = world;
                    foreach ( Rank mainedRank in RankManager.Ranks.Where( r => r.MainWorld == world1 ) ) {
                        temp.Add( new XElement( RankMainXmlTagName, mainedRank.FullName ) );
                    }

                    if ( !String.IsNullOrEmpty( world.LoadedBy ) ) {
                        temp.Add( new XElement( "LoadedBy", world.LoadedBy ) );
                    }
                    if ( world.LoadedOn != DateTime.MinValue ) {
                        temp.Add( new XElement( "LoadedOn", world.LoadedOn.ToUnixTime() ) );
                    }
                    if ( !String.IsNullOrEmpty( world.MapChangedBy ) ) {
                        temp.Add( new XElement( "MapChangedBy", world.MapChangedBy ) );
                    }
                    if ( world.MapChangedOn != DateTime.MinValue ) {
                        temp.Add( new XElement( "MapChangedOn", world.MapChangedOn.ToUnixTime() ) );
                    }

                    XElement elEnv = new XElement( EnvironmentXmlTagName );
                    if ( world.CloudColor > -1 )
                        elEnv.Add( new XAttribute( "cloud", world.CloudColor ) );
                    if ( world.FogColor > -1 )
                        elEnv.Add( new XAttribute( "fog", world.FogColor ) );
                    if ( world.SkyColor > -1 )
                        elEnv.Add( new XAttribute( "sky", world.SkyColor ) );
                    if ( world.EdgeLevel > -1 )
                        elEnv.Add( new XAttribute( "level", world.EdgeLevel ) );
                    if ( world.Terrain != null )
                        elEnv.Add( new XAttribute( "terrain", world.Terrain ) );
                    if ( world.EdgeBlock != Block.Water )
                        elEnv.Add( new XAttribute( "edge", world.EdgeBlock ) );
                    if ( elEnv.HasAttributes ) {
                        temp.Add( elEnv );
                    }
                    root.Add( temp );
                }
                root.Add( new XAttribute( "main", MainWorld.Name ) );

                doc.Add( root );
                doc.Save( worldListTempFileName );
                Paths.MoveOrReplace( worldListTempFileName, Paths.WorldListFileName );
            }
        }

Usage Example

Example #1
0
 public bool Unlock([NotNull] Player player)
 {
     if (player == null)
     {
         throw new ArgumentNullException("player");
     }
     lock ( lockLock ) {
         if (IsLocked)
         {
             UnlockedBy = player.Name;
             UnlockedOn = DateTime.UtcNow;
             IsLocked   = false;
             WorldManager.SaveWorldList();
             Players.Message("&WMap was unlocked by {0}", player.ClassyName);
             Logger.Log(LogType.UserActivity,
                        "World \"{0}\" was unlocked by {1}",
                        Name, player.Name);
             return(true);
         }
         else
         {
             return(false);
         }
     }
 }
All Usage Examples Of fCraft.WorldManager::SaveWorldList