Exemple #1
0
        private void OnViewUpdated()
        {
            if (!enabled)
            {
                return;
            }

            _viewUpdating = false;

            // Update the Move Display
            _moveDisplay.UpdateText(_puzzleState.NumMoves, _puzzleState.MovesBestScore, _numActions == 0);

            if (_puzzleState.Win)
            {
                _gameAudio.Play(GameClip.WinBoard);
                LeanTween.cancel(gameObject);

                foreach (var node in _puzzleState.PlayerNodes.Where(nodeView => nodeView.Node.Final))
                {
                    var lastArc = _puzzleView.ConnectArcs(node);
                    var spinDir = lastArc?.Arc?.Direction ?? Direction.Right;
                    node.WinAnimation(spinDir);
                }

                _puzzleState.DestroyBoard();
                PuzzleWin?.Invoke(_puzzleState.CurrentLevel);
            }
            else if (_moveQueue.Count > 0)
            {
                var move = _moveQueue.Dequeue();
                Play(move.Item1, move.Item2);
            }
        }