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