Пример #1
0
    /// <summary>
    /// Uses the Nonagression Pact by marking two pieces that cannot interact with one another.
    /// </summary>
    public void UseNonagressionPact( Tile t1, Tile t2, Info info )
    {
        //Add each piece as each other's nonagression partner
        t1.currentPiece.nonagressionPartners.Add ( t2.currentPiece.color );
        t2.currentPiece.nonagressionPartners.Add ( t1.currentPiece.color );

        //Animate nonaggression pact
        Sequence s = DOTween.Sequence ( )
            .Append ( t1.currentPiece.sprite.DOColor ( new Color32 ( 150, 50, 255, 255 ), ANIMATE_TIME ).SetLoops ( 2, LoopType.Yoyo ) )
            .Insert ( 0, t2.currentPiece.sprite.DOColor ( new Color32 ( 150, 50, 255, 255 ), ANIMATE_TIME ).SetLoops ( 2, LoopType.Yoyo ) )
            .OnComplete ( () =>
            {
                //Deactivate ability
                info.abilityInUse.IsActive = false;
                info.DisableAbility ( info.abilityInUse.ID, info.currentPlayer );

                //Enable abilities use buttons
                info.EnableAbilityButtons ( );

                //Reset ability selection list
                info.abilityTileSelection.Clear ( );

                //Reset board
                info.ResetBoardColor ( );

                //Highlight pieces
                info.HighlightCurrentPlayerPieces ( );
            } );
    }
Пример #2
0
    /// <summary>
    /// Uses the Conversion ability by stealing the opponent's piece for the player's own use.
    /// </summary>
    public void UseConversion( Piece convertedPiece, Info info )
    {
        //Deactivate ability
        info.selectedPiece.ability.IsActive = false;
        info.DisableAbility ( Conversion.ID, info.currentPlayer );

        //Check for any abilities
        if ( convertedPiece.ability != null )
        {
            //Remove the ability
            info.DisableAbility ( convertedPiece.ability.ID, convertedPiece.owner );
            convertedPiece.ability = null;
        }

        //Remove any nonagression partners
        convertedPiece.nonagressionPartners.Clear ( );

        //Convert piece
        convertedPiece.owner = info.currentPlayer;
        info.currentPlayer.pieces.Add ( convertedPiece );
        info.opponent.pieces.Remove ( convertedPiece );

        //Change piece's color
        convertedPiece.color = PieceColor.Grey;

        //Animate conversion
        Vector3 rot;
        if ( convertedPiece.owner == info.player1 )
            rot = new Vector3 ( 0, 0, 45 );
        else
            rot = new Vector3 ( 0, 0, 225 );
        Sequence s = DOTween.Sequence ( )
            .AppendInterval ( ANIMATE_TIME )
            .Append ( convertedPiece.sprite.DOColor ( Piece.Display.Grey, ANIMATE_TIME ) )
            .Insert ( ANIMATE_TIME, convertedPiece.transform.DORotate ( rot, ANIMATE_TIME ) );
    }
Пример #3
0
    /// <summary>
    /// Uses the Mad Hatter ability by swapping two pieces.
    /// </summary>
    public void UseMadHatter( Tile t1, Tile t2, Info info )
    {
        //Store temporary value
        Piece temp = t1.currentPiece;

        //Swap pieces
        t1.currentPiece.currentTile = t2;
        t2.currentPiece.currentTile = t1;
        t1.currentPiece = t2.currentPiece;
        t2.currentPiece = temp;

        //Bring pieces to front
        t1.currentPiece.sprite.sortingOrder = 2;
        t2.currentPiece.sprite.sortingOrder = 2;

        //Animate mad hatter
        Sequence s = DOTween.Sequence ( )
            .Append ( t1.currentPiece.transform.DOMove ( t1.transform.position, ANIMATE_TIME ) )
            .Insert ( 0, t2.currentPiece.transform.DOMove ( t2.transform.position, ANIMATE_TIME ) )
            .OnComplete ( () =>
            {
                //Deactivate ability
                info.abilityInUse.IsActive = false;
                info.DisableAbility ( info.abilityInUse.ID, info.currentPlayer );

                //Enable abilities use buttons
                info.EnableAbilityButtons ( );

                //Reset ability selection list
                info.abilityTileSelection.Clear ( );

                //Reset board
                info.ResetBoardColor ( );

                //Highlight pieces
                info.HighlightCurrentPlayerPieces ( );
            } );
    }
Пример #4
0
    /// <summary>
    /// Uses the armor ability to avoid a capture.
    /// </summary>
    public void UseArmor( Piece p, Info info )
    {
        //Deactivate ability
        p.ability.IsActive = false;
        info.DisableAbility ( Armor.ID, p.owner );

        //Check if jumped by a piece with sacrifice
        if ( HasSacrifice ( info.selectedPiece ) )
        {
            //Allow the piece to double jump armor
            info.sacrificeArmorTile = info.selectedPiece.currentTile;
        }

        //Animate armor
        p.sprite.DOFade ( 0, ANIMATE_TIME ).SetLoops ( 2, LoopType.Yoyo );
    }