Example #1
0
    IEnumerator MakeMoveCoroutine(Move move, System.Action callback)
    {
        var pawnDisplay = GetPawnDisplay(move.PawnPos);
        var pawn        = pawnDisplay.Pawn;

        var newPos = move.NewPos.ToVector2();

        pawnDisplay.MoveToFront();

        var movementCoroutine = MovementCoroutines.SmoothlyMove(pawnDisplay.transform.position, newPos, 0.5f);

        foreach (var pos in movementCoroutine)
        {
            pawnDisplay.transform.position = pos;
            yield return(new WaitForEndOfFrame());
        }

        pawnDisplay.MoveToBack();
        pawnDisplay.transform.position = newPos;

        if (move.NewPos.y == 0 && Gameplay.Instance.LowerPawnsColor != pawn.Color ||
            move.NewPos.y == 7 && Gameplay.Instance.LowerPawnsColor == pawn.Color)
        {
            pawnDisplay.SetKing();
        }

        if (move.IsATake)
        {
            var takenPawn = GetPawnDisplay(move.TakePos.Value, tryGet: true);
            pawns.Remove(takenPawn);
            takenPawn.TakeDown();
        }

        callback();
    }