Example #1
0
        private void DisableScroll(float delay = 0f)
        {
            if (_navigation.IsTweening)
            {
                return;
            }

            _scrollEnabled = false;

            var puzzleScale = _levels[_selectedLevel].GetComponent <PuzzleScale>();
            var puzzleState = _levels[_selectedLevel].GetComponent <PuzzleState>();

            _navigation.Show();
            _moveDisplay.UpdateText(puzzleState.NumMoves, puzzleState.MovesBestScore, true, true);

            var level = _levels[_selectedLevel];

            level.GetComponentInChildren <PuzzleInfo>().Hide();

            var prevLevel = _levels.ElementAtOrDefault(_selectedLevel - 1);
            var nextLevel = _levels.ElementAtOrDefault(_selectedLevel + 1);

            prevLevel?.GetComponent <PuzzleState>()?.DestroyBoard(false);
            nextLevel?.GetComponent <PuzzleState>()?.DestroyBoard(false);

            prevLevel?.GetComponentInChildren <PuzzleInfo>()?.Hide();
            nextLevel?.GetComponentInChildren <PuzzleInfo>()?.Hide();

            puzzleScale.PuzzleInit += OnPuzzleInit;
            level.GetComponent <BoardAction>().PuzzleWin += OnPuzzleWin;
            puzzleState.LevelStateChanged += OnLevelStateChanged;
            puzzleState.BoardEnabled       = true;
            level.GetComponent <PuzzleView>().ResumeView();

            CameraScript.FitToDimensions(
                puzzleScale.Dimensions,
                puzzleScale.Margin,
                CameraZoomTime,
                LeanTweenType.easeInSine
                );

            var bounds = _levelBounds[_selectedLevel];
            var mid    = (bounds.Item1 + bounds.Item2) / 2f;

            // TODO: make configurable
            const float time = 0.5f;

            LeanTween.moveLocal(gameObject, Vector3.up * mid, time)
            .setEase(LeanTweenType.easeInOutSine)
            .setDelay(delay);

            Levels.SaveLevel(puzzleState.LevelState());
        }