Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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 + "!");
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }