Пример #1
0
        /// <summary>
        /// Стандартный конструктор без параметров
        /// </summary>
        public AppModel()
        {
            //загружаем основные настройки
            AppSettingsPath = AppInfoConsts.GameplaySettingsPath;
            bool settingsLoadingResult =
                AppSerializationManager.LoadDataFromFileSafe <GameplaySettingsData>(AppSettingsPath,
                                                                                    out _appGameplaySettingsData);

            if (!settingsLoadingResult)
            {
                _appGameplaySettingsData = GameplaySettingsData.GetDefaultSettings();
            }

            //настройки (даже свежезагруженные) нужно сохранить, чтобы убедится, что новые добавленные разработчиком
            //пункты также были отражены в файле
            AppSerializationManager.SaveDataToFile <GameplaySettingsData>(_appGameplaySettingsData, AppSettingsPath);


            //загружаем рекорды игроков
            bool recordsLoadingResult =
                AppSerializationManager.LoadDataFromFileSafe(AppRecordsPath, out _appRecordsData);

            if (!recordsLoadingResult)
            {
                _appRecordsData = RecordsData.GetStandardRecords();
            }

            _appRecordsData.CheckAndApplyConstraints();
            //рекорды (даже свежезагруженные) нужно сохранить, чтобы убедится, что новые добавленные разработчиком
            //дополнительные поля также были отражены в файле

            AppSerializationManager.SaveDataToFile(_appRecordsData, AppRecordsPath);
        }
 /// <summary>
 /// Действия для очистки таблицы рекордов
 /// </summary>
 private void RecordsClear()
 {
     ParentGameObject.LinkedAppModel.GetRecordsData().SetDefaultValues();
     AppSerializationManager.SaveDataToFile(ParentGameObject.LinkedAppModel.GetRecordsData(),
                                            ParentGameObject.LinkedAppModel.GetRecordsDataPath());
     ViewUpdateSignal(0.0);
 }
Пример #3
0
        /// <summary>
        /// Действия по вызову смены настройки стартовой заставки
        /// </summary>
        private void ChangeIntroCutsceneMode()
        {
            bool newValue = !ParentGameObject.LinkedAppModel.GetGameplaySettingsData().IsIntroDisabled;

            ParentGameObject.LinkedAppModel.GetGameplaySettingsData().IsIntroDisabled =
                newValue;
            AppSerializationManager.SaveDataToFile(ParentGameObject.LinkedAppModel.GetGameplaySettingsData(),
                                                   ParentGameObject.LinkedAppModel.GetAppSettingsPath());
            ViewUpdateSignal(0.0);
        }
Пример #4
0
        /// <summary>
        /// Создает файл со стандартными настройками отображения
        /// </summary>
        public override void CreateDefaultGraphicalSettings()
        {
            GraphicsSettingsDataOpenTk graphicsSettingsDataOpenTk = new GraphicsSettingsDataOpenTk();

            Console.WriteLine(graphicsSettingsDataOpenTk.SettingScreenResolution.Width);
            CurrentGraphicsSettings = graphicsSettingsDataOpenTk;
            //сразу же сериализуем их
            AppSerializationManager.SaveDataToFile <GraphicsSettingsDataOpenTk>(graphicsSettingsDataOpenTk,
                                                                                GraphicalSettingsPath);
        }
        /// <summary>
        /// Действия при изменении режима отображения
        /// </summary>
        private void OnScreenModeChanged()
        {
            var graphicsSettings =
                (GraphicsSettingsDataOpenTk)LinkedViewEventsHandler.LinkedView.CurrentGraphicsSettings;
            bool isFullscreenEnabledNewValue = !graphicsSettings.IsFullscreen;

            graphicsSettings.IsFullscreen = isFullscreenEnabledNewValue;

            AppSerializationManager.SaveDataToFile(graphicsSettings,
                                                   LinkedViewEventsHandler.LinkedView.GraphicalSettingsPath);
        }
Пример #6
0
        /// <summary>
        /// Осуществляет загрузку настроек отображения
        /// </summary>
        public override void LoadSettings()
        {
            if (!File.Exists(GraphicalSettingsPath))
            {
                CreateDefaultGraphicalSettings();
            }

            var loaded = AppSerializationManager.LoadDataFromFile <GraphicsSettingsDataOpenTk>(GraphicalSettingsPath);

            CurrentGraphicsSettings = loaded;
            AppSerializationManager.SaveDataToFile(CurrentGraphicsSettings, GraphicalSettingsPath);
        }
