public void OnClick_Shuffle() { PopupViewController.Open <LevelShufflePopup>(); }
public void OnClick_Pause() { PopupViewController.Open <LevelPausePopup>(); }
public void OnClick_OpenDebugMenu() { PopupViewController.Open <WorldMapDebugPopup>(); }
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; } }
public static void ShowMessage(string message) { var popup = PopupViewController.Open <MessagePopup>(); popup.SetMessageText(message); }