Пример #1
0
    private bool selectPiece(componentPiece piece)
    {
        //Validate the piece can be selected
        if (_currentTurn == TURN_GAME_OVER)
        {
            return false;
        }
        if (_gameMode != chessGameMode.NONE) //If it's a chess game.
        {
            chessPiece cPiece = (chessPiece) piece;
            if((cPiece.getTeamColor() != _playerColors[_currentTurn]) && (_playerColors[_currentTurn] != chessPiece.TeamColor.ALL))
            {
                return false;
            }
        }

        //Deselect last selected piece if there was one
        deselectPiece();

        //Select the new piece
        _selectedPiece = piece;
        Vector2 location = _selectedPiece.getLocation();

        //Move the selected tile object
        GameObject selectedThing = GameObject.Find("Selected Tile");
        selectedThing.GetComponent<Renderer>().enabled = true;
        //Debug.Log("Location : " + location.x + "," + location.y);
        selectedThing.transform.localPosition = new Vector3(BOARD_OFFSET_X + ((int)location.x * BOARD_TILE_WIDTH), BOARD_OFFSET_Y + ((int)location.y * BOARD_TILE_HEIGHT), TILE_EFFECT_Z);

        //Generate the valid move tile effect objects
        foreach(Vector2 validMove in piece.getValidMoveList(this))
        {
            GameObject moveTileEffect = new GameObject("ValidMoveTile"+_validMoveTileEffects.Count);
            SpriteRenderer spriteRenderer = moveTileEffect.AddComponent<SpriteRenderer>();
            spriteRenderer.sprite = selectedThing.GetComponent<SpriteRenderer>().sprite;
            moveTileEffect.AddComponent<BoxCollider2D>();
            componentValidMoveTile compValidMoveTile = moveTileEffect.AddComponent<componentValidMoveTile>();
            compValidMoveTile.setLocation((int)validMove.x, (int)validMove.y);

            moveTileEffect.transform.SetParent(gameObject.transform, false);
            moveTileEffect.transform.localPosition = new Vector3(BOARD_OFFSET_X + ((int)validMove.x * BOARD_TILE_WIDTH), BOARD_OFFSET_Y + ((int)validMove.y * BOARD_TILE_HEIGHT), TILE_EFFECT_Z);

            _validMoveTileEffects.Add(moveTileEffect);
        }

        return true;
    }
Пример #2
0
 public void movePieceTo(componentPiece piece, int x, int y)
 {
     Vector2 pieceLocation = piece.getLocation();
     movePiece(piece, x - (int)pieceLocation.x, y - (int)pieceLocation.y);
 }