示例#1
0
文件: PlayerHand.cs 项目: roaet/LD28
 public void CancelSelection()
 {
     iTween.ScaleTo(selectedCard.gameObject, new Vector3(1.0f, 1.0f, 1.0f), 1.0f);
     m_cards.Insert(selectedCardIndex, selectedCard);
     selectedCard.selected = false;
     selectedCard = null;
     change = true;
     Destroy(confirmObject);
 }
示例#2
0
 public void UnselectCard()
 {
     if (currentSelect != null)
     {
         currentSelect.transform.SetParent(transform);
         currentSelect.transform.SetSiblingIndex(currentSelect.orderInHand - 1);
         currentSelect.hoverable = true;
         currentSelect           = null;
         currentSelectIndex      = -1;
     }
 }
示例#3
0
 /// <summary>
 /// Adds the supplied cards to the hand.
 /// </summary>
 /// <param name="cardsToAdd">Cards to add to the hand.</param>
 public void AddCards(List <Card> cardsToAdd)
 {
     for (int i = 0; i < cardsToAdd.Count; i++)
     {
         CardInHand card = new CardInHand
         {
             card     = cardsToAdd[i],
             position = cards.Count
         };
         cards.Add(card);
     }
 }
示例#4
0
 void DisplayCard(bool display, CardInHand card)
 {
     if (display)
     {
         displayCard.gameObject.SetActive(true);
         displayCard.Display(card.GetComponent <CardGameObject>());
     }
     else
     {
         displayCard.gameObject.SetActive(false);
     }
 }
示例#5
0
 public override void GiveCard(Card card)
 {
     if (card.Value + PersonValue < Table.winPoint)
     {
         Console.WriteLine($"Дилеру выпала карта - {card.Rank} {card.Suit}");
         CardInHand.Add(card);
         PersonValue += card.Value;
     }
     else
     {
         ThatsAll = false;
     }
 }
示例#6
0
    private IEnumerator AnimateCardUseHelper(CardInHand card)
    {
        Debug.Log("Animating");
        level.StartCardAnimation();
        iTween.FadeTo(card.gameObject, 0.0f, 1.0f);
        iTween.MoveBy(card.gameObject, new Vector3(0.0f, -2.0f, 0.0f), 1.0f);
        yield return(new WaitForSeconds(1.0f));

        m_cardManager.deck.PutCardIntoDiscard(card.info);
        Destroy(card.gameObject);
        Debug.Log("Done animating");
        level.EndCardAnimation(card);
    }
示例#7
0
    public void DrawCard()
    {
        CardInfo info = m_cardManager.deck.DrawCardIntoHand();

        if (info == null)
        {
            Debug.Log("Failed to draw");
            return;
        }
        CardInHand card = CreateCard(transform.position, info);

        m_cards.Add(card);
        change = true;
    }
示例#8
0
 public void DiscardAllBut(CardInHand save)
 {
     foreach (CardInHand card in m_cards)
     {
         if (save == card)
         {
             continue;
         }
         Discard(card);
     }
     m_cards.Clear();
     m_cards.Add(save);
     change = true;
 }
示例#9
0
文件: Level.cs 项目: roaet/LD28
	public bool CardSelected(CardInHand card) {
		CardInfo cardInfo = card.info;
		if(m_state == TurnState.use) {
			Debug.Log (cardInfo.name + " was used!");
			playerHand.AnimateCardUse(card);
			return true;
		}
		if(m_state == TurnState.save) {
			Debug.Log (cardInfo.name + " was saved!");
			playerHand.PutCardBackIntoHand(card);
			playerHand.DiscardAllBut(card);
			m_state = TurnState.draw;
			return false;
		}
		return false;
	}
示例#10
0
    public void UpdateXD(List <CardInHand> allCardsUnderMouse, out CardInHand selectedCard)
    {
        selectedCard = null;
        if (allCardsUnderMouse.Count < 1)
        {
            UnhoverOverCard();
            return;
        }

        CardInHand selectedCardOrHighestIndex = GetCardWithHighestOrder(allCardsUnderMouse);

        if (selectedCardOrHighestIndex.orderInHand - 1 != currentHoverIndex)
        {
            selectedCard = selectedCardOrHighestIndex;
            HoverOverCard(selectedCardOrHighestIndex);
        }
    }
