public override void Play(AbstractCharacter source, AbstractArgument target) { base.Play(source, target); var rnd = new System.Random(); List <AbstractCard> cards = source.GetDrawPile().deck.OrderBy(x => rnd.Next()).Take(CHOICES).ToList(); // Efficient? Not particularly. But draw piles will probably only ever range to at most 50 cards anyways. NegotiationManager.Instance.SelectCardsFromList(cards, 1, true, this); }
public void Render() { current = TurnManager.Instance.GetTurnList()[0]; drawPileCards.text = current.GetDrawPile().GetSize().ToString(); discardPileCards.text = current.GetDiscardPile().GetSize().ToString(); actionCounter.text = current.curAP + "/" + current.maxAP; charName.text = current.NAME; }
// post-negotiation cleanup helper function public void Cleanup(AbstractCharacter character) { actionQueue.Clear(); character.coreArgument.poise = 0; character.GetHand().Clear(); character.GetSupportArguments().Clear(); character.GetDrawPile().Clear(); character.GetDiscardPile().Clear(); character.GetScourPile().Clear(); }
// (Hopefully) deep copy deck contents from permadeck to drawpile, then shuffle it. public void DeepCopyDeck(AbstractCharacter character) { foreach (AbstractCard card in character.permaDeck.ToList()) { Type cardType = card.GetType(); object copiedCard = Activator.CreateInstance(cardType); // This _should_ be acceptable enough for what I'm doing. // https://stackoverflow.com/questions/12263099/function-to-clone-an-arbitrary-object foreach (var field in cardType.GetFields()) { object originalCardValue = field.GetValue(card); // Debug.Log(field + ": " + originalCardValue); field.SetValue(copiedCard, originalCardValue); } character.GetDrawPile().AddCard(copiedCard as AbstractCard); } character.GetDrawPile().Shuffle(); }
public void RenderCounts() { drawCount.text = player.GetDrawPile().GetSize().ToString(); discardCount.text = player.GetDiscardPile().GetSize().ToString(); if (player.GetScourPile().GetSize() > 0) { scourObject.SetActive(true); } scourCount.text = player.GetScourPile().GetSize().ToString(); actionCount.text = player.curAP.ToString(); }