Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
        }