示例#1
0
        protected void MoveUndo(DataObjectMove previousMove)
        {
            transform.position = previousMove.PreviousPosition;

            currentDirection = previousMove.PreviousDirection;

            transform.rotation = previousMove.PreviousRotation;

            isometricModel.transform.localRotation = previousMove.PreviousLocalRotation;
        }
示例#2
0
        private void Undo()
        {
            if (allPreviousMoves == null || allPreviousMoves.Count < 1 || boatState == BoatState.Destroyed)
            {
                return;
            }

            DataObjectMove previousMove = allPreviousMoves.Pop();

            MoveUndo(previousMove);
        }
示例#3
0
        protected void MoveAndRotate(Direction dir)
        {
            if (BoatState == BoatState.MoveAndRotate)
            {
                return;
            }

            DataObjectMove obj = new DataObjectMove(Type, (Vector2)transform.position, transform.rotation, isometricModel.transform.localRotation, currentDirection);

            allPreviousMoves.Push(obj);

            //Get input: target position, target direction
            targetDirection = dir;
            targetPosition  = (Vector2)transform.position + MapConstantProvider.Instance.TileSize * UtilMapHelpers.GetDirectionVector(targetDirection);

            PlayMovementSound();

            if (moveAndRotateCR != null)
            {
                StopCoroutine(moveAndRotateCR);
            }
            moveAndRotateCR = StartCoroutine(CR_MoveAndRotate(targetPosition, targetDirection, () => OnCompletedRotateAndMove()));
        }