protected override async Task ClickedPieceAsync(int deck)
 {
     if (_model.DrewDominoAsync == null)
     {
         throw new BasicBlankException("The drew domino was never populated.  Rethink");
     }
     await _model.DrewDominoAsync.Invoke(RemainingList.GetSpecificItem(deck)); //i think
 }
        public D FindDoubleDomino(int whichOne)
        {
            var output = RemainingList.Single(Items => Items.FirstNum == whichOne && Items.SecondNum == whichOne);

            RemoveDomino(output);
            output.IsUnknown = false;
            return(output);
        }
 protected void PassDominos()
 {
     if (_model.BoneYard !.RemainingList.Count() == 0)
     {
         throw new BasicBlankException("Cannot have 0 dominos after shuffling");
     }
     PlayerList !.ForEach(ThisPlayer =>
     {
         ThisPlayer.MainHandList.ReplaceRange(_model.BoneYard.FirstDraw(DominosToPassOut));
         if (ThisPlayer.MainHandList.Count() == 0)
         {
             throw new BasicBlankException("Cannot have 0 dominos when passing out");
         }
     });
     AfterPassedDominos();
 }
        public async Task DrewDominoReceivedAsync(int deck)
        {
            D thisDomino = _model.BoneYard !.RemainingList.GetSpecificItem(deck);

            await DrawDominoAsync(thisDomino);
        }
        public D DrawDomino()
        {
            int Decks = DrawPiece();

            return(RemainingList.GetSpecificItem(Decks));
        }