Пример #7
0
        /// <summary>
        /// Действия по вызову смены настройки музыки
        /// </summary>
        private void ChangeMusicMode()
        {
            bool newValue = !ParentGameObject.LinkedAppModel.GetGameplaySettingsData().IsMusicEnabled;


            ParentGameObject.LinkedAppModel.GetGameplaySettingsData().IsMusicEnabled =
                newValue;

            AppSerializationManager.SaveDataToFile(ParentGameObject.LinkedAppModel.GetGameplaySettingsData(),
                                                   ParentGameObject.LinkedAppModel.GetAppSettingsPath());

            if (!newValue)
            {
                ParentGameObject.LinkedAppModel.GetSoundManager().StopMusic();
            }
            else
            {
                ParentGameObject.LinkedAppModel.GetSoundManager().PlayBgMusic(EAppMusicAssets.MainMenu, true);
            }

            ViewUpdateSignal(0.0);
        }
Пример #8
0
 /// <summary>
 /// Конструктор с параметром, переопределяющим стандартный путь к настройкам игры
 /// </summary>
 /// <param name="parSettingsPath">Переопределенный путь к настройкам игры</param>
 public AppModel(string parSettingsPath)
 {
     AppSettingsPath          = parSettingsPath;
     _appGameplaySettingsData = AppSerializationManager.LoadDataFromFile <GameplaySettingsData>(AppSettingsPath);
 }
Пример #9
0
        /// <summary>
        /// Сигнал фиксированного обновления модели (используется преимущественно для обработки физики и ввода)
        /// </summary>
        /// <param name="parFixedDeltaTime">Время шага фиксированного обновления в секундах</param>
        public override void FixedUpdate(double parFixedDeltaTime)
        {
            switch (CurrentStage)
            {
            case EResultsScreenStage.ChooseNextAction:
            {
                if (_playersManager.IsActionButtonPressed(_mainPlayer))
                {
                    if (IsBankAndExitActionSelected)
                    {
                        //check if can get into the records
                        if (ParentGameObject.LinkedAppModel.GetRecordsData().PlayerRecordsInfo.Last().PointsEarned <
                            PlayerActualData.Score)
                        {
                            //can be added to the records
                            _playersManager.ClearLastPressedKeyboardKey();
                            CurrentStage = EResultsScreenStage.ChooseNameForTheRecords;
                        }
                        else
                        {
                            ScreenClose(EResultsScreenFinalChoice.BankAndExit);
                        }
                    }
                    else
                    {
                        ScreenClose(EResultsScreenFinalChoice.ContinuePlaying);
                    }
                }
                else
                {
                    if (_playersManager.IsButtonPressed(_mainPlayer, EGameActionButton.Dpad_Menu_Up) ||
                        _playersManager.IsButtonPressed(_mainPlayer, EGameActionButton.Dpad_Menu_Down))
                    {
                        IsBankAndExitActionSelected = !IsBankAndExitActionSelected;
                    }
                }

                break;
            }

            case EResultsScreenStage.ChooseNameForTheRecords:
            {
                if (_playersManager.IsButtonPressed(_mainPlayer, EGameActionButton.Button_Start))
                {
                    //confirm name and place to the records
                    ParentGameObject.LinkedAppModel.GetRecordsData()
                    .TryAddRecord(new RecordPlayerInfo(PlayerActualData.Score, CurrentPlayerName));
                    AppSerializationManager.SaveDataToFile(ParentGameObject.LinkedAppModel.GetRecordsData(),
                                                           ParentGameObject.LinkedAppModel.GetRecordsDataPath());
                    ScreenClose(EResultsScreenFinalChoice.BankAndExit);
                }
                else
                {
                    if (_playersManager.LastPressedKeyboardKey != "")
                    {
                        if (_playersManager.LastPressedKeyboardKey == MPlayersManager.SPECIAL_BACKSPACE_SIGNATURE)
                        {
                            if (CurrentPlayerName.Length > 0)
                            {
                                CurrentPlayerName = CurrentPlayerName.Remove(CurrentPlayerName.Length - 1, 1);
                            }
                        }
                        else
                        {
                            if (CurrentPlayerName.Length < RecordPlayerInfo.MAX_CHARS_IN_NAME)
                            {
                                CurrentPlayerName = CurrentPlayerName + _playersManager.LastPressedKeyboardKey;
                            }
                        }

                        _playersManager.ClearLastPressedKeyboardKey();
                    }
                }

                break;
            }

            default:
                throw new ArgumentOutOfRangeException();
            }
        }