/// <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(); }
/// <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; } }