Better lobby system
All checks were successful
Build Mau & Deploy Mau / build (push) Successful in 1m25s
Build Mau & Deploy Mau / deploy (push) Has been skipped
Build Mau & Deploy Mau / build (pull_request) Successful in 1m6s
Build Mau & Deploy Mau / deploy (pull_request) Has been skipped

This commit is contained in:
DTieman
2024-04-22 21:51:35 +02:00
parent 3c2032a800
commit 0c2cb8272d
3 changed files with 99 additions and 26 deletions

View File

@@ -10,9 +10,11 @@ public class Game
public List<Player> Players = new();
public Player CurrentPlayer;
public int TurnDirection = 1;
private readonly Room _room;
public Game()
public Game(Room room)
{
_room = room;
CurrentCard = Deck.DrawCard();
Deck.AddCardToUsedDeck(CurrentCard);
}
@@ -57,10 +59,10 @@ public class Game
{
break;
}
CurrentCard = new Card(cardType, CardValue.JACK);
CurrentPlayer.State = PlayerState.WAIT;
CurrentPlayer = CurrentCard.CardType == CardType.JOKER ? GetNextPlayer() : GetNextPlayer(2);
CurrentPlayer = CurrentCard.CardType == CardType.JOKER ? GetNextPlayer(2) : GetNextPlayer();
CurrentPlayer.State = PlayerState.TURN;
CurrentCard = new Card(cardType, CardValue.JACK);
break;
case "DRAW":
if (player.State != PlayerState.TURN)
@@ -79,6 +81,11 @@ public class Game
Deck.AddCardToUsedDeck(card);
hand.Remove(GetSameCardFromHand(hand, card));
CurrentCard = card;
if (hand.Count == 0)
{
_room.EndGame(player);
return;
}
HandleNextPlayer(card);
}
@@ -106,24 +113,20 @@ public class Game
{
nextPlayer.Hand.Add(drawnCard);
}
CurrentPlayer.State = PlayerState.WAIT;
CurrentPlayer = GetNextPlayer(2);
CurrentPlayer.State = PlayerState.TURN;
HandleNextPlayer(CurrentPlayer, GetNextPlayer(2));
break;
}
case CardValue.SEVEN:
case CardValue.KING:
break;
case CardValue.EIGHT:
CurrentPlayer.State = PlayerState.WAIT;
CurrentPlayer = GetNextPlayer(2);
CurrentPlayer.State = PlayerState.TURN;
HandleNextPlayer(CurrentPlayer, GetNextPlayer(2));
break;
case CardValue.ACE:
if (Players.Count > 2)
{
TurnDirection *= -1;
CurrentPlayer = GetNextPlayer();
HandleNextPlayer(CurrentPlayer, GetNextPlayer());
}
break;
case CardValue.JACK:
@@ -137,17 +140,22 @@ public class Game
case CardValue.TEN:
case CardValue.QUEEN:
default:
CurrentPlayer = GetNextPlayer();
HandleNextPlayer(CurrentPlayer, GetNextPlayer());
break;
}
}
private void HandleNextPlayer(Player current, Player next)
{
current.State = PlayerState.WAIT;
next.State = PlayerState.TURN;
CurrentPlayer = next;
}
private void DrawCard(Player player)
{
player.Hand.Add(Deck.DrawCard());
CurrentPlayer = GetNextPlayer();
player.State = PlayerState.WAIT;
CurrentPlayer.State = PlayerState.TURN;
HandleNextPlayer(player, GetNextPlayer());
}
private Player GetNextPlayer(int numberOfPlayers = 1)