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(); }
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); }); }
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); }); }
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)); }
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; } }); }
void Start() { card1 = null; card2 = null; //flipBackCards = new ArrayList(); //flipBackTimer = new ArrayList(); Score = 0; cardPicker = gameObject.GetComponent("CardPicker") as CardPicker; flipToATimer = 0; cardsDoNotMatch = false; }
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(); }
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(); } } }
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(); }
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); }); }