public void Show(WorldMap.ViewModel viewModel, WorldSheet.Row worldRow, StageType stageType) { _sharedViewModel = viewModel; _sharedViewModel.SelectedStageId .Subscribe(stageId => UpdateStageInformation( stageId, States.Instance.CurrentAvatarState?.level ?? 1) ) .AddTo(gameObject); _sharedViewModel.WorldInformation.TryGetWorld(worldRow.Id, out var worldModel); UpdateStageInformation(_sharedViewModel.SelectedStageId.Value, States.Instance.CurrentAvatarState.level); if (_sharedViewModel.SelectedStageId.Value == 1) { stageHelpButton.Show(); } else { stageHelpButton.Hide(); } _stageType = stageType; SetBottomMenu(stageType); world.Set(worldRow); var questStageId = Game.Game.instance.States .CurrentAvatarState.questList .OfType <WorldQuest>() .Where(x => !x.Complete) .OrderBy(x => x.Goal) .FirstOrDefault()? .Goal ?? -1; world.ShowByStageId(_sharedViewModel.SelectedStageId.Value, questStageId); if (worldModel.IsUnlocked) { UnlockWorld(worldModel.GetNextStageIdForPlay(), worldModel.GetNextStageId()); } else { LockWorld(); } base.Show(); }
public void MimisbrunnrClick() { if (!btnMimisbrunnr.IsUnlocked) { btnMimisbrunnr.JingleTheCat(); return; } const int worldId = GameConfig.MimisbrunnrWorldId; var worldSheet = Game.Game.instance.TableSheets.WorldSheet; var worldRow = worldSheet.OrderedList.FirstOrDefault( row => row.Id == worldId); if (worldRow is null) { Notification.Push(MailType.System, L10nManager.Localize("ERROR_WORLD_DOES_NOT_EXIST")); return; } var wi = States.Instance.CurrentAvatarState.worldInformation; if (!wi.TryGetWorld(worldId, out var world)) { LocalLayerModifier.AddWorld( States.Instance.CurrentAvatarState.address, worldId); if (!wi.TryGetWorld(worldId, out world)) { // Do nothing. return; } } if (!world.IsUnlocked) { // Do nothing. return; } var SharedViewModel = new WorldMap.ViewModel { WorldInformation = wi, }; if (mimisbrunnrExclamationMark.gameObject.activeSelf) { var addressHax = ReactiveAvatarState.Address.Value.ToHex(); var key = string.Format(FirstOpenMimisbrunnrKeyFormat, addressHax); PlayerPrefs.SetInt(key, 1); } Mixpanel.Track("Unity/Enter Mimisbrunnr"); _coLazyClose = StartCoroutine(CoLazyClose()); AudioController.PlayClick(); AnalyticsManager.Instance.OnEvent(AnalyticsManager.EventName.ClickHardBattle); SharedViewModel.SelectedWorldId.SetValueAndForceNotify(world.Id); SharedViewModel.SelectedStageId.SetValueAndForceNotify(world.GetNextStageId()); var stageInfo = Find <UI.StageInformation>(); stageInfo.Show(SharedViewModel, worldRow, StageInformation.StageType.Mimisbrunnr); var status = Find <Status>(); status.Close(true); }