Example #1
0
    public override void DoEffect(Tile t)
    {
        selectedCardIds.Clear();
        cardsToShuffleBack.Clear();
        gemsNeededToShuffleBack = CARDS_TO_SHUFFLE_BACK;

        List <Card> pickableCards = card.Owner.Hand.GetAllCardsWithTag(Tag.Gem);

        CompoundQueueableCommand.Builder cmdBuilder = new CompoundQueueableCommand.Builder();
        for (int i = 0; i < CARDS_TO_SHUFFLE_BACK; i++)
        {
            IQueueableCommand cmd = CardPicker.CreateCommand(pickableCards, 1, 1, "Select a gem to shuffle back. " + gemsNeededToShuffleBack + " remaining", card.Owner, delegate(List <Card> cardList)
            {
                pickableCards.RemoveAll(c => c.CardId == cardList[0].CardId); // remove already selected cards
                cardsToShuffleBack.Add(cardList[0]);
                gemsNeededToShuffleBack--;
            });
            cmdBuilder.AddCommand(cmd);
        }
        cmdBuilder.AddCommand(SingleTileTargetEffect.CreateCommand(Board.Instance.GetAllTilesWithCreatures(card.Owner.OppositePlayer, false), delegate(Tile targetTile)
        {
            foreach (Card c in cardsToShuffleBack)
            {
                c.MoveToCardPile(card.Owner.Deck, card);
            }
            card.Owner.Deck.Shuffle();
            targetTile.Creature.TakeDamage(DAMAGE, card);
            card.Owner.DrawCards(CARDS_DRAWN);
        }));
        cmdBuilder.BuildAndQueue();
    }
Example #2
0
 public override void DoEffect(Tile t)
 {
     CardPicker.CreateAndQueue(Owner.Deck.GetAllCardsWithTag(Tag.Fairy), 1, 1, "Select a card to add to your hand", Owner, delegate(List <Card> cards)
     {
         cards[0].MoveToCardPile(Owner.Hand, card);
     });
 }
Example #3
0
 public override void DoEffect(Tile t)
 {
     CardPicker.CreateAndQueue(card.Owner.Hand.CardList, 1, 1, "Select a card to discard", card.Owner, delegate(List <Card> cards)
     {
         cards[0].MoveToCardPile(card.Owner.Graveyard, card);
         card.Owner.DrawCards(2);
     });
 }
Example #4
0
 private void deployEff(object sender, EventArgs e)
 {
     CardPicker.CreateAndQueue(creature.Controller.Hand.GetAllCardsWithType(CardType.Creature), 1, 1, "Select a card to give +1/+1", creature.Controller, delegate(List <Card> cardList)
     {
         (cardList[0] as CreatureCard).Creature.Health     += 1;
         (cardList[0] as CreatureCard).Creature.BaseAttack += 1;
     });
 }
 public ChosenCards ChooseResult(List <Card> candidates)
 {
     return(CardPicker
            .ChooseBestCards(
                controller: _player.Value,
                candidates: candidates,
                count: _maxCount,
                aurasNeedTarget: _zone == Zone.Battlefield));
 }
 public ChosenCards ChooseResult(List <Card> candidates)
 {
     return(CardPicker
            .ChooseBestCards(
                controller: Controller,
                candidates: candidates,
                count: 1,
                aurasNeedTarget: false));
 }
