public void Draw(CardRepository cardRepository) { if (!cardRepository.IsLoadingComplete.Signaled || CurrentZone != Zone.SampleHand) { return; } var drawn = draw(cardRepository); if (drawn == null) { return; } TouchedCard = drawn; lock (DataSource) if (!DataSource.Contains(drawn)) { DataSource.Add(drawn); } DeckChanged?.Invoke( listChanged: SampleHand.GetCount(drawn.Id) == 1, countChanged: true, card: drawn, touchedChanged: true, changedZone: CurrentZone, changeTerminatesBatch: true); }
private Card draw(CardRepository cardRepository) { if (_library == null || _library.Count == 0) { return(null); } var index = _random.Next(_library.Count); var id = _library[index]; _library.RemoveAt(index); SampleHand.Add(id, SampleHand.GetCount(id) + 1); return(cardRepository.CardsById[id]); }