protected void MoveUndo(DataObjectMove previousMove) { transform.position = previousMove.PreviousPosition; currentDirection = previousMove.PreviousDirection; transform.rotation = previousMove.PreviousRotation; isometricModel.transform.localRotation = previousMove.PreviousLocalRotation; }
private void Undo() { if (allPreviousMoves == null || allPreviousMoves.Count < 1 || boatState == BoatState.Destroyed) { return; } DataObjectMove previousMove = allPreviousMoves.Pop(); MoveUndo(previousMove); }
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())); }