Example #7
0
    void Awake()
    {
        upParticle = Resources.Load("Upgrade Particle System") as GameObject;
        int cardCount = GameManager.instance.AllCards.Count;

        for (int i = 0; i < cardCount; i++)
        {
            CardSet cardSet = GameManager.instance.AllCards[i];
            if (cardSet.upgradeLevel > 4)
            {
                continue;
            }

            CardPicker picker = Instantiate(pickerPrefab);
            picker.transform.SetParent(layoutGroup.transform);

            picker.SetOption(cardSet.showCard, (cardPicker) =>
            {
                WindowUI win = Instantiate(MainUIMnager.Instance.window);
                win.GetComponent <ChooseWindowUI>().SetWindow("카드 강화", "계속 하시겠습니까?\n\n" + string.Format("{0} -> {1}", cardSet.upgradeLevel, cardSet.upgradeLevel + 1), "네", "아니요", () =>
                {
                    int cost = cardSet.showCard.card.upgradeCostPerLevel;
                    if (cardSet.showCard.card.upgradeCostPerLevel <= GameManager.instance.goldCount && cardSet.showCard.card.upgradeGemPerLevel <= GameManager.instance.GetGem(cardSet.showCard.card.type))
                    {
                        GameManager.instance.AddGold(-cost);
                        GameManager.instance.AddGem(cardSet.showCard.card.type, -cardSet.showCard.card.upgradeGemPerLevel);

                        cardSet.upgradeLevel++;

                        GameObject temp = Instantiate(upParticle, cardPicker.transform.position, Quaternion.identity);
                        Destroy(temp, 3.0f);

                        GameDataHandler.SaveCards(GameManager.instance.AllCards);

                        Destroy(win.gameObject);
                        if (cardSet.upgradeLevel > 4)
                        {
                            Destroy(picker.gameObject);
                        }
                    }
                    else
                    {
                        Destroy(win.gameObject);
                        win = Instantiate(MainUIMnager.Instance.window);
                        win.GetComponent <ChooseWindowUI>().SetWindow("강화 실패", "재료가 부족합니다.", "확인", "취소", () =>
                        {
                        }, () => Destroy(win.gameObject));
                    }
                }, () => Destroy(win.gameObject));
            });
        }

        Canvas cam = transform.GetChild(0).GetComponent <Canvas>();

        cam.worldCamera = Camera.main;
    }
 public override void DoEffect(Tile t)
 {
     CardPicker.CreateAndQueue(Owner.Graveyard.GetAllCardsWithType(CardType.Spell).FindAll(c => c.CardId != (int)CardIds.SpellRecycling), 1, 2, "Select cards to add to your hand", Owner, delegate(List <Card> cards)
     {
         foreach (Card c in cards)
         {
             c.MoveToCardPile(Owner.Hand, card);
         }
     });
 }
        public ChosenCards ChooseResult(List <Card> candidates)
        {
            var controller = _playerQueue.First();

            return(CardPicker.ChooseBestCards(
                       controller: controller,
                       candidates: candidates,
                       count: 1,
                       aurasNeedTarget: true));
        }
 public override void DoEffect(Tile t)
 {
     CardPicker.CreateAndQueue(card.Owner.Deck.GetAllCardsWithTag(Tag.Arcane), 1, 1, "Select a card to add to your hand", card.Owner, delegate(List <Card> cards)
     {
         cards[0].MoveToCardPile(card.Owner.Hand, card);
         if (card.Owner.ControlledCreatures.Find(c => c.HasTag(Tag.Arcane)))
         {
             card.Owner.Mana += 1;
         }
     });
 }
Example #11
0
 void Start()
 {
     card1 = null;
     card2 = null;
     //flipBackCards = new ArrayList();
     //flipBackTimer = new ArrayList();
     Score           = 0;
     cardPicker      = gameObject.GetComponent("CardPicker") as CardPicker;
     flipToATimer    = 0;
     cardsDoNotMatch = false;
 }
Example #12
0
        public void Execute()
        {
            if (owner != NetInterface.Get().localPlayer)
            {
                forceFinished = true;
                return;
            }
            CardPicker cardPicker = Instantiate(PrefabHolder.Instance.cardPicker, MainCanvas.Instance.transform);

            picker = cardPicker;
            cardPicker.SetUp(pickableCards, minCards, maxCards, headerText, handler);
            UIEvents.EnableUIBlocker.Invoke();
        }
Example #13
0
    public void SetOption(int goldCount, int topazCount, int rubyCount, int sapphireCount, int diamondCount)
    {
        GoldText.text     = goldCount.ToString();
        TopazText.text    = topazCount.ToString();
        RubyText.text     = rubyCount.ToString();
        SapphireText.text = sapphireCount.ToString();
        DiamondText.text  = diamondCount.ToString();

        GameManager.instance.goldCount     += goldCount;
        GameManager.instance.topazCount    += topazCount;
        GameManager.instance.rubyCount     += rubyCount;
        GameManager.instance.sapphireCount += sapphireCount;
        GameManager.instance.diamondCount  += diamondCount;

        if (cardLayout == null)
        {
            Debug.LogError("cardLayout이 없어 보상창에 추가카드를 표시할 수 없습니다.");
            return;
        }

        if (cardPrefabList.Count == 0)
        {
            Debug.LogError("추가로 제공할 카드가 없습니다.");
            return;
        }

        // 일단은 추가카드 선택은 랜덤으로 해뒀음 나중에 수정할 예정
        for (int i = 0; i < 3; i++)
        {
            int randomIndex = Random.Range(0, cardPrefabList.Count);

            ShowCard   additionalCard = cardPrefabList[randomIndex];
            CardPicker picker         = Instantiate(cardPicker);

            picker.SetOption(additionalCard, (cardpicker) => {
                if (!this.isSelected)
                {
                    GameManager.instance.AllCards.Add(new CardSet(additionalCard, 0));
                    cardpicker.image.sprite = null;
                    this.isSelected         = true;
                    GameDataHandler.SaveCards(GameManager.instance.AllCards);
                }
            });

            picker.transform.SetParent(cardLayout.transform);
        }
    }
    public void ToggleSelect()
    {
        CardPicker cardPicker = FindObjectOfType <CardPicker>();

        if (selected)
        {
            selected             = false;
            selectedImage.sprite = emptyImageSprite;
            cardPicker.UnSelectOne();
        }
        else
        {
            if (cardPicker.CanSelectMore())
            {
                selected             = true;
                selectedImage.sprite = selectedImageSprite;
                cardPicker.SelectOne();
            }
        }
    }