示例#11
0
    public CardInHand GetCardWithHighestOrder(List <CardInHand> allCards)
    {
        CardInHand card = null;

        int currentHighest = -1;

        foreach (var c in allCards)
        {
            if (c.orderInHand > currentHighest)
            {
                currentHighest = c.orderInHand;
                card           = c;
            }
        }

        return(card);
    }
示例#12
0
    private CardInHand CreateCard(Vector3 position, CardInfo info)
    {
        //if(infos.Count <= 0) return null;
        Vector3    target  = GetCardSpawnPoint();
        GameObject element = Instantiate(cardPrefab,
                                         target,
                                         Quaternion.identity) as GameObject;
        Card c = element.GetComponent <Card>();

        c.InitializeCard(info);
        CardInHand card = element.GetComponent <CardInHand>();

        card.info   = info;
        card.target = target;
        iTween.Init(card.gameObject);
        card.hand = this;
        return(card);
    }
示例#13
0
        public void KnowAboutNominalAndColor_GivenClueAboutColorOnly_ReturnsFalse()
        {
            var    gameProvider = new GameProvider();
            Game   game         = new Game(gameProvider, 2);
            Player player       = new Player(game);

            CardInHand card = new CardInHand(player, new Card(Color.Blue, Rank.One));

            player.AddCard(card);

            // act
            var clue = Clue.Create(new ClueAboutColor(Color.Blue), new[] { card });

            player.ListenClue(clue);

            // assert
            Assert.IsFalse(player.KnowAboutNominalAndColor(card));
        }
示例#14
0
    public void DiscardCard(CardInHand card, bool animate)
    {
        UnselectCard();
        card.active = false;
        card.GetComponentInChildren <Button>().interactable = false;
        cardsInHand.Remove(card);

        if (animate)
        {
            StartCoroutine(ThrowToDiscard(card));
        }
        else
        {
            card.StartChanging(discardPile.localPosition, 0, 0);
            card.transform.SetParent(FindObjectOfType <Canvas>().transform);
            StartCoroutine(DestroyCard(card.gameObject));
        }

        RecalculateCardPositions();
    }
示例#15
0
        public void KnowAboutNominalAndColor_GivenCluesAboutNominalAndColor_ReturnsTrue()
        {
            var gameProvider = new GameProvider();

            Game   game   = new Game(gameProvider, 2);
            Player player = new Player(game);

            CardInHand cardInHand = new CardInHand(player, new Card(Rank.One, Color.Blue));

            player.AddCard(cardInHand);

            var cardsToClue = new[] { cardInHand };
            var clueOne     = Clue.Create(new ClueAboutRank(Rank.One), cardsToClue);
            var clueTwo     = Clue.Create(new ClueAboutColor(Color.Blue), cardsToClue);

            player.ListenClue(clueOne);
            player.ListenClue(clueTwo);

            Assert.IsTrue(player.KnowAboutNominalAndColor(cardInHand));
        }
示例#16
0
    private void SelectACard(CardInHand card)
    {
        int idx = FindIndexOfCard(card);

        selectedCard          = card;
        selectedCardIndex     = idx;
        selectedCard.selected = true;
        m_cards.RemoveAt(idx);
        change          = true;
        lastFocusedCard = card;
        focusedCard     = null;
        if (confirmSelection)
        {
            TweenTo(card, new Vector3(0.0f, 0.0f, -6.0f));
            iTween.ScaleTo(card.gameObject, new Vector3(2.0f, 2.0f, 1.0f), 1.0f);
            BringUpConfirmation();
        }
        else
        {
            ConfirmSelection();
        }
    }
示例#17
0
 // Update is called once per frame
 void Update()
 {
     if (change)
     {
         OrganizeCards();
     }
     // if there is a card focused or the focus has changed
     if (focusedCard != null && lastFocusedCard != focusedCard)
     {
         lastFocusedCard = focusedCard;
         PushCardsAwayFrom(focusedCard);
     }
     if (focusedCard != null && m_cards.Count > 3)
     {
         MoveCardsToTargets();
     }
     else
     {
         MoveCardsToResting();
     }
     change = false;
 }
