Example #1
0
 public void FieldPressed(ChessFieldKeyBehaviuor field)
 {
     if (!nextTurnIsReady)
     {
         return;
     }
     nextTurnIsReady = false;
     StartCoroutine(doTurn(field));
 }
    protected virtual IEnumerator processMove(ChessFieldKeyBehaviuor field, Vector3 destination)
    {
        if (field.chessPieceHere != null)
        {
            yield return(field.chessPieceHere.ReturnToStock());
        }

        yield return(StartCoroutine(moveAnimation(destination)));

        curField.chessPieceHere = null;
        curField             = field;
        field.chessPieceHere = this;

        yield return(null);
    }
    public virtual Coroutine MoveToField(ChessFieldKeyBehaviuor field, bool moveImediately = false)
    {
        Vector3 pos = CommonTools.yPlaneVector(field.transform.position, transform.position.y);

        if (!moveImediately)
        {
            return(StartCoroutine(processMove(field, pos)));
        }
        else
        {
            curField             = field;
            field.chessPieceHere = this;
            transform.position   = pos;
            return(null);
        }
    }
Example #4
0
    IEnumerator doTurn(ChessFieldKeyBehaviuor field)
    {
        ChessPiece figureUnderField = allChessPieces.Find(x => x.currentField == field);

        if (lastHighlightedFields != null)
        {
            foreach (var f in lastHighlightedFields)
            {
                f.GetComponent <LightingKey>().ResetColor();
            }
        }


        if (currentChessPiece != null && currentChessPiece.PossibleField(field))
        {
            yield return(currentChessPiece.MoveToField(field));

            currentChessPiece = null;
        }
        else if (figureUnderField != null)
        {
            currentChessPiece     = figureUnderField;
            lastHighlightedFields = currentChessPiece.PossibleFields();
            foreach (var f in lastHighlightedFields)
            {
                f.GetComponent <LightingKey>().SetColor(f.chessPieceHere == null ? Color.green : Color.red);
            }
        }
        else
        {
            currentChessPiece = null;
        }

        nextTurnIsReady = true;
        yield return(null);
    }
 public bool PossibleField(ChessFieldKeyBehaviuor field)
 {
     return(System.Array.Find(PossibleFields(), x => x == field));
 }
 public virtual Coroutine ReturnToStock()
 {
     curField.chessPieceHere = null;
     curField = null;
     return(StartCoroutine(moveAnimation(TurnManager.Instance.GetStockPosition())));
 }
 public void SpawnChessPiece(ChessFieldKeyBehaviuor field, bool spawnWhite)
 {
     Instantiate(spawnWhite?whitePawnPrefab : blackPawnPrefab).GetComponent <ChessPiece>().MoveToField(field, true);
 }