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); }
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); } }
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 }); }
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; } }
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"); }