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; }
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 }
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}"); }
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); }
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}"); }
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; }