public void GiveSipsToSelectedPlayer() { var actionPair = GiveActionPlayers.Last(); var dropDown = GivePanel.GetComponentInChildren <Dropdown>(); var intPlayerVal = dropDown.value; var targetPlayer = Players[intPlayerVal]; var removedCard = actionPair.Card; // remove the card from the active player actionPair.Player.Hand = actionPair.Player.Hand.Where(c => c.Suit != removedCard.Suit || c.Value != removedCard.Value).ToList(); // give the card to the targeted player targetPlayer.Hand.Add(removedCard); DispenseSips(targetPlayer, actionPair.Sips, false); // remove the card action from the list GiveActionPlayers.RemoveAt(GiveActionPlayers.Count - 1); if (GiveActionPlayers.Count == 0) { GivePanel.SetActive(false); } else { // set next player action SetActionPair(); } }
private void SetActionPair() { // set current player CurrentPlayerIndex = Players.IndexOf(GiveActionPlayers.Last().Player); // Set counter GiveCounter.text = GiveActionPlayers.Where(pair => pair.Player == CurrentPlayer).Count() + ""; // set name SetActivePlayer(); }
private bool CheckCardActionGuitar(Card selectedCard, CardType type, int sips) { StringBuilder actionsToTake = new StringBuilder(); var playerFound = false; // The loop when playing the guitar var busCreated = false; foreach (var p in Players) { if (p.Hand.Exists(c => c.Value == selectedCard.Value)) { playerFound = true; // flag all cards for actions switch (type) { case CardType.Give: // handle give // save player in action queue foreach (Card c in p.Hand) { if (c.Value == selectedCard.Value) { GiveActionPlayers.Add(new PlayerCardPair() { Card = c, Player = p, Sips = sips }); } } break; case CardType.Take: actionsToTake.AppendLine(p.Name + " skal tage " + sips + " tåre"); break; case CardType.Bus: // Handle bus PlayersOnBus.Add(p); // create the bus if (!busCreated) { StartBus(); busCreated = true; } break; default: break; } } } SetBusNames(); ActionText.GetComponent <Text>().text = actionsToTake.ToString(); return(playerFound); }
// Update is called once per frame void Update() { // Mouse pointer section if (Input.GetMouseButtonDown(0) && GiveActionPlayers.Count == 0 && !BusPassengerPanel.activeSelf) { // Position of mouse pointer Vector3 pos = main.ScreenToWorldPoint(Input.mousePosition); RaycastHit2D hit = Physics2D.Raycast(pos, Vector2.zero); if (hit.transform != null) { CardObject cardSelected = hit.transform.gameObject.GetComponent <CardObject>(); if (cardSelected.CardInfo != null) { Debug.Log("Selected card: " + cardSelected.CardInfo.ToString()); if (!cardSelected.Turned) { cardSelected.TurnCard(); if (cardSelected.Type == CardType.BusRide) { //Bus CardsActiveOnBus.Add(cardSelected); // display the turned card DisplayCard(cardSelected.CardInfo); // handle drawing bus cards if (cardSelected.CardInfo.Value >= 10 || cardSelected.CardInfo.Value == 1) { // they drink var drinkCounter = 0; foreach (var card in CardsActiveOnBus) { // TODO move the draw new card when turning to the card object class. // Use public method to draw the card from singleton card.CardInfo = DrawCard(Deck); card.TurnCard(); drinkCounter++; } var playersToDrink = new StringBuilder(); foreach (var p in PlayersOnBus) { playersToDrink.Append(p.Name + ", "); } playersToDrink.Append("skal drikke " + drinkCounter + " tåre"); CardsActiveOnBus = new List <CardObject>(); ActionText.GetComponent <Text>().text = playersToDrink.ToString(); } } else { //guitar var actionTaken = CheckCardActionGuitar(cardSelected.CardInfo, cardSelected.Type, cardSelected.Sips); DisplayCard(cardSelected.CardInfo); if (!actionTaken) { // draw new card cardSelected.CardInfo = DrawCard(Deck); cardSelected.TurnCard(); } else { if (GiveActionPlayers.Count > 0) { GiveActionPlayers.OrderBy(pair => pair.Player.Name); // set active selection panel GivePanel.SetActive(true); // fill dropdown var dropDown = GivePanel.GetComponentInChildren <Dropdown>(); List <string> playerNames = Players.Select(p => p.Name).ToList(); dropDown.ClearOptions(); dropDown.AddOptions(playerNames); SetActionPair(); } } } } } } } }