Example #15
0
    void Start()
    {
        if (gm == null)
        {
            gm = this.GetComponent <GameManager>();
        }

        if (!cardPicker)
        {
            cardPicker = FindObjectOfType <CardPicker>();
        }

        if (!weightSpawner)
        {
            weightSpawner = FindObjectOfType <SpawnWeight>();
        }

        score = 0;

        // Freeze the balance bar at first try so the game isn't lost
        balanceBody.GetComponent <Rigidbody2D>().bodyType = RigidbodyType2D.Kinematic;

        cardPicker.ChooseCard();
    }
Example #16
0
    IEnumerator OnlineGameSetupCoroutine()
    {
        System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
        stopwatch.Start();
        Player localPlayer = NetInterface.Get().LocalPlayerIsP1 ? player1 : player2;

        NetInterface.Get().localPlayer = localPlayer;
        // disable end turn button if going second
        endTurnButton.gameObject.SetActive(NetInterface.Get().LocalPlayerIsP1);
        // lock local player if they are going second
        if (!NetInterface.Get().LocalPlayerIsP1)
        {
            localPlayer.AddLock(activePlayerLock);
        }

        // send opponent starting deck
        NetInterface.Get().SyncStartingDeck();
        stopwatch.Stop();
        //Debug.Log("Finished instantiating cards " + stopwatch.ElapsedMilliseconds + "ms");
        // wait for opponent to finish sending their deck
        while (!NetInterface.Get().opponentFinishedSendingCards)
        {
            yield return(null);
        }

        // place starting engi
        int  engiCoord = NetInterface.Get().LocalPlayerIsP1 ? 1 : 6;
        Tile engiTile  = board.GetTileByCoordinate(engiCoord, engiCoord);
        Card engineer  = CreateCardById((int)CardIds.Engineer, localPlayer);

        engineer.Play(engiTile);
        (engineer as CreatureCard).Creature.Counters.Add(CounterType.Build, 3);

        // place HQ
        int  hqCoord = NetInterface.Get().LocalPlayerIsP1 ? 0 : board.boardWidth - 1;
        Tile hqTile  = board.GetTileByCoordinate(hqCoord, hqCoord);
        Card hq      = CreateCardById((int)CardIds.Headquarters, localPlayer);

        hq.Owner = NetInterface.Get().localPlayer;
        hq.Play(hqTile);
        // draw starting hand
        Deck localPlayerDeck = localPlayer.Deck;

        NetInterface.Get().SignalSetupComplete();

        // network setup is done so wait for opponent to catch up if needed
        while (!NetInterface.Get().finishedWithSetup)
        {
            yield return(null);
        }
        NetInterface.Get().gameSetupComplete = true;

        // starting mulligan
        List <Card> mullList = localPlayerDeck.CardList.Take(STARTING_HAND_SIZE).ToList();

        CardPicker.CreateAndQueue(mullList, 0, STARTING_HAND_SIZE, "Select cards to return to deck", localPlayer, delegate(List <Card> cardList)
        {
            mullList.RemoveAll(c => cardList.Contains(c));
            foreach (Card c in mullList)
            {
                c.MoveToCardPile(localPlayer.Hand, null);
            }
            while (localPlayer.Hand.CardList.Count < STARTING_HAND_SIZE)
            {
                localPlayer.Deck.CardList[0].MoveToCardPile(localPlayer.Hand, null);
            }

            localPlayer.Deck.Shuffle();

            ActivePlayer    = localPlayer;
            NonActivePlayer = GetOppositePlayer(localPlayer);
        });
    }