/// <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 ( ); } ); }
/// <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 ) ); }
/// <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 ( ); } ); }
/// <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 ); }