public void TestGetNextPlayerNotInitalizedGameTable() { GameTable table = MakeInitialGameTable; string user = ParticipationService.GetNextPlayer(null, "user1"); Assert.AreEqual(true, user == null); }
public void TestGetNextPlayerNonExistentUser() { GameTable table = MakeInitialGameTable; string user = ParticipationService.GetNextPlayer(table, "user5"); Assert.AreEqual(true, user == null); }
public void TestGetNextPlayerCorrectlyInitialized() { GameTable table = MakeInitialGameTable; string user2 = ParticipationService.GetNextPlayer(table, "user1"); Assert.AreEqual(true, user2.Equals("user2")); string user3 = ParticipationService.GetNextPlayer(table, "user2"); Assert.AreEqual(true, user3.Equals("user3")); string user4 = ParticipationService.GetNextPlayer(table, "user3"); Assert.AreEqual(true, user4.Equals("user4")); string user1 = ParticipationService.GetNextPlayer(table, "user4"); Assert.AreEqual(true, user1.Equals("user1")); }
private void NotifyNextPlayer(string nextUserName, GameTable actualGameTable) { string nextPlayerNickname; if (string.IsNullOrWhiteSpace(nextUserName)) { nextPlayerNickname = ParticipationService.GetNextPlayer(actualGameTable, Context.User.Identity.Name); } else { nextPlayerNickname = nextUserName; } User nextUser = UserRepository.Instance.Get().FirstOrDefault(user => user.Value.Nickname == nextPlayerNickname).Value; List <HandCard> cards = actualGameTable.CardServiceData.GetActualHandCards(nextUser, actualGameTable); List <HandCard> validHandCards = actualGameTable.CardServiceData.ProveCards(cards, actualGameTable, nextUser); IHubContext context = GlobalHost.ConnectionManager.GetHubContext <ChatHub>(); actualGameTable.ActualParticipation = ParticipationService.GetParticipation(actualGameTable, nextUser.Nickname); Task task = context.Clients.Group(actualGameTable.Identifier.ToString(), nextUser.ConnectionIds.ToArray()).broadcastSystemMessage(ServerMessages.InformOtherPlayer.Replace("{0}", nextUser.Nickname), actualGameTable.Identifier, DateTime.Now.Ticks + GetMessageCounter()); task.Wait(); if (validHandCards.Count > 0 && validHandCards.Find(card => card.IsValid) == null) { if (!nextUser.CardDropped) { context.Clients.Group(actualGameTable.Identifier.ToString(), nextUser.ConnectionIds.ToArray()).broadcastStateMessage(ServerMessages.NoValidCardAvailable.Replace("{0}", nextUser.Nickname), actualGameTable.Identifier, DateTime.Now.Ticks + GetMessageCounter()); nextUser.ConnectionIds.ForEach(id => context.Clients.Client(id).broadcastStateMessage(ServerMessages.YourCardsHaveBeenDropped, actualGameTable.Identifier, DateTime.Now.Ticks + GetMessageCounter())); } } nextUser.ConnectionIds.ForEach(id => { if (validHandCards.Find(card => card.IsValid) != null) { Task chatTask = context.Clients.Client(id).broadcastSystemMessage(ServerMessages.NofityActualPlayer, actualGameTable.Identifier, DateTime.Now.Ticks + GetMessageCounter()); chatTask.Wait(); ColorCode colorCode = GameTableService.GetColorCodeForUser(Games, GameTableService.AreAllEndFieldsUsedForColorCode(actualGameTable, GameTableService.GetColorCodeForUser(Games, nextUser.Nickname, actualGameTable.Identifier)) ? ParticipationService.GetPartner(nextUser, actualGameTable.Participations).Nickname : nextUser.Nickname, actualGameTable.Identifier); Clients.Client(id).notifyActualPlayer(validHandCards, colorCode, actualGameTable.Identifier); } else { actualGameTable.CardServiceData.RemoveAllCardsFromUser(actualGameTable, nextUser); nextUser.CardDropped = true; Clients.Client(id).dropCards(actualGameTable.Identifier); if (actualGameTable.CardServiceData.ProveCardsCount % GlobalDefinitions.NofParticipantsPerTable != 0) { NotifyNextPlayer(ParticipationService.GetNextPlayer(actualGameTable, nextUser.Nickname), actualGameTable); return; } if (!actualGameTable.CardServiceData.AreCardsOnHand(actualGameTable)) { SendCardsForRound(actualGameTable); } else { NotifyNextPlayer(ParticipationService.GetNextPlayer(actualGameTable, nextUser.Nickname), actualGameTable); } } }); }