Esempio n. 1
0
    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();
        }
    }
Esempio n. 2
0
 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();
 }
Esempio n. 3
0
    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);
    }
Esempio n. 4
0
    // 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();
                                }
                            }
                        }
                    }
                }
            }
        }
    }