fCraft.World.UnloadMap C# (CSharp) Method

UnloadMap() private method

private UnloadMap ( bool expectedPendingFlag ) : void
expectedPendingFlag bool
return void
        internal void UnloadMap( bool expectedPendingFlag )
        {
            lock ( SyncRoot ) {
                if ( expectedPendingFlag != IsPendingMapUnload )
                    return;
                SaveMap();
                Map = null;
                IsPendingMapUnload = false;
            }
            Server.RequestGC();
        }

Usage Example

Example #1
0
        internal static void ReplaceWorld([NotNull] World oldWorld, [NotNull] World newWorld)
        {
            if (oldWorld == null)
            {
                throw new ArgumentNullException("oldWorld");
            }
            if (newWorld == null)
            {
                throw new ArgumentNullException("newWorld");
            }

            lock ( SyncRoot ) {
                if (oldWorld == newWorld)
                {
                    throw new WorldOpException(oldWorld.Name, WorldOpExceptionCode.NoChangeNeeded);
                }

                if (!WorldIndex.ContainsValue(oldWorld))
                {
                    throw new WorldOpException(oldWorld.Name, WorldOpExceptionCode.WorldNotFound);
                }

                if (WorldIndex.ContainsValue(newWorld))
                {
                    throw new InvalidOperationException("New world already exists on the list.");
                }

                // cycle load/unload on the new world to save it under the new name
                newWorld.Name = oldWorld.Name;
                if (newWorld.Preload)
                {
                    newWorld.SaveMap();
                }
                else
                {
                    newWorld.UnloadMap(false);
                }

                WorldIndex[oldWorld.Name.ToLower()] = newWorld;
                oldWorld.Map = null;

                // change the main worlds, if needed
                if (oldWorld == MainWorld)
                {
                    MainWorld = newWorld;
                }
                foreach (Rank rank in RankManager.Ranks)
                {
                    if (rank.MainWorld == oldWorld)
                    {
                        rank.MainWorld = newWorld;
                    }
                }

                SaveWorldList();
                UpdateWorldList();
            }
        }
All Usage Examples Of fCraft.World::UnloadMap