IEnumerator DrawCard() { AudioSourceCard.Play(); CardHolder parent = tableaus[CurrentPlayerIdx]; LastDrawnCard = PopCard(parent.name != "Bottom"); yield return(CurrentPlayer.AddCard(LastDrawnCard, false)); OnDrawCard(); NumActions++; }
IEnumerator PlayCardCR(Card card) { Interactable = false; AudioSourceCard.Play(); LastCardPlayed = card; card.FaceDown = false; CurrentPlayer.RemoveCard(card); switch (card.Rank) { case Rank.Ace: if (IsOffensive(WasteCard)) { AudioPlayShield(); } AccumulatedCards = 0; break; case Rank.Two: AudioPlaySword(); AccumulatedCards += 2; if (CurrentPlayerHasPotion(PotionType.BasicSword)) { yield return(AnimatePotion(PotionType.BasicSword)); AccumulatedCards += 1; } break; case Rank.Joker: AudioPlaySword(); AccumulatedCards += 5; if (CurrentPlayerHasPotion(PotionType.BasicSword)) { yield return(AnimatePotion(PotionType.BasicSword)); AccumulatedCards += 1; } break; case Rank.Seven: SkipCounter = SkipCounter == 1 ? 0 : 1; break; case Rank.Eight: AudioPlayTotem(); break; case Rank.Jack: SwitchDirection(); break; case Rank.Queen: AudioPlayQueen(); break; } if (card.Rank == Rank.Eight && WasteCard.Rank == Rank.Eight) { Crazy8 = card.Suit; } uiPlaySpecialBar.ShowBasedOnCard(card, Crazy8); if (card.Rank == Rank.Queen && WasteCard.Rank == Rank.Queen) { AccumulatedCards = 0; yield return(SpawnZombieCR()); } if (IsOffensive(card) && WasteCard.Rank == Rank.Kraken) { /* * SpawnParticleSystem(wasteCard.transform, destroyKrakinPrefab); */ if (WasteCard && WasteCard.gameObject) { DestroyImmediate(WasteCard.gameObject); } } if (IsDefensive(card) && WasteCard.Rank == Rank.Alruana) { /* * SpawnParticleSystem(wasteCard.transform, destroyKrakinPrefab); */ if (WasteCard && WasteCard.gameObject) { DestroyImmediate(WasteCard.gameObject); } } yield return(EnqueueWasteCardCR(card)); switch (card.Rank) { case Rank.Queen: if (AccumulatedCards > 0) { Time.timeScale = 0.8f; if (CurrentPlayerHasPotion(PotionType.TemptressShield)) { yield return(AnimatePotion(PotionType.TemptressShield)); AccumulatedCards -= Math.Min(2, AccumulatedCards); } else { yield return(DrawAccumulatedCards(2)); } if (AccumulatedCards > 0) { SwitchDirection(); /* * reverseDirectionCounter = 0; * reverseDirectionKeepGoing = true; */ } Time.timeScale = 1.0f; } break; } /* * if (pvp) * { * SendRealtimePokerHandMsg(new PokerHandMessage((int)PVP_CMDS.PLAY_CARD, currentPlayerIdx, card.dcIndex.ToString())); * } */ if (!CurrentPlayerHasCards) { // TODO: RoundOver(); } if (!IsSpellCard(card)) { NumActions++; } Interactable = true; }