public async Task PlayCard(Player player, Color cardColor, int cardNumber, SchafkopfHub hub) { if (CurrentGameState == State.HochzeitExchangeCards && player == HusbandWife) { if (await player.ExchangeCardWithPlayer(cardColor, cardNumber, Leader, hub, this)) { await StartGame(hub); } return; } if (CurrentGameState != State.Playing || player != PlayingPlayers[ActionPlayer]) { foreach (String connectionId in player.GetConnectionIds()) { await hub.Clients.Client(connectionId).SendAsync("ReceiveSystemMessage", "Du bist gerade nicht dran!"); } return; } if (Trick.Count == 4) { await hub.TakeTrick(); } Card playedCard = await player.PlayCard(cardColor, cardNumber, hub, this); if (playedCard == null) { return; } await Trick.AddCard(playedCard, player, hub, this); if (Trick.Count < 4) { ActionPlayer = (ActionPlayer + 1) % 4; await SendPlayers(hub); } else { ActionPlayer = PlayingPlayers.IndexOf(Trick.GetWinner()); await SendPlayers(hub); await SendTakeTrickButton(hub, GetPlayingPlayersConnectionIds()); } }
public async Task PlayCard(Player player, Color cardColor, int cardNumber, SchafkopfHub hub) { if (GameState.CurrentGameState == State.HochzeitExchangeCards && player == GameState.HusbandWife) { bool success = GameState.ExchangeCardWithPlayer(player, cardColor, cardNumber, GameState.Leader, hub, this); if (success) { foreach (String connectionId in GetPlayingPlayersConnectionIds()) { await hub.Clients.Client(connectionId).SendAsync( "ReceiveSystemMessage", $"{GameState.HusbandWife.Name} und {GameState.Leader.Name} haben eine Karte getauscht" ); } await StartGame(hub); } else { foreach (String connectionId in player.GetConnectionIds()) { await hub.Clients.Client(connectionId).SendAsync("ReceiveError", "Du kannst deinem Mitspieler kein Trumpf geben!"); } } return; } if (GameState.CurrentGameState != State.Playing || player != GameState.PlayingPlayers[GameState.ActionPlayer]) { foreach (String connectionId in player.GetConnectionIds()) { await hub.Clients.Client(connectionId).SendAsync("ReceiveError", "Du bist gerade nicht dran!"); } return; } if (GameState.Trick.Count == 4) { await hub.TakeTrick(); } (Card playedCard, string message) = GameState.PlayCard(cardColor, cardNumber, hub, this, player); if (playedCard == null) { foreach (String connectionId in player.GetConnectionIds()) { await hub.Clients.Client(connectionId).SendAsync("ReceiveError", message); } return; } await player.SendHand(hub, GameState.AnnouncedGame, GameState.GetTrumpColor()); GameState.AddCardToTrick(playedCard, player); await GameState.Trick.SendTrick(hub, this, GetPlayingPlayersConnectionIds()); if (GameState.LastTrick != null) { await SendLastTrickButton(hub, GetPlayingPlayersConnectionIds(), LastTrickButtonState.show); } if (GameState.Trick.Count < 4) { GameState.IncrementActionPlayer(); await SendPlayers(hub); } else { GameState.ActionPlayer = GameState.PlayingPlayers.IndexOf(GameState.Trick.Winner); await SendPlayers(hub); await SendTakeTrickButton(hub, GetPlayingPlayersConnectionIds()); } }