public static UpdateDeckCountEventArgs Create(int count) { UpdateDeckCountEventArgs result = ReferencePool.Acquire <UpdateDeckCountEventArgs>(); result.deckCount = count; return(result); }
private void DrawCardsFromDeck(int drawCount) { while (true) { var deckSize = deckPile.Count; if (deckSize >= drawCount) { var prevDeckSize = deckSize; var drawnCards = new List <int>(drawCount); for (int i = 0; i < drawCount; i++) { var cardId = deckPile[0]; deckPile.RemoveAt(0); handPile.Add(cardId); drawnCards.Add(cardId); } // handPresentatation.CreateCardInHand(drawnCards, prevDeckSize); GameEntry.Event.FireNow(this, DeckDrawingEventArgs.Create(drawnCards)); GameEntry.Event.FireNow(this, UpdateDeckCountEventArgs.Create(prevDeckSize)); } else { deckPile.AddRange(discardPile); discardPile.Clear(); GameEntry.Event.FireNow(this, UpdateDiscardCountEventArgs.Create(discardPile.Count)); // handPresentatation.UpdateDiscardPileSize(discardPile.Count); if (drawCount > deckPile.Count + discardPile.Count) { drawCount = deckPile.Count + discardPile.Count; } deckPile.Shuffle(); continue; } break; } }
private void UpdateDeckCount(object sender, GameEventArgs e) { UpdateDeckCountEventArgs ne = (UpdateDeckCountEventArgs)e; gameUI.SetAmount(ne.deckCount, GameForm.DeckOrDiscard.deck); }