/// <summary>
        /// Процедура активации подменю
        /// </summary>
        public override void Activate()
        {
            //начинаем проигрывать музыкальный трек лобби
            ParentGameObject.LinkedAppModel.GetSoundManager().PlaySfx(EAppSfxAssets.BallPocketed, false);

            ParentGameObject.LinkedAppModel.GetSoundManager().PlayBgMusic(EAppMusicAssets.LoungeBeforeLevelStart, true);

            //заполнение кнопок меню
            MenuUiElements = new LinkedList <UiElement>();

            LinkedList <KeyListenerData> buttonKeyListenerData = new LinkedList <KeyListenerData>();

            buttonKeyListenerData.AddLast(new KeyListenerData(EGameActionButton.Button_A,
                                                              PlayerRef, StartGameLevel, true));
            buttonKeyListenerData.AddLast(new KeyListenerData(EGameActionButton.Button_B,
                                                              PlayerRef, StartGameLevel, true));
            buttonKeyListenerData.AddLast(new KeyListenerData(EGameActionButton.Button_X,
                                                              PlayerRef, StartGameLevel, true));
            buttonKeyListenerData.AddLast(new KeyListenerData(EGameActionButton.Button_Start,
                                                              PlayerRef, StartGameLevel, true));
            buttonKeyListenerData.AddLast(new KeyListenerData(EGameActionButton.Dpad_Menu_Left,
                                                              PlayerRef, SelectPrevLevel, false));
            buttonKeyListenerData.AddLast(new KeyListenerData(EGameActionButton.Dpad_Menu_Right,
                                                              PlayerRef, SelectNextLevel, false));

            SelectStartLevelButton = new UiElementButton(buttonKeyListenerData, ParentGameObject);
            MenuUiElements.AddLast(SelectStartLevelButton);

            ReturnBackButton = CreateStandardButton(ReturnBack);
            MenuUiElements.AddLast(ReturnBackButton);

            SelectUiElement(MenuUiElements.First.Value);

            //активация управления

            DefineStdMenuHandlingControls();


            base.Activate();
        }
Beispiel #2
0
        /// <summary>
        /// Процедура активации подменю
        /// </summary>
        public override void Activate()
        {
            //заполнение кнопок меню
            MenuUiElements = new LinkedList <UiElement>();

            LinkedList <KeyListenerData> buttonKeyListenerData = new LinkedList <KeyListenerData>();

            buttonKeyListenerData.AddLast(new KeyListenerData(EGameActionButton.Button_A,
                                                              PlayerRef, PlayTrack, false));
            buttonKeyListenerData.AddLast(new KeyListenerData(EGameActionButton.Button_B,
                                                              PlayerRef, PlayTrack, false));
            buttonKeyListenerData.AddLast(new KeyListenerData(EGameActionButton.Button_X,
                                                              PlayerRef, PlayTrack, false));
            buttonKeyListenerData.AddLast(new KeyListenerData(EGameActionButton.Button_Start,
                                                              PlayerRef, PlayTrack, false));
            buttonKeyListenerData.AddLast(new KeyListenerData(EGameActionButton.Dpad_Menu_Left,
                                                              PlayerRef, PrevTrack, false));
            buttonKeyListenerData.AddLast(new KeyListenerData(EGameActionButton.Dpad_Menu_Right,
                                                              PlayerRef, NextTrack, false));

            MusicPlayerControlButton = new UiElementButton(buttonKeyListenerData, ParentGameObject);
            MenuUiElements.AddLast(MusicPlayerControlButton);

            ReturnBackButton = CreateStandardButton(ReturnBack);
            MenuUiElements.AddLast(ReturnBackButton);

            SelectUiElement(MenuUiElements.First.Value);


            //активация управления
            DefineStdMenuHandlingControls();

            //выключение музыки главного меню
            ParentGameObject.LinkedAppModel.GetSoundManager().StopMusic();

            base.Activate();
        }
        /// <summary>
        /// Обработка состояния элементов интерфейса
        /// </summary>
        private void ProcessUiElementsList()
        {
            //добавить фон
            _currentMenuElements = new List <RenderingData.RenderingData?>();
            _currentMenuElements.Add(new RenderingData.RenderingData(
                                         new RenderingSprite(
                                             ActualSubassetsDataLibrary.GetSprite(MainMenuControlComponentViewRenderableComponent.MAIN_MENU_BG),
                                             0, 0, 0, Color.White, 1)));

            //добавить кнопки опций с текущими значениями
            int currentMenuY = MainMenuControlComponentViewRenderableComponent.Y_OFFSET_MENU_START;

            if (_modelProviderComponent.MenuUiElements != null)
            {
                string ChooseFontKey(UiElementButton parButton)
                {
                    return(parButton.IsHovered
            ? ViewBehaviourConsts.DEFAULT_APP_FONT
            : ViewBehaviourConsts
                           .MENU_DARK_INACTIVE_APP_FONT);
                }

                //опция режима отображения
                UiElementButton targetButton  = _modelProviderComponent.ScreenModeButton;
                string          chosenFontKey = ChooseFontKey(targetButton);

                _currentMenuElements.Add(new RenderingData.RenderingData(new RenderingString(-1, MENU_LEFT_SIDE_X_OFFSET,
                                                                                             currentMenuY,
                                                                                             "Windowed", ActualSubassetsDataLibrary.GetFont(chosenFontKey), Color.White, 1, 1,
                                                                                             EHorizontalAlign.Left, EVerticalAlign.Top)));

                var graphicsSettings =
                    (GraphicsSettingsDataOpenTk)LinkedViewEventsHandler.LinkedView.CurrentGraphicsSettings;
                bool isFullscreenEnabled = graphicsSettings.IsFullscreen;

                string valueCaption = !isFullscreenEnabled ? "Yes" : "No";

                _currentMenuElements.Add(new RenderingData.RenderingData(new RenderingString(-1, MENU_RIGHT_SIDE_X_OFFSET,
                                                                                             currentMenuY,
                                                                                             valueCaption, ActualSubassetsDataLibrary.GetFont(chosenFontKey), Color.White, 1, 1,
                                                                                             EHorizontalAlign.Right, EVerticalAlign.Top)));

                currentMenuY += MainMenuControlComponentViewRenderableComponent.Y_OFFSET_MENU_ELEMENTS;

                //опция режима музыки
                targetButton  = _modelProviderComponent.MusicModeButton;
                chosenFontKey = ChooseFontKey(targetButton);

                _currentMenuElements.Add(new RenderingData.RenderingData(new RenderingString(-1, MENU_LEFT_SIDE_X_OFFSET,
                                                                                             currentMenuY,
                                                                                             "Music", ActualSubassetsDataLibrary.GetFont(chosenFontKey), Color.White, 1, 1,
                                                                                             EHorizontalAlign.Left, EVerticalAlign.Top)));

                var  gameSettings   = _modelProviderComponent.ParentGameObject.LinkedAppModel.GetGameplaySettingsData();
                bool isMusicEnabled = gameSettings.IsMusicEnabled;

                valueCaption = isMusicEnabled ? "Yes" : "No";

                _currentMenuElements.Add(new RenderingData.RenderingData(new RenderingString(-1, MENU_RIGHT_SIDE_X_OFFSET,
                                                                                             currentMenuY,
                                                                                             valueCaption, ActualSubassetsDataLibrary.GetFont(chosenFontKey), Color.White, 1, 1,
                                                                                             EHorizontalAlign.Right, EVerticalAlign.Top)));

                currentMenuY += MainMenuControlComponentViewRenderableComponent.Y_OFFSET_MENU_ELEMENTS;

                //опция режима звуковых эффектов
                targetButton  = _modelProviderComponent.SfxModeButton;
                chosenFontKey = ChooseFontKey(targetButton);

                _currentMenuElements.Add(new RenderingData.RenderingData(new RenderingString(-1, MENU_LEFT_SIDE_X_OFFSET,
                                                                                             currentMenuY,
                                                                                             "Sound", ActualSubassetsDataLibrary.GetFont(chosenFontKey), Color.White, 1, 1,
                                                                                             EHorizontalAlign.Left, EVerticalAlign.Top)));

                bool isSfxEnabled = gameSettings.IsSfxEnabled;

                valueCaption = isSfxEnabled ? "Yes" : "No";

                _currentMenuElements.Add(new RenderingData.RenderingData(new RenderingString(-1, MENU_RIGHT_SIDE_X_OFFSET,
                                                                                             currentMenuY,
                                                                                             valueCaption, ActualSubassetsDataLibrary.GetFont(chosenFontKey), Color.White, 1, 1,
                                                                                             EHorizontalAlign.Right, EVerticalAlign.Top)));

                currentMenuY += MainMenuControlComponentViewRenderableComponent.Y_OFFSET_MENU_ELEMENTS;

                //опция режима стартовой заставки
                targetButton  = _modelProviderComponent.IntroCutsceneModeButton;
                chosenFontKey = ChooseFontKey(targetButton);

                _currentMenuElements.Add(new RenderingData.RenderingData(new RenderingString(-1, MENU_LEFT_SIDE_X_OFFSET,
                                                                                             currentMenuY,
                                                                                             "Intro", ActualSubassetsDataLibrary.GetFont(chosenFontKey), Color.White, 1, 1,
                                                                                             EHorizontalAlign.Left, EVerticalAlign.Top)));

                bool isIntroEnabled = !gameSettings.IsIntroDisabled;

                valueCaption = isIntroEnabled ? "Yes" : "No";

                _currentMenuElements.Add(new RenderingData.RenderingData(new RenderingString(-1, MENU_RIGHT_SIDE_X_OFFSET,
                                                                                             currentMenuY,
                                                                                             valueCaption, ActualSubassetsDataLibrary.GetFont(chosenFontKey), Color.White, 1, 1,
                                                                                             EHorizontalAlign.Right, EVerticalAlign.Top)));

                currentMenuY += MainMenuControlComponentViewRenderableComponent.Y_OFFSET_MENU_ELEMENTS;

                //кнопка возврата
                targetButton  = _modelProviderComponent.ReturnBackButton;
                chosenFontKey = ChooseFontKey(targetButton);

                _currentMenuElements.Add(new RenderingData.RenderingData(new RenderingString(-1,
                                                                                             MainMenuControlComponentViewRenderableComponent.X_CENTERED_OFFSET_MENU, currentMenuY,
                                                                                             "Back", ActualSubassetsDataLibrary.GetFont(chosenFontKey), Color.White, 1, 1,
                                                                                             EHorizontalAlign.Middle, EVerticalAlign.Top)));

                currentMenuY += MainMenuControlComponentViewRenderableComponent.Y_OFFSET_MENU_ELEMENTS;
            }
        }