Ejemplo n.º 1
0
    //public void InitializeMoving()
    //{

    //}
    public bool MovePiece()//bool isStarting, bool forward, Board.Direction direction, MoveSet moveSet)
    {
        //if (isStarting) InitializeMoves(direction, moveSet);
        PieceMove move       = moveSet.GetMove();
        Vector3   moveVector = move.ForwardVector();
        float     friction   = currentBoardLoc.GetFriction(transform.position.x, transform.position.z);

        moveVector = friction * Speed * Time.deltaTime * moveVector;
        float remainingDistance = Vector3.Distance(transform.position, move.GetEndLoc());

        if (remainingDistance > moveVector.magnitude)
        {
            transform.position += moveVector;
        }
        else
        {
            //PieceMove nextMove = moveSet.GetNextMove(transform.position, this, currentBoardLoc, pieceDirection);
            if (moveSet.HasNextMove())
            {
                BoardSpace nextSpace = currentBoardLoc.GetSpaceByDirection(pieceDirection);
                pieceDirection = move.Direction;
                PieceMove nextMove = moveSet.GetNextMove(transform.position, this, currentBoardLoc, pieceDirection);
                //currentBoardLoc = nextSpace;
                move = nextMove;
                float deltaTime = Time.deltaTime * moveVector.magnitude / remainingDistance;
                moveVector = move.ForwardVector();
                friction   = 1; //currentBoardLoc.GetFriction()
                moveVector = friction * Speed * deltaTime * moveVector;
            }
            else
            {
                transform.position = move.GetEndLoc();

                PieceStat = PieceStats.idle;
                return(false);
            }
        }

        return(true);
    }