示例#1
0
文件: Data.cs 项目: m-s-z/SE2
        public void HandleOnCommunicationServer(Messages.CommunicationServer.IConnection connection, Messages.CommunicationServer.IReceiver receiver = null)
        {
            IReceiver rec        = connection.Receivers.Find(p => p.Id == this.playerId);
            var       serializer = new Messages.XmlHandling.Serializer(this);

            rec.SendMessage(serializer.Serialize());
        }
        public void HandleOnCommunicationServer(Messages.CommunicationServer.IConnection server, IReceiver receiver)
        {
            var serializer = new Messages.XmlHandling.Serializer(this);
            var gameId     = receiver.GameId;
            var game       = server.Games[gameId];

            game.GameMaster.SendMessage(serializer.Serialize());
        }
示例#3
0
        public void HandleOnCommunicationServer(Messages.CommunicationServer.IConnection server, IReceiver receiver)
        {
            var player = server.Receivers.Find(p => p.Id == this.playerId);

            if (player == null)
            {
                return;
            }
            player.GameId = receiver.GameId;
            var serializer = new Messages.XmlHandling.Serializer(this);

            player.SendMessage(serializer.Serialize());
            server.Games[receiver.GameId].Players.Add(player);
        }
        public void HandleOnCommunicationServer(Messages.CommunicationServer.IConnection server, IReceiver receiver)
        {
            var serializer             = new Messages.XmlHandling.Serializer(this);
            List <IReceiver> receivers = new List <IReceiver>();

            foreach (Player p in this.Players)
            {
                receivers.Add(server.Receivers.Find(r => r.Id == p.id));
            }
            var    rec = server.Receivers.Find(r => r.Id == this.playerId);
            string msg = serializer.Serialize();

            rec.SendMessage(msg);
        }
示例#5
0
        public void HandleOnCommunicationServer(Messages.CommunicationServer.IConnection server, Messages.CommunicationServer.IReceiver receiver)
        {
            var game = server.CreateGame(receiver, this);

            if (game == null)
            {
                var msg        = new RejectGameRegistration();
                var serializer = new Messages.XmlHandling.Serializer(msg);
                receiver.SendMessage(serializer.Serialize());
            }
            else
            {
                var msg        = new ConfirmGameRegistration(game.GameId);
                var serializer = new Messages.XmlHandling.Serializer(msg);
                receiver.SendMessage(serializer.Serialize());
            }
        }
示例#6
0
文件: JoinGame.cs 项目: m-s-z/SE2
        public void HandleOnCommunicationServer(Messages.CommunicationServer.IConnection server, IReceiver receiver)
        {
            lock (server.PlayerCountLock)
            {
                server.PlayerCount++;
                receiver.Id = server.PlayerCount;
            }
            this.playerId          = receiver.Id;
            this.playerIdSpecified = true;
            var gameList = server.Games.Where(g => g.Value.GameName == this.gameName).ToList();

            if (gameList.Count == 1)
            {
                var game       = gameList[0].Value;
                var serializer = new Messages.XmlHandling.Serializer(this);
                game.GameMaster.SendMessage(serializer.Serialize());
            }
            //else send reject message when defined in specification
        }
示例#7
0
        // Handling is not done
        public void HandleOnCommunicationServer(Messages.CommunicationServer.IConnection server, IReceiver receiver)
        {
            var    serializer = new Messages.XmlHandling.Serializer(this);
            string msg        = serializer.Serialize();

            try
            {
                ulong gameId = receiver.GameId;
                var   game   = server.Games[gameId];

                foreach (var rec in game.Players)
                {
                    rec.SendMessage(msg);
                }
                server.Receivers.Remove(receiver);
                server.Games.Remove(gameId);
            }catch (Exception)
            {
                Console.WriteLine("Error while notifying other clients, gm disconnected");
            }
        }
示例#8
0
        public void HandleOnCommunicationServer(Messages.CommunicationServer.IConnection server, IReceiver receiver)
        {
            //gameid == 0 -> player is not assigned to any game
            if (receiver.GameId == 0)
            {
                server.Receivers.Remove(receiver);
                return;
            }
            var    serializer = new Messages.XmlHandling.Serializer(this);
            string msg        = serializer.Serialize();
            ulong  gameId     = receiver.GameId;
            var    game       = server.Games[gameId];

            game.Players.Remove(receiver);
            server.Receivers.Remove(receiver);
            try
            {
                foreach (var player in game.Players)
                {
                    if (player.Status == true)
                    {
                        player.SendMessage(msg);
                    }
                }
                game.GameMaster.SendMessage(msg);
                if (game.Players.Count == 0)
                {
                    server.Games.Remove(game.GameId);
                }
            }
            catch (Exception)
            {
                Console.WriteLine("Error while notifying other clients");
            }
            Console.WriteLine("Games: {0}", game.Players.Count);
        }