//Looks at each diagonal movements and sees if it is a legal movement and adds it to a list of PieceMoves public List <PieceMove> getLegalMoves(BoardLocation boardLocation) { List <PieceMove> legalMoves = new List <PieceMove>(); if (!boardLocation.isEmpty()) //if there is a piece at this location { PieceHandler ph = boardLocation.piece.GetComponent <PieceHandler>(); if (ph.player == currentPlayer) { int i = boardLocation.i; int j = boardLocation.j; calculateLegalMoves(ref i, ref j, ref legalMoves, ref ph, 1, 1); //if the NE space is empty calculateLegalMoves(ref i, ref j, ref legalMoves, ref ph, 1, -1); //if the NW space is empty if (ph.king == true) { calculateLegalMoves(ref i, ref j, ref legalMoves, ref ph, -1, 1); //if the SE space is empty calculateLegalMoves(ref i, ref j, ref legalMoves, ref ph, -1, -1); //if the SW space is empty } } selectedPiece = boardLocation; } currentLegalMoves = legalMoves; displayLegalMoves(legalMoves); return(legalMoves); }
void Start() { if (GameManager.instance.GameOver) { return; } parentPiece = transform.parent.GetComponent <PieceHandler>(); GameManager.instance.OnPiecePlaced += NewPlacement; }
public void addPiece(PieceHandler piece) { int index = checkForRedundancies(); if (index != -1) { pieces[index] = piece; } else { pieces.Add(piece); } }
public bool TryMove(PieceHandler pieceHandler, GameObject destination) { bool moveFound = false; bool promotionFound = false; Square squareTo = Board.GetSquare(destination.name); foreach (Move move in pieceHandler.LegalMoves) { if (move.To == squareTo) { moveFound = true; switch (move.Name) { case Move.MoveNames.PawnPromotionBishop: bishopPromotion = move; promotionFound = true; break; case Move.MoveNames.PawnPromotionKnight: knightPromotion = move; promotionFound = true; break; case Move.MoveNames.PawnPromotionQueen: queenPromotion = move; promotionFound = true; break; case Move.MoveNames.PawnPromotionRook: rookPromotion = move; promotionFound = true; break; default: moveToMake = move; break; } } } if (promotionFound) { UIHandler.Busy = true; promotionSelector.SetActive(true); } return(moveFound); }
void RpcChangeTrangsform(GameObject checker, Vector3 moveTo) { //Destroy (checker); PieceHandler _ph = checker.GetComponent <PieceHandler>(); _ph.Move(moveTo); //Debug.Log ("ASSIGNED A VALUE"); //if (_ph == null) { // Debug.Log ("I'm null"); //} else { // Debug.Log ("I'm not null"); //} //_ph.target = moveTo; }
public void ReportPiecePlaced() { if (OnPiecePlaced != null) { OnPiecePlaced(); } List <Collision> blockList = new List <Collision>(); foreach (Collision block in FindObjectsOfType <Collision>()) { blockList.Add(block); } for (int i = 19; i >= 0; i--) { int rowBlockCount = 0; foreach (Collision block in blockList) { if (block.GetCurrentRow() == i) { rowBlockCount++; } } // print("Blocks in row " + i + ": " + rowBlockCount); if (rowBlockCount > 9) { GameObject newCollection = new GameObject(); PieceHandler ph = newCollection.AddComponent <PieceHandler>(); ph.gameObject.SetActive(false); ph.Uncontrollable = true; foreach (Collision block in blockList) { if (block.GetCurrentRow() == i) { Destroy(block.gameObject); } else if (block.GetCurrentRow() < i) { block.transform.parent = newCollection.transform; ph.boxes.Add(block); } } ph.gameObject.SetActive(true); } } }
void OnMouseDown( ) { if (UIHandler.Busy) { return; } if (boardHandler.GameOver) { return; } if (Game.PlayerToPlay.Intellegence == Player.PlayerIntellegenceNames.Computer) { return; } if (PieceHandler.Selected != null) { PieceHandler selectedHandler = PieceHandler.Selected.GetComponent <PieceHandler>( ); if (selectedHandler.TryMoveTo(gameObject)) { selectedHandler.Deselect( ); } else if (Piece != null) { PieceHandler pieceHandler = Piece.GetComponent <PieceHandler>( ); if (pieceHandler.Colour == Game.PlayerToPlay.Colour) { selectedHandler.Deselect( ); pieceHandler.Select( ); } } } else if (Piece != null) { PieceHandler pieceHandler = Piece.GetComponent <PieceHandler>( ); if (pieceHandler.Colour == Game.PlayerToPlay.Colour) { pieceHandler.Select( ); } } }
private void ProcessMove(Move move = null) { move = move ?? Game.MoveHistory.Last; Square fromSquare = move.From; SquareHandler fromSquareHandler = GameObject.Find(fromSquare.Name).GetComponent <SquareHandler>( ); PieceHandler movedPieceHandler = fromSquareHandler.Piece.GetComponent <PieceHandler>( ); Square toSquare = move.To; SquareHandler toSquareHandler = GameObject.Find(toSquare.Name).GetComponent <SquareHandler>( ); fromSquareHandler.Piece = null; if (toSquareHandler.Piece != null) { GameObject.Destroy(toSquareHandler.Piece); toSquareHandler.Piece = null; } toSquareHandler.Piece = movedPieceHandler.gameObject; movedPieceHandler.Square = toSquareHandler.gameObject; movedPieceHandler.gameObject.transform.position = toSquareHandler.gameObject.transform.position; /* special cases */ switch (move.Name) { case Move.MoveNames.CastleQueenSide: case Move.MoveNames.CastleKingSide: ProcessCastle(move); break; case Move.MoveNames.PawnPromotionBishop: case Move.MoveNames.PawnPromotionKnight: case Move.MoveNames.PawnPromotionQueen: case Move.MoveNames.PawnPromotionRook: ProcessPromotion(move, movedPieceHandler.gameObject); break; } }
// Use this for initialization void Start () { matrixTemplate = new int[,] { {1,1,1,2,2,2,2,2}, {1,1,1,0,0,2,2,1}, {1,1,1,0,0,1,1,1}, {1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1}, {1,1,1,0,0,1,1,1}, {1,1,1,0,0,2,1,1}, {1,1,1,1,1,2,1,1} }; groundMatrix = new Block[matrixTemplate.GetUpperBound(0)+1,matrixTemplate.GetUpperBound(1)+1]; ph = GameObject.Find("GlobalManager").GetComponent<PieceHandler>(); CreateGround(matrixTemplate); ph.SaveBoard(groundMatrix, matrixTemplate); }
//Populates the legalMoves reference with legal moves based on the diagonal direction put into the parameters. void calculateLegalMoves(ref int i, ref int j, ref List <PieceMove> legalMoves, ref PieceHandler ph, int iOffset, int jOffset) { int playerModifier = currentPlayer ? -1 : 1; //If its player2 go in opposite direction iOffset *= playerModifier; jOffset *= playerModifier; if (inRange(i + iOffset, 0, 8) && inRange(j + jOffset, 0, 8) && board[i + iOffset][j + jOffset].isEmpty()) //checks if diagonal is on board and if the space is empty { legalMoves.Add(new PieceMove(board[i + iOffset][j + jOffset])); if (i + iOffset == 0 || i + iOffset == 7 && ph.king == false) { legalMoves[legalMoves.Count - 1].kingPiece = true; } } else if (inRange(i + iOffset, 0, 8) && inRange(j + jOffset, 0, 8) && board[i + iOffset][j + jOffset].hasEnemy(currentPlayer) && inRange(i + (iOffset * 2), 0, 8) && inRange(j + (jOffset * 2), 0, 8) && board[i + (iOffset * 2)][j + (jOffset * 2)].isEmpty()) //checks if diagonal is on board and space is enemy, then if the next diagonal is on board and empty { legalMoves.Add(new PieceMove(board[i + (iOffset * 2)][j + (jOffset * 2)], board[i + iOffset][j + jOffset])); if (i + (iOffset * 2) == 0 || i + (iOffset * 2) == 7 && ph.king == false) { legalMoves[legalMoves.Count - 1].kingPiece = true; } } }
// Use this for initialization void Start () { mr = GetComponent<MeshRenderer>(); originalColor = mr.material.color; ph = GameObject.Find("GlobalManager").GetComponent<PieceHandler>(); matrixPosition = new Vector2((int)transform.position.x, (int)transform.position.z); }
protected void SetUp() { pH = new PieceHandler(); }
// Use this for initialization void Start () { ph = GameObject.Find("GlobalManager").GetComponent<PieceHandler>(); block = gameObject.GetComponent<Block>(); }
public bool hasEnemy(bool player) { PieceHandler ph = piece.GetComponent <PieceHandler>(); return(ph.player != player); }
public bool TryMove( PieceHandler pieceHandler, GameObject destination ) { bool moveFound = false; bool promotionFound = false; Square squareTo = Board.GetSquare( destination.name ); foreach( Move move in pieceHandler.LegalMoves ) { if( move.To == squareTo ) { moveFound = true; switch( move.Name ) { case Move.MoveNames.PawnPromotionBishop: bishopPromotion = move; promotionFound = true; break; case Move.MoveNames.PawnPromotionKnight: knightPromotion = move; promotionFound = true; break; case Move.MoveNames.PawnPromotionQueen: queenPromotion = move; promotionFound = true; break; case Move.MoveNames.PawnPromotionRook: rookPromotion = move; promotionFound = true; break; default: moveToMake = move; break; } } } if( promotionFound ) { UIHandler.Busy = true; promotionSelector.SetActive( true ); } return moveFound; }
// Start is called before the first frame update void Awake() { Instance = this; }