private void HandleRotateGoldCardMessage(RotateGoldCardMessage rotateGoldCardMessage) { _canRotate = true; TextInChatBox += "Поверните в нужную сторону карты с золотом \n"; OnPropertyChanged(nameof(TextInChatBox)); _cardsToRotate = rotateGoldCardMessage.CardsToRotate; }
public void ExecuteTurnCommand(object o) { var rotateMessage = new RotateGoldCardMessage(); rotateMessage.CardsToRotate = _cardsToRotate; rotateMessage.RoleType = CurrentPlayer.Role.Role; _client.SendMessage(rotateMessage); _canRotate = false; }
private static List <Message> HandleBuildMessage(Message message, ClientObject client) { Logger.Write($"Build message was received from client {client.Id}"); var result = new List <Message>(); var buildMessage = (BuildMessage)message; result.Add(buildMessage); // check if user can build card if (Validator.ValidateBuildingTunnelAction(buildMessage.RouteCard, Table.OpenedCards, buildMessage.RoleType)) { buildMessage.IsSuccessfulBuild = true; buildMessage.IsBroadcast = true; var updateMessage = ProvidePlayerNewCards(client.Id, new List <int> { buildMessage.CardId }); result.Add(updateMessage); Table.AddCard(buildMessage.RouteCard, buildMessage.RoleType); var goldCardsToOpen = Table.GoldCards .Where(goldCard => goldCard.Coordinates.IsNeighbour(buildMessage.RouteCard.Coordinates) && (!goldCard.IsOpen || !Table.OpenedCards.Contains(goldCard))) .ToList(); var rotateMessage = new RotateGoldCardMessage(); foreach (var goldCard in goldCardsToOpen) { if (Validator.CheckForGold(goldCard, Table.OpenedCards, buildMessage.RoleType) && Validator.CheckForGold((GoldCard)goldCard.Rotate(), Table.OpenedCards, buildMessage.RoleType)) { rotateMessage.CardsToRotate.Add(goldCard); } else { if (!Validator.CheckForGold(goldCard, Table.OpenedCards, buildMessage.RoleType)) { goldCard.Rotate(); } } goldCard.IsOpen = true; Table.OpenedCards.Add(goldCard); var exploreMessage = new ExploreMessage(); exploreMessage.IsBroadcast = true; exploreMessage.Card = goldCard; exploreMessage.Coordinates = goldCard.Coordinates; result.Add(exploreMessage); } if (rotateMessage.CardsToRotate.Count > 0) { result.Add(rotateMessage); } else { var directMessage = SetNextPlayer(); result.Add(directMessage); } if (CheckGameEnd()) { result.Add(CreateEndGameMessage()); } Table.UpdateAllConnections(buildMessage.RoleType); result.Add(PrepareGoldMessage()); result.Add(new UpdateTokensMessage(Table.Tokens)); Logger.Write($"Build message was sent from client {client.Id}"); } else { buildMessage.IsSuccessfulBuild = false; buildMessage.IsBroadcast = false; Logger.Write($"Can't build message was sent for client {client.Id}"); } return(result); }