Example #1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="baseWorld"></param>
        public static void RemoveWorld( BaseWorld world )
        {
            if ( world == null )
                throw new Exception( "OneServer.RemoveWorld(...) - world == null error!" );

            BaseWorld matchWorld = null;

            s_OnlyLockAddRemove.Enter();
            {
                List<BaseWorld> worldList = new List<BaseWorld>();

                foreach ( BaseWorld itemWorld in worldList )
                {
                    if ( itemWorld != world )
                        worldList.Add( itemWorld );
                    else
                        matchWorld = world;
                }

                s_WorldArray = worldList.ToArray();
            }
            s_OnlyLockAddRemove.Exit();

            if ( matchWorld != null && s_bIsInitWorld == true )
            {
                // 停止世界线程
                matchWorld.StopThreadPool();

                // 停止保存数据的时间片
                world.StopSaveTimeSlice();

                // 停止网络客户端在线状态的检查
                world.StopCheckAllAliveTime();

                // 在结束世界之前,保存一次数据
                matchWorld.OnSave();
                matchWorld.OnExit();
            }
        }