示例#1
0
        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);
        }
示例#2
0
        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]);
        }