示例#18
0
    void Update()
    {
        List <CardInHand> allCardsUnderMouse = GetAllCards();

        if (allCardsUnderMouse.Count < 1)
        {
            UnhoverOverCard();
            return;
        }

        CardInHand selectedCardOrHighestIndex = GetCardWithHighestOrder(allCardsUnderMouse);

        if (selectedCardOrHighestIndex.hand != this)
        {
            return;
        }

        if (selectedCardOrHighestIndex.orderInHand - 1 != currentHoverIndex)
        {
            HoverOverCard(selectedCardOrHighestIndex);
        }
    }
示例#19
0
        public void KnowAboutNominalAndColor_GivenCluesAboutAllOtherColorsAndNominal_ReturnsTrue()
        {
            var    gameProvider = new GameProvider();
            Game   game         = new Game(gameProvider, 2);
            Player player       = new Player(game, "");

            CardInHand blueOneCard = new CardInHand(player, new Card(Color.Blue, Rank.One));

            player.AddCard(blueOneCard);

            CardInHand redTwoCard = new CardInHand(player, new Card(Color.Red, Rank.Two));

            player.AddCard(redTwoCard);

            CardInHand yellowThreeCard = new CardInHand(player, new Card(Color.Yellow, Rank.Three));

            player.AddCard(yellowThreeCard);

            CardInHand whiteFourCard = new CardInHand(player, new Card(Color.White, Rank.Four));

            player.AddCard(whiteFourCard);

            CardInHand greenFiveCard = new CardInHand(player, new Card(Color.Green, Rank.Five));

            player.AddCard(greenFiveCard);

            // clue about rank blue one
            var clue = Clue.Create(new ClueAboutRank(Rank.One), new[] { blueOneCard });

            player.ListenClue(clue);

            // clues about red, yellow, white and green colors
            player.ListenClue(Clue.Create(new ClueAboutColor(Color.Red), new[] { redTwoCard }));
            player.ListenClue(Clue.Create(new ClueAboutColor(Color.Yellow), new[] { yellowThreeCard }));
            player.ListenClue(Clue.Create(new ClueAboutColor(Color.White), new[] { whiteFourCard }));
            player.ListenClue(Clue.Create(new ClueAboutColor(Color.Green), new[] { greenFiveCard }));

            Assert.IsTrue(player.KnowAboutNominalAndColor(blueOneCard));
        }
示例#20
0
        public void ListenClue_HandWithRedFiveAndClueAboutFive_AddsClueAboutOtherCards()
        {
            IGameProvider provider = new GameProvider();
            Game          game     = new Game(provider, 2);

            var player = new Player(game);

            CardInHand blueOneCard = new CardInHand(player, new Card(Color.Blue, Rank.One));

            player.AddCard(blueOneCard);

            CardInHand redFiveCard = new CardInHand(player, new Card(Color.Red, Rank.Five));

            player.AddCard(redFiveCard);

            // act
            player.ListenClue(Clue.Create(new ClueAboutRank(Rank.Five), new [] { redFiveCard }));

            IReadOnlyList <ClueType> clues = player.GetCluesAboutCard(blueOneCard);

            Assert.AreEqual(1, clues.Count);
            Assert.IsTrue(clues[0] is ClueAboutNotRank);
        }
示例#21
0
文件: Level.cs 项目: roaet/LD28
 public void EndCardAnimation(CardInHand card)
 {
     CardInfo cardInfo = card.info;
     m_state = TurnState.characterAnimate;
     storyTrack.eventController.HandleCard(this, cardInfo, characterManager);
 }
示例#22
0
文件: PlayerHand.cs 项目: roaet/LD28
 public void ConfirmSelection()
 {
     if(confirmObject != null) Destroy(confirmObject);
     level.CardSelected(selectedCard);
     selectedCard.selected = false;
     selectedCard = null;
 }
