public void OnMove(Tuple <Peice, Point> moveData) { PlaySound(Sounds.move); if (myGame.CanDraw()) { btn_draw.Enabled = true; } else { btn_draw.Enabled = false; } }
public void SelectSquare() { if (!_selectorInBound) { return; } GameObject piece = GetPieceGameObject(_currentHoverSquareCord); // When no piece is currently selected if (!_isPieceSelected) { if (piece) { // Select piece (checks if selected piece is on player's side) if (_currentGame.SelectPeice(_currentHoverSquareCord)) { // Fetch and display possible moves List <Point> possibleMoves = _currentGame.GetSelectedMoves(); // Check if selected piece has available moves, else unselect it if (!possibleMoves.Any()) { return; } foreach (Point move in possibleMoves) { // Create square colliders and add them to _squareColliders Tuple <float, float> position = ToCord(move); var p = Instantiate(squarePossibleMovementsPrefab, currentBoard.transform); p.transform.localPosition = new Vector3(position.Item1, currentBoard.transform.position.y + 0.1f, position.Item2); p.transform.localScale *= 0.5f; _squareColliders.Add(p); } _selectedPiece = piece; _prevMat = _selectedPiece.GetComponent <Renderer>().material; _selectedPiece.GetComponent <Renderer>().material = selectedMaterial; _isPieceSelected = true; } } } // When a piece is already selected else { // If reselecting same piece, deselect if (piece == _selectedPiece) { _selectedPiece.GetComponent <Renderer>().material = _prevMat; _selectedPiece = null; _isPieceSelected = false; RemoveSquareColliders(); return; } else { // Check that we can make this move if (!_currentGame.GetSelectedMoves().Contains(_currentHoverSquareCord)) { return; } // If there's already a piece in the case we've to delete the corresponding game object if (piece) { Destroy(piece); } _currentGame.MakeMove(_currentHoverSquareCord); var newCoord = ToCord(_currentHoverSquareCord); _selectedPiece.transform.localPosition = new Vector3(newCoord.Item1, 0, newCoord.Item2); _selectedPiece.GetComponent <Renderer>().material = _prevMat; _selectedPiece = null; _isPieceSelected = false; RemoveSquareColliders(); if (_currentGame.CanDraw()) { if (!_drawOffered) { offerDrawButton.SetActive(true); _drawOffered = true; } } else { offerDrawButton.SetActive(false); } selectionButton.GetComponentInChildren <Text>().color = _currentGame.turn == PSide.Black ? Color.white : Color .black; selectionButton.GetComponent <Image>().color = _currentGame.turn == PSide.Black ? Color.black : Color.white; } } }