private string ConnectionPlayersCommand(int id) { if (!Server.ConnectionStorage.ConnectionExists(id)) { return("No connection with id " + id + " found!"); } var connection = Server.ConnectionStorage.GetConnectionById(id); if (Data.IsSynchronized(connection)) { return("Connection is not synchronized with player module!"); } var playerInfo = Data.GetPlayerInfo(connection); string output = "Players on connection " + id + " (" + playerInfo.Players.Count + ")"; if (playerInfo.Players.Count != 0) { output += "\n "; } output += String.Join("\n ", playerInfo.Players.Select(p => p.ToLongString())); return(output); }
private string AddPlayerCommand(string name, int id) { if (!Server.ConnectionStorage.ConnectionExists(id)) { return("No connection with id " + id + " found!"); } var connection = Server.ConnectionStorage.GetConnectionById(id); if (!Data.IsSynchronized(connection)) { return("Connection is not synchronized with player module!"); } Logic.AddPlayer(connection, name).Wait(); return("Player '" + name + "' added to connection with id " + id + "!"); }
public override async Task HandleDisconnect(IConnection client) { using (var alock = await Data.Synchronizer.SetStateAsync(ModuleState.Writing)) { if (Data.IsSynchronized(client)) { var players = Data.ConnectionDic[client.Id].Players; Data.ConnectionDic.Remove(client.Id); List <Task> tasks = new List <Task>(); foreach (var p in players) { Data.RemovePlayer(p); tasks.Add(BroadcastMessage(Messages.PlayerRemoved(p))); } await Task.WhenAll(tasks); } } }