示例#23
0
文件: PlayerHand.cs 项目: roaet/LD28
 public void CardUnfocused(CardInHand card)
 {
     if(selectedCard != null || !m_is_enabled) return;
     lastFocusedCard = card;
     focusedCard = null;
 }
示例#24
0
文件: PlayerHand.cs 项目: roaet/LD28
 public void AnimateCardUse(CardInHand card)
 {
     StartCoroutine("AnimateCardUseHelper", card);
 }
示例#25
0
文件: PlayerHand.cs 项目: roaet/LD28
 private void TweenTo(CardInHand card, Vector3 position)
 {
     iTween.MoveTo(card.gameObject,
                   iTween.Hash("time", 0.5f,
                               "position", position));
 }
示例#26
0
文件: PlayerHand.cs 项目: roaet/LD28
 // Use this for initialization
 void Start()
 {
     m_cards = new List<CardInHand>();
     lastFocusedCard = focusedCard = null;
     change = false;
     confirmSelection = false;
     m_is_enabled = false;
 }
示例#27
0
文件: PlayerHand.cs 项目: roaet/LD28
    private void PushCardsAwayFrom(CardInHand card)
    {
        int idx = FindIndexOfCard(card);
        float popDistance = 0.5f;

        float baseZed = -5.0f;
        for(int i = 0; i < m_cards.Count; i++) {
            CardInHand c = m_cards[i];
            Vector3 pt = c.resting;
            Vector3 zpt = c.transform.position;
            if(i < idx) {
                zpt.z = baseZed + (idx - i * 0.25f);
                pt.x -= popDistance;
            } else if (i > idx) {
                zpt.z = baseZed + (i - idx + 1 * 0.25f);
                pt.x += popDistance;
            } else {
                zpt.z = baseZed;
                c.target = pt;
            }
            pt.z = zpt.z;
            c.transform.position = zpt;
            c.target = pt;
        }
    }
示例#28
0
 public void DropCard(CardInHand card, bool stayUp)
 {
     hand.DiscardCard(card, stayUp);
 }
示例#29
0
 public void PutCardBackIntoHand(CardInHand card)
 {
     m_cards.Add(card);
     iTween.ScaleTo(card.gameObject, new Vector3(1.0f, 1.0f, 1.0f), 1.0f);
     m_cards.Add(card);
 }
示例#30
0
 public void Discard(CardInHand card)
 {
     m_cardManager.deck.PutCardIntoDiscard(card.info);
     Destroy(card.gameObject);
 }
示例#31
0
 public void DestroyCard(CardInHand card)
 {
 }
示例#32
0
文件: PlayerHand.cs 项目: roaet/LD28
 private int FindIndexOfCard(CardInHand card)
 {
     for(int i = 0; i < m_cards.Count; i++)
         if(m_cards[i] == card)
             return i;
     return -1;
 }
示例#33
0
 public void AnimateCardUse(CardInHand card)
 {
     StartCoroutine("AnimateCardUseHelper", card);
 }
示例#34
0
文件: PlayerHand.cs 项目: roaet/LD28
 private void SelectACard(CardInHand card)
 {
     int idx = FindIndexOfCard(card);
     selectedCard = card;
     selectedCardIndex = idx;
     selectedCard.selected = true;
     m_cards.RemoveAt(idx);
     change = true;
     lastFocusedCard = card;
     focusedCard = null;
     if(confirmSelection) {
         TweenTo (card, new Vector3(0.0f, 0.0f, -6.0f));
         iTween.ScaleTo(card.gameObject, new Vector3(2.0f, 2.0f, 1.0f), 1.0f);
         BringUpConfirmation();
     } else {
         ConfirmSelection();
     }
 }
示例#35
0
 public bool KnowAboutRankOrColor(CardInHand cardInHand)
 {
     return(KnowAboutRankOrColorPredicate(cardInHand));
 }
示例#36
0
文件: PlayerHand.cs 项目: roaet/LD28
 private void TweenBy(CardInHand card, float xValue)
 {
     iTween.MoveBy(card.gameObject,
                   iTween.Hash("x", xValue,
                 "time", 0.5f,
                 "looptype", "none"));
 }
示例#37
0
 public IList <ClueType> GetCluesAboutCard(CardInHand cardInHand)
 {
     return(CluesAboutCard.ContainsKey(cardInHand)?
            CluesAboutCard[cardInHand] :
            new List <ClueType>());
 }
示例#38
0
文件: PlayerHand.cs 项目: roaet/LD28
 // Update is called once per frame
 void Update()
 {
     if(change) {
         OrganizeCards();
     }
     // if there is a card focused or the focus has changed
     if(focusedCard != null && lastFocusedCard != focusedCard) {
         lastFocusedCard = focusedCard;
         PushCardsAwayFrom(focusedCard);
     }
     if(focusedCard != null && m_cards.Count > 3) {
         MoveCardsToTargets();
     } else {
         MoveCardsToResting();
     }
     change = false;
 }
示例#39
0
文件: Level.cs 项目: roaet/LD28
	public void EndCardAnimation(CardInHand card) {
		CardInfo cardInfo = card.info;
		m_state = TurnState.characterAnimate;
		storyTrack.eventController.HandleCard(this, cardInfo, characterManager);
	}
示例#40
0
 public bool IsSubtleClue(CardInHand cardInHand, IEnumerable <Card> expectedCards)
 {
     return(IsSubtleCluePredicate(cardInHand));
 }
示例#41
0
文件: PlayerHand.cs 项目: roaet/LD28
 public void DestroyCard(CardInHand card)
 {
 }
示例#42
0
文件: PlayerHand.cs 项目: roaet/LD28
 public void CardWasClicked(CardInHand card)
 {
     if(selectedCard != null || !m_is_enabled) return;
     SelectACard(card);
 }
示例#43
0
文件: PlayerHand.cs 项目: roaet/LD28
 public void Discard(CardInHand card)
 {
     m_cardManager.deck.PutCardIntoDiscard(card.info);
     Destroy(card.gameObject);
 }
示例#44
0
文件: Level.cs 项目: roaet/LD28
 public bool CardSelected(CardInHand card)
 {
     CardInfo cardInfo = card.info;
     if(m_state == TurnState.use) {
         Debug.Log (cardInfo.name + " was used!");
         playerHand.AnimateCardUse(card);
         return true;
     }
     if(m_state == TurnState.save) {
         Debug.Log (cardInfo.name + " was saved!");
         playerHand.PutCardBackIntoHand(card);
         playerHand.DiscardAllBut(card);
         m_state = TurnState.draw;
         return false;
     }
     return false;
 }
示例#45
0
文件: PlayerHand.cs 项目: roaet/LD28
 public void DiscardAllBut(CardInHand save)
 {
     foreach(CardInHand card in m_cards) {
         if(save == card) continue;
         Discard(card);
     }
     m_cards.Clear();
     m_cards.Add(save);
     change = true;
 }
示例#46
0
 public override void GiveCard(Card card)
 {
     CardInHand.Add(card);
 }
示例#47
0
文件: PlayerHand.cs 项目: roaet/LD28
    private IEnumerator AnimateCardUseHelper(CardInHand card)
    {
        Debug.Log ("Animating");
        level.StartCardAnimation();
        iTween.FadeTo(card.gameObject, 0.0f, 1.0f);
        iTween.MoveBy (card.gameObject, new Vector3(0.0f, -2.0f, 0.0f), 1.0f);
        yield return new WaitForSeconds(1.0f);

        m_cardManager.deck.PutCardIntoDiscard(card.info);
        Destroy (card.gameObject);
        Debug.Log ("Done animating");
        level.EndCardAnimation(card);
    }
示例#48
0
文件: PlayerHand.cs 项目: roaet/LD28
 public void PutCardBackIntoHand(CardInHand card)
 {
     m_cards.Add(card);
     iTween.ScaleTo(card.gameObject, new Vector3(1.0f, 1.0f, 1.0f), 1.0f);
     m_cards.Add (card);
 }
示例#49
0
 private void TweenTo(CardInHand card, Vector3 position)
 {
     iTween.MoveTo(card.gameObject,
                   iTween.Hash("time", 0.5f,
                               "position", position));
 }