예제 #1
0
		public PokerRoom JoinRoom(PokerRoom room)
		{
			var user = _users.Where(x => x.Key == Context.ConnectionId).Select(x => x.Value).FirstOrDefault();

			if (user == null)
				throw new Exception("No user with this connection Id has joined yet.");

			_logger.Info("{0} joined {1} room", user.Email, room.Name);

			room = _rooms.FirstOrDefault(x => x.Name == room.Name) ?? room;

			if (!_rooms.Contains(room))
				_rooms.Add(room);

			if (room.Users.All(x => x.Email != user.Email)) {
				room.Users.Add(user);
			}

			// tell the people in this room that you've joined
			Clients.Group(room.Name).userChanged(user);

			Groups.Add(Context.ConnectionId, room.Name);

			return room;
		}
예제 #2
0
파일: Poker.cs 프로젝트: nberardi/consensus
        public void ChangeRoomTopic(PokerRoom room, string topic)
        {
            AssertContextUserJoinedRoom(room.Name);

            room = _rooms.FirstOrDefault(x => x.Name == room.Name);
            room.Topic = topic;

            // tell the people in this room that the topic has changed
            Clients.Group(room.Name).roomTopicChanged(topic);
        }
예제 #3
0
		public void LeaveRoom(PokerRoom room, PokerUser user)
		{
			AssertContextUserJoinedRoom(room.Name);
			room = _rooms.FirstOrDefault(x => x.Name == room.Name);

			if (room.Users.All(x => x.Email != user.Email))
				throw new Exception("User being removed hasn't joined this room yet.");

			room.Users = room.Users.Where(x => x.Email != user.Email).ToList();
			room.Cards = room.Cards.Where(x => x.User.Email != user.Email).ToList();

			// tell the people in this room that user has been removed
			Clients.Group(room.Name).userRemoved(user);
		}
예제 #4
0
파일: Poker.cs 프로젝트: nberardi/consensus
        public void ChangedCard(PokerRoom room, string cardValue)
        {
            AssertContextUserJoinedRoom(room.Name);

            var user = _users.Where(x => x.Key == Context.ConnectionId).Select(x => x.Value).FirstOrDefault();
            room = _rooms.FirstOrDefault(x => x.Name == room.Name);

            var card = room.Cards.FirstOrDefault(x => x.User.Email == user.Email);

            if (card == null) {
                card = new PokerCard {
                    User = user,
                    Value = cardValue
                };
                room.Cards.Add(card);
            }

            card.Value = cardValue;

            // tell the people in this room that your card has changed
            Clients.Group(room.Name).cardChanged(card);
        }
예제 #5
0
		public void ResetRoom(PokerRoom room)
		{
			AssertContextUserJoinedRoom(room.Name);

			room = _rooms.FirstOrDefault(x => x.Name == room.Name);
			room.Topic = "";
			room.Cards = new List<PokerCard>();

			// tell the people in this room that the topic has changed
			Clients.Group(room.Name).resetRoom(room);
		}
예제 #6
0
		public void ShowAllCards(PokerRoom room, bool show)
		{
			AssertContextUserJoinedRoom(room.Name);

			// tell the people in this room that the topic has changed
			Clients.Group(room.Name).showAllCards(show);
		}