Exemplo n.º 1
0
 public void Stop()
 {
     if (_room == null || !_running)
     {
         return;
     }
     ServersMgr.Remove(this);
     _running = false;
     _room.Shutdown();
     _rLoop.Join();
     Thread.Sleep(50);
     _room.PlayerAdded         -= Room_PlayerAdded;
     _room.PlayerRemoved       -= Room_PlayerRemoved;
     _room.ConstructNetData    -= Room_ConstructNetData;
     _room.ServerStatusChanged -= Room_ServerStatusChanged;
     foreach (var item in _players.Values)
     {
         item.Destroy();
     }
     _players.Clear();
     _objects.Destroy();
     lock (_updatables)
         _updatables.Clear();
     _cfg     = null;
     _room    = null;
     _rLoop   = null;
     _script  = null;
     _objects = null;
 }
Exemplo n.º 2
0
 private void Player_FinishedSwitchingRooms(Room obj)
 {
     _rPlayer = null;
     if (ServersMgr.Contains(obj.Guid))
     {
         _rPlayer = ServersMgr.GetPlayer(obj.Guid, _player.Id);
     }
     //if (!(_rPlayer is MapPlayer)) return;
     //MasterPlayer target; DB_User user;
     //foreach (var item in _save.Friends)
     //{
     //    if (_server.TryGetByUserId(item.Key, out target))
     //    {
     //        if (item.Value.Item1 == 1)
     //        {
     //            _player.UpdateFriend(_status.Fill(target, OnlineStatus.Online));
     //            _player.UpdateFriend(_status.Fill(this, OnlineStatus.Online));
     //        }
     //        else if (item.Value.Item1 == 25)
     //            _player.UpdateFriend(_status.Fill(target, OnlineStatus.Incoming));
     //    }
     //    else
     //    {
     //        if (ServerDB.SelectUser(item.Key, out user))
     //        {
     //            if (item.Value.Item1 == 1)
     //                _player.UpdateFriend(_status.Fill(user, OnlineStatus.Offline));
     //            else if (item.Value.Item1 == 25)
     //                _player.UpdateFriend(_status.Fill(user, OnlineStatus.Incoming));
     //        }
     //    }
     //}
 }
        public MasterServer()
        {
            _users   = new Dictionary <int, MasterPlayer>();
            _players = new Dictionary <ushort, MasterPlayer>();
            ServersMgr.Add(this);
#if DEBUG
            if (!(Debug.Logger is DefaultConsoleLogger))
            {
                Debug.Logger = new DefaultConsoleLogger();
            }
#endif
        }
Exemplo n.º 4
0
 private void Room_ServerStatusChanged()
 {
     if (_room.ServerStatus == ConnectionStatus.Connected)
     {
         ServersMgr.Add(this);
         _id = _room.RoomId.ToString().Normalize(8);
     }
     else
     {
         ServersMgr.Remove(this);
     }
     ServerLogger.LogServer(this, $" Status {_room.ServerStatus}");
 }
Exemplo n.º 5
0
        public MasterServer()
        {
            m_bans_timer = new Timer(DeleteBansTimer, null, Timeout.Infinite, Timeout.Infinite);
            m_users      = new ConcurrentDictionary <int, MasterPlayer>();
            m_players    = new ConcurrentDictionary <ushort, MasterPlayer>();
            ServersMgr.Add(this);
#if DEBUG
            if (!(Debug.Logger is DefaultConsoleLogger))
            {
                Debug.Logger = new DefaultConsoleLogger();
            }
#endif
            m_bans_timer.Change(0, Timeout.Infinite);
        }
Exemplo n.º 6
0
        private void Room_ServerStatusChanged()
        {
            switch (_room.ServerStatus)
            {
            case ConnectionStatus.Connected:
                ServersMgr.Add(this);
                _id = _room.RoomId.ToString().Normalize(8);
                break;

            case ConnectionStatus.Disconnecting:
                ServersMgr.Remove(this);
                break;
            }
            ServerLogger.LogServer(this, $" Status {_room.ServerStatus}");
        }
Exemplo n.º 7
0
 public void Stop()
 {
     if (_room == null || !_running)
     {
         return;
     }
     ServersMgr.Remove(this);
     _running = false;
     _room.Shutdown();
     _rLoop.Join();
     Thread.Sleep(50);
     _room.PlayerAdded         -= Room_PlayerAdded;
     _room.PlayerRemoved       -= Room_PlayerRemoved;
     _room.ConstructNetData    -= Room_ConstructNetData;
     _room.ServerStatusChanged -= Room_ServerStatusChanged;
     _players.Clear();
     _cfg    = null;
     _room   = null;
     _rLoop  = null;
     _script = null;
 }