Example #1
0
 public void OnClick_Shuffle()
 {
     PopupViewController.Open <LevelShufflePopup>();
 }
Example #2
0
 public void OnClick_Pause()
 {
     PopupViewController.Open <LevelPausePopup>();
 }
Example #3
0
 public void OnClick_OpenDebugMenu()
 {
     PopupViewController.Open <WorldMapDebugPopup>();
 }
Example #4
0
        private void HandleLevelEvent(Level.Event levelEvent)
        {
            Logger.LogWarningEditor($"Handle level event: {levelEvent.EventType}");

            switch (levelEvent.EventType)
            {
            // TODO: keep transitioner in loading mode until we receive a LoadLevel event
            case Level.EventType.LoadLevel:
            {
                LoadLevel(levelEvent as Level.LoadLevelEvent);
            } break;

            case Level.EventType.Win:
            {
                var winPopup = PopupViewController.Open <LevelWinPopup>();
                winPopup.ShowScore(levelEvent as Level.LevelWinEvent, _levelConfig);
            } break;

            case Level.EventType.Lose:
            {
                PopupViewController.Open <LevelLosePopup>();
            } break;

            case Level.EventType.UpdateScore:
            {
                var scoreEvent = levelEvent as Level.UpdateScoreEvent;
                _levelScoreView.SetPoints(scoreEvent.Points);
                _levelScoreView.SetMoves(_levelConfig.challengeValue - scoreEvent.Moves);
            } break;

            case Level.EventType.MatchSuccess:
            {
                DeselectAllGridItems();
            } break;

            case Level.EventType.MatchRejected:
            {
                DeselectAllGridItems();
            } break;

            case Level.EventType.ItemsCreated:
            {
                var itemsCreatedEvent = levelEvent as Level.ItemsCreatedEvent;

                float speed = GridItemSpeed;

                foreach (var createdItem in itemsCreatedEvent.CreatedItems)
                {
                    Assert.IsNull(TryGetGridItem(createdItem.Index));

                    var gridItem = CreateGridItemView(createdItem.Index, createdItem.ItemId);
                    gridItem.DoCreateAction(createdItem.ItemId, speed);
                }
            } break;

            case Level.EventType.ItemsMoved:
            {
                var itemsMovedEvent = levelEvent as Level.ItemsMovedEvent;

                float speed = GridItemSpeed;

                foreach (var movedItem in itemsMovedEvent.MovedItems)
                {
                    Assert.IsNull(TryGetGridItem(movedItem.Index));

                    var sourceItem = TryGetGridItem(movedItem.ReferenceIndex.Value);
                    Assert.IsNotNull(sourceItem);
                    Assert.IsTrue(sourceItem.ID == movedItem.ItemId);

                    sourceItem.SetGridIndex(movedItem.Index.x, movedItem.Index.y);
                    sourceItem.DoMoveAction(CalculateGridNodePosition(movedItem.Index), speed);
                }
            } break;

            case Level.EventType.ItemsSwapped:
            {
                var itemsSwappedEvent = levelEvent as Level.ItemsSwappedEvent;

                float speed = GridItemSpeed * 2f;                               // speed up the swap animation

                foreach (var swappedItem in itemsSwappedEvent.SwappedItems)
                {
                    var sourceItem = TryGetGridItem(swappedItem.ReferenceIndex.Value);
                    Assert.IsNotNull(sourceItem);
                    Assert.IsTrue(sourceItem.ID == swappedItem.ItemId);

                    var destItem = TryGetGridItem(swappedItem.Index);
                    Assert.IsNotNull(destItem);
                    Assert.IsTrue(!sourceItem.IsEmpty);                             // TODO: we can't verify the item type of the other node with this data structure.

                    sourceItem.SetGridIndex(swappedItem.Index);
                    sourceItem.DoMoveAction(CalculateGridNodePosition(swappedItem.Index), speed);

                    destItem.SetGridIndex(swappedItem.ReferenceIndex.Value);
                    destItem.DoMoveAction(CalculateGridNodePosition(swappedItem.ReferenceIndex.Value), speed);
                }
            } break;

            case Level.EventType.ItemsMatched:
            {
                var itemsMatchedEvent = levelEvent as Level.ItemsMatchedEvent;

                foreach (var matchedItem in itemsMatchedEvent.MatchedItems)
                {
                    var gridItem = TryGetGridItem(matchedItem.Index);
                    Assert.IsNotNull(gridItem);
                    Assert.IsTrue(!gridItem.IsEmpty);

                    CreateGridItemMatchedFX(gridItem, matchedItem.Points, 5f);

                    DestroyGridItemView(gridItem);
                }
            } break;

            case Level.EventType.ItemsDestroyed:
            {
                var itemsDestroyedEvent = levelEvent as Level.ItemsDestroyedEvent;

                foreach (var destroyedItem in itemsDestroyedEvent.DestroyedItems)
                {
                    var gridItem = TryGetGridItem(destroyedItem.Index);
                    Assert.IsNotNull(gridItem);
                    Assert.IsTrue(!gridItem.IsEmpty);

                    // switch (itemsDestroyedEvent.Reason)
                    // {
                    //  case CauseOfDeath.Matched:
                    //  {
                    //      CreateGridItemMatchedFX(gridItem, destroyedItem.Points, 5f);
                    //  } break;
                    // }

                    DestroyGridItemView(gridItem);
                }
            } break;

            default:
                Logger.LogError($"Unhandled level event: {levelEvent.EventType}");
                break;
            }
        }
Example #5
0
        public static void ShowMessage(string message)
        {
            var popup = PopupViewController.Open <MessagePopup>();

            popup.SetMessageText(message);
        }