Exemplo n.º 1
0
 public void PopulateCenter(SimpleDominoInfo thisDomino)
 {
     if (DominoList.Count != 3)
     {
         throw new BasicBlankException("Must have 3 dominos before populating center");
     }
     DominoList.ReplaceItem(CenterDomino, thisDomino);
     CenterDomino = thisDomino; //just in case.
 }
        //hopefully choose number not needed (?)
        private async Task DominoClickedAsync(SimpleDominoInfo thisDomino)
        {
            if (_gameBoard.IsValidMove(thisDomino.Deck) == false)
            {
                await UIPlatform.ShowMessageAsync("Illegal Move");

                return;
            }
            await _mainGame.MakeMoveAsync(thisDomino.Deck);
        }
        public bool CanPlay(int deck)
        {
            if (SingleInfo !.PlayerCategory != EnumPlayerCategory.Computer && _test !.AllowAnyMove == true)
            {
                return(true); //because we are allowing any move for testing.
            }
            SimpleDominoInfo thisDomino = _model.DominosList !.GetSpecificItem(deck);

            return(thisDomino.FirstNum == SingleInfo.NumberChosen || thisDomino.SecondNum == SingleInfo.NumberChosen);
        }
Exemplo n.º 4
0
 public bool IsValidMove(int whichOne, SimpleDominoInfo thisDomino)
 {
     if (FirstDomino.Deck <= 0 && whichOne == 1 || SecondDomino.Deck <= 0 && whichOne == 2)
     {
         if (CenterDomino.FirstNum == CenterDomino.SecondNum)
         {
             if (thisDomino.FirstNum == CenterDomino.FirstNum | thisDomino.SecondNum == CenterDomino.FirstNum)
             {
                 return(true);
             }
         }
         if (thisDomino.FirstNum == CenterDomino.FirstNum && whichOne == 1)
         {
             return(true);
         }
         if (thisDomino.SecondNum == CenterDomino.FirstNum && whichOne == 1)
         {
             return(true);
         }
         if (thisDomino.FirstNum == CenterDomino.SecondNum && whichOne == 2)
         {
             return(true);
         }
         if (thisDomino.SecondNum == CenterDomino.SecondNum && whichOne == 2)
         {
             return(true);
         }
         return(false);
     }
     if (whichOne == 1 & FirstDomino.CurrentFirst == thisDomino.FirstNum)
     {
         return(true);
     }
     if (whichOne == 1 & FirstDomino.CurrentFirst == thisDomino.SecondNum)
     {
         return(true);
     }
     if (whichOne == 1)
     {
         return(false);
     }
     if (whichOne != 2)
     {
         throw new BasicBlankException("Must be 1 or 2; not " + whichOne);
     }
     if (SecondDomino.CurrentSecond == thisDomino.FirstNum)
     {
         return(true);
     }
     if (SecondDomino.CurrentSecond == thisDomino.SecondNum)
     {
         return(true);
     }
     return(false);
 }
        private DominosXF <SimpleDominoInfo> CreateGraphics(SimpleDominoInfo thisD)
        {
            DominosXF <SimpleDominoInfo> output = new DominosXF <SimpleDominoInfo>();

            output.SendSize(ts.TagUsed, thisD);
            Binding binding = new Binding(nameof(GameBoardCP.DominoCommand));

            binding.Source = _model !.GameBoard1;
            output.SetBinding(DominosXF <SimpleDominoInfo> .CommandProperty, binding);
            output.CommandParameter = thisD;
            return(output);
        }
 private void AddComputer(int deck)
 {
     if (BasicData.Client == true)
     {
         return; //host does computer.
     }
     if (SaveRoot !.ComputerList.ObjectExist(deck) == false)
     {
         SimpleDominoInfo thisDomino = _model.DominosList !.GetSpecificItem(deck);
         SaveRoot.ComputerList.Add(thisDomino);
     }
 }
Exemplo n.º 7
0
 public void ClearBoard(DominosRegularSaveInfo saveRoot)
 {
     _saveRoot         = saveRoot;
     FirstDomino       = new SimpleDominoInfo();
     FirstDomino.Deck  = -1;
     SecondDomino      = new SimpleDominoInfo();
     SecondDomino.Deck = -2;
     CenterDomino      = new SimpleDominoInfo();
     CenterDomino.Deck = -3;
     DominoList.ReplaceRange(new CustomBasicList <SimpleDominoInfo> {
         FirstDomino, CenterDomino, SecondDomino
     });
 }
Exemplo n.º 8
0
        public void MakeMove(int whichOne, SimpleDominoInfo thisDomino)
        {
            if (whichOne != 1 && whichOne != 2)
            {
                throw new BasicBlankException("Must be 1 or 2 for makemove");
            }
            thisDomino.IsEnabled     = true;
            thisDomino.IsSelected    = false;
            thisDomino.Drew          = false;
            thisDomino.CurrentFirst  = thisDomino.FirstNum;
            thisDomino.CurrentSecond = thisDomino.SecondNum; // make sure its not rotated
            if (SecondDomino.Deck <= 0 && whichOne == 2)
            {
                SecondDomino.CurrentSecond = CenterDomino.FirstNum;
            }
            if (FirstDomino.Deck <= 0 && whichOne == 1)
            {
                FirstDomino.CurrentFirst = CenterDomino.FirstNum;
            }
            if (whichOne == 1)
            {
                if (FirstDomino.CurrentFirst == thisDomino.FirstNum & thisDomino.FirstNum != thisDomino.SecondNum)
                {
                    thisDomino.CurrentFirst  = thisDomino.SecondNum;
                    thisDomino.CurrentSecond = thisDomino.FirstNum;
                }
                DominoList.ReplaceItem(FirstDomino, thisDomino);

                FirstDomino = thisDomino;
            }
            else
            {
                if (SecondDomino.CurrentSecond == thisDomino.SecondNum & thisDomino.FirstNum != thisDomino.SecondNum)
                {
                    thisDomino.CurrentFirst  = thisDomino.SecondNum;
                    thisDomino.CurrentSecond = thisDomino.FirstNum;
                }
                DominoList.ReplaceItem(SecondDomino, thisDomino);
                SecondDomino = thisDomino;
            }
        }
Exemplo n.º 9
0
        private async Task PrivateDominoClicked(SimpleDominoInfo domino)
        {
            if (DominoPileClicked == null)
            {
                throw new BasicBlankException("No domino pile function was created.  Rethink");
            }
            if (domino.Deck == CenterDomino.Deck)
            {
                throw new BasicBlankException("Should never click on center domino.");
            }
            if (domino.Deck == FirstDomino.Deck)
            {
                await DominoPileClicked.Invoke(1);

                return;
            }
            if (domino.Deck == SecondDomino.Deck)
            {
                await DominoPileClicked.Invoke(2);

                return;
            }
            throw new BasicBlankException("Problem");
        }