From 166a150ce4d4943f77b1da2a417362ebd417af04 Mon Sep 17 00:00:00 2001 From: JappaWakka Date: Tue, 28 Sep 2021 17:20:51 +0200 Subject: [PATCH] First Main Menu rework almost done The options row buttons in the Main Menu now open their respective tab in the Options Menu when selected The Content Pack Menu is positioned correctly The Content Pack & Language Menus now fade in and out --- P3D/Screens/MainMenu/PressStartScreen.vb | 221 +++++++++++++---------- P3D/Screens/NewOptionScreen.vb | 127 +++++++------ 2 files changed, 199 insertions(+), 149 deletions(-) diff --git a/P3D/Screens/MainMenu/PressStartScreen.vb b/P3D/Screens/MainMenu/PressStartScreen.vb index 1acb1721d..1d6dc8fa1 100644 --- a/P3D/Screens/MainMenu/PressStartScreen.vb +++ b/P3D/Screens/MainMenu/PressStartScreen.vb @@ -364,52 +364,76 @@ Public Class NewMainMenuScreen If CurrentScreen.Identification = Identifications.MainMenuScreen Then If Controls.Accept(True, False, False) Then ' Click on profiles. - For x = 0 To _MainProfiles.Count - 1 - Dim xOffset As Single = _screenOrigin.X + _screenOffset.X + x * 180 + ((x + 1) * 100 * (1 - _fadeInMain)) + Select Case _menuIndex + Case 0 + For x = 0 To _MainProfiles.Count - 1 + Dim xOffset As Single = _screenOrigin.X + _screenOffset.X + x * 180 + ((x + 1) * 100 * (1 - _fadeInMain)) - If New Rectangle(CInt(xOffset), CInt(_screenOrigin.Y + _screenOffset.Y), 160, 160).Contains(MouseHandler.MousePosition) Then - If _selectedProfile = x Then - If CurrentScreen.Identification = Identifications.MainMenuScreen Then - ClickedProfile() - SoundManager.PlaySound("select") + If New Rectangle(CInt(xOffset), CInt(_screenOrigin.Y + _screenOffset.Y), 160, 160).Contains(MouseHandler.MousePosition) Then + If _selectedProfile = x Then + If CurrentScreen.Identification = Identifications.MainMenuScreen Then + ClickedProfile() + SoundManager.PlaySound("select") + End If + Else + If CurrentScreen.Identification = Identifications.MainMenuScreen Then + Dim diff As Integer = x - _selectedProfile + _screenOffsetTarget.X -= diff * 180 + + _selectedProfile = x + End If + Exit For + End If End If - Else - If CurrentScreen.Identification = Identifications.MainMenuScreen Then - Dim diff As Integer = x - _selectedProfile - _screenOffsetTarget.X -= diff * 180 - - _selectedProfile = x + Next + If _MainProfiles(_selectedProfile).IsGameJolt AndAlso _MainProfiles(_selectedProfile).Loaded Then + ' Click on gamejolt buttons + Dim xOffset As Single = _screenOrigin.X + _screenOffset.X + (100 * (1 - _fadeInMain)) + Dim r As New Vector2(xOffset + 400, _screenOrigin.Y + _screenOffset.Y + 200) + If New Rectangle(CInt(r.X), CInt(r.Y), 32, 32).Contains(MouseHandler.MousePosition) Then + ButtonChangeMale() + ElseIf New Rectangle(CInt(r.X), CInt(r.Y) + 48, 32, 32).Contains(MouseHandler.MousePosition) Then + ButtonChangeFemale() + ElseIf New Rectangle(CInt(r.X), CInt(r.Y) + 48 + 48, 32, 32).Contains(MouseHandler.MousePosition) Then + ButtonResetSave() End If - Exit For End If - End If - Next - If _MainProfiles(_selectedProfile).IsGameJolt AndAlso _MainProfiles(_selectedProfile).Loaded Then - ' Click on gamejolt buttons - Dim xOffset As Single = _screenOrigin.X + _screenOffset.X + (100 * (1 - _fadeInMain)) - Dim r As New Vector2(xOffset + 400, _screenOrigin.Y + _screenOffset.Y + 200) - If New Rectangle(CInt(r.X), CInt(r.Y), 32, 32).Contains(MouseHandler.MousePosition) Then - ButtonChangeMale() - ElseIf New Rectangle(CInt(r.X), CInt(r.Y) + 48, 32, 32).Contains(MouseHandler.MousePosition) Then - ButtonChangeFemale() - ElseIf New Rectangle(CInt(r.X), CInt(r.Y) + 48 + 48, 32, 32).Contains(MouseHandler.MousePosition) Then - ButtonResetSave() - End If - End If - End If - If Controls.Dismiss(True, False, False) Then - ' Click on profiles. - For x = 0 To _MainProfiles.Count - 1 - Dim xOffset As Single = _screenOrigin.X + _screenOffset.X + x * 180 + ((x + 1) * 100 * (1 - _fadeInMain)) + If Controls.Dismiss(True, False, False) Then + ' Click on profiles. + For x = 0 To _MainProfiles.Count - 1 + Dim xOffset As Single = _screenOrigin.X + _screenOffset.X + x * 180 + ((x + 1) * 100 * (1 - _fadeInMain)) - If New Rectangle(CInt(xOffset), CInt(_screenOrigin.Y + _screenOffset.Y), 160, 160).Contains(MouseHandler.MousePosition) Then - If _selectedProfile = x Then - SoundManager.PlaySound("select") - DismissProfile() + If New Rectangle(CInt(xOffset), CInt(_screenOrigin.Y + _screenOffset.Y), 160, 160).Contains(MouseHandler.MousePosition) Then + If _selectedProfile = x Then + SoundManager.PlaySound("select") + DismissProfile() + End If + Exit For + End If + Next End If - Exit For - End If - Next + Case 2, 3 + For x = 0 To _OptionsProfiles.Count - 1 + Dim xOffset As Single = _screenOrigin.X + _optionsOffset.X + x * 180 + ((x + 1) * 100 * (1 - _fadeInMain)) + + If New Rectangle(CInt(xOffset), CInt(_screenOrigin.Y + _optionsOffset.Y), 160, 160).Contains(MouseHandler.MousePosition) Then + If _selectedProfile = x Then + If CurrentScreen.Identification = Identifications.MainMenuScreen Then + ClickedProfile() + SoundManager.PlaySound("select") + End If + Else + If CurrentScreen.Identification = Identifications.MainMenuScreen Then + Dim diff As Integer = x - _selectedProfile + _optionsOffsetTarget.X -= diff * 180 + + _selectedProfile = x + End If + Exit For + End If + End If + Next + End Select End If If CurrentScreen.Identification = Screen.Identifications.MainMenuScreen Then Select Case _menuIndex @@ -570,11 +594,16 @@ Public Class NewMainMenuScreen Private Sub ClickedProfile() - If _selectedProfile = 1 And Security.FileValidation.IsValid(False) = False Then - _messageBox.Show("File validation failed!" & Environment.NewLine & "Redownload the game's files to solve this problem.") - Else - _MainProfiles(_selectedProfile).SelectProfile() - End If + Select Case _menuIndex + Case 0 + If _selectedProfile = 1 And Security.FileValidation.IsValid(False) = False Then + _messageBox.Show("File validation failed!" & Environment.NewLine & "Redownload the game's files to solve this problem.") + Else + _MainProfiles(_selectedProfile).SelectProfile() + End If + Case 2, 3 + _OptionsProfiles(_selectedProfile).SelectProfile() + End Select End Sub Private Sub DismissProfile() @@ -655,12 +684,6 @@ Public Class NewMainMenuScreen Case Else DrawGradients(CInt(255 * _fadeInMain), False) End Select - - If _selectedProfile = 1 Then - DrawGradients(CInt(255 * _fadeInMain), True) - Else - DrawGradients(CInt(255 * _fadeInMain), False) - End If End If If IsCurrentScreen() Then @@ -669,10 +692,10 @@ Public Class NewMainMenuScreen GetFontRenderer().DrawString(FontManager.InGameFont, "Please wait" & LoadingDots.Dots, New Vector2(windowSize.Width / 2.0F - textSize.X / 2.0F, windowSize.Height / 2.0F - textSize.Y / 2.0F + 100), Color.White) Else Select Case _menuIndex - Case 2 - DrawOptionsProfiles(False) - Case 3 + Case 1, 3 DrawOptionsProfiles(True) + Case Else + DrawOptionsProfiles(False) End Select DrawMainProfiles() End If @@ -1171,7 +1194,7 @@ Public Class NewMainMenuScreen Case 2 text = "Controls" Case 3 - text = "Content Packs" + text = "Content" & Environment.NewLine & "Packs" End Select If alpha >= 250 And CurrentScreen.Identification = Identifications.MainMenuScreen Then @@ -1188,7 +1211,7 @@ Public Class NewMainMenuScreen _logoBounce = 0F End If End If - SpriteBatch.Draw(_sprite, New Rectangle(CInt(offset.X + 40), CInt(offset.Y + 36 + Math.Sin(_logoBounce) * 8.0F), 80, 80), New Color(255, 255, 255, alpha)) + SpriteBatch.Draw(_sprite, New Rectangle(CInt(offset.X + 40), CInt(offset.Y + 24 + Math.Sin(_logoBounce) * 8.0F), 80, 80), New Color(255, 255, 255, alpha)) Else If _loaded Then @@ -1280,51 +1303,55 @@ Public Class NewMainMenuScreen End Sub Public Sub SelectProfile() - If _isGameJolt And _loaded = False And GameJolt.API.LoggedIn = False Then - SetScreen(New GameJolt.LogInScreen(CurrentScreen)) - ElseIf _isNewGameButton Then - World.IsMainMenu = False - If GameModeManager.GameModeCount = 1 Then - ' There's only the default GameMode available, so just load that one. - GameModeManager.SetGameModePointer("Kolben") - SetScreen(New Screens.MainMenu.NewNewGameScreen(CurrentScreen)) - Else - ' There is more than one GameMode, prompt a selection screen: - SetScreen(New GameModeSelectionScreen(CurrentScreen)) - End If - Else - If _gameModeExists Then - GameModeManager.SetGameModePointer(_gameMode) - World.IsMainMenu = False - If _isGameJolt Then - Core.Player.IsGameJoltSave = True - Core.Player.LoadGame("GAMEJOLTSAVE") - GameJolt.Emblem.GetAchievedEmblems() - - SetScreen(New JoinServerScreen(CurrentScreen)) + Select Case _menuIndex + Case 0 + If _isGameJolt And _loaded = False And GameJolt.API.LoggedIn = False Then + SetScreen(New GameJolt.LogInScreen(CurrentScreen)) + ElseIf _isNewGameButton Then + World.IsMainMenu = False + If GameModeManager.GameModeCount = 1 Then + ' There's only the default GameMode available, so just load that one. + GameModeManager.SetGameModePointer("Kolben") + SetScreen(New Screens.MainMenu.NewNewGameScreen(CurrentScreen)) + Else + ' There is more than one GameMode, prompt a selection screen: + SetScreen(New GameModeSelectionScreen(CurrentScreen)) + End If Else - Core.Player.IsGameJoltSave = False - Core.Player.LoadGame(IO.Path.GetFileName(_path)) + If _gameModeExists Then + GameModeManager.SetGameModePointer(_gameMode) + World.IsMainMenu = False + If _isGameJolt Then + Core.Player.IsGameJoltSave = True + Core.Player.LoadGame("GAMEJOLTSAVE") + GameJolt.Emblem.GetAchievedEmblems() - SetScreen(New JoinServerScreen(CurrentScreen)) - End If - Else - If Me.IsGameJolt Then - _loaded = False - _sprite = TextureManager.GetTexture("Textures\UI\GameJolt\gameJoltIcon") - LoadGameJolt() - ElseIf IsOptionsMenuButton = False Then - Dim messageBox As New UI.MessageBox(CurrentScreen) - messageBox.Show("The required GameMode does not exist." & Environment.NewLine & "Reaquire the GameMode to play on this profile.") - Else - _menuIndex = 2 - _selectedProfileTemp = _selectedProfile - _selectedProfile = 0 - 'SetScreen(New NewOptionScreen(CurrentScreen)) + SetScreen(New JoinServerScreen(CurrentScreen)) + Else + Core.Player.IsGameJoltSave = False + Core.Player.LoadGame(IO.Path.GetFileName(_path)) + + SetScreen(New JoinServerScreen(CurrentScreen)) + End If + Else + If Me.IsGameJolt Then + _loaded = False + _sprite = TextureManager.GetTexture("Textures\UI\GameJolt\gameJoltIcon") + LoadGameJolt() + ElseIf IsOptionsMenuButton = False Then + Dim messageBox As New UI.MessageBox(CurrentScreen) + messageBox.Show("The required GameMode does not exist." & Environment.NewLine & "Reaquire the GameMode to play on this profile.") + Else + _menuIndex = 2 + _selectedProfileTemp = _selectedProfile + _selectedProfile = 0 + 'SetScreen(New NewOptionScreen(CurrentScreen)) + End If End If End If - End If - + Case 2, 3 + SetScreen(New NewOptionScreen(CurrentScreen, _OptionsMenuIndex + 1)) + End Select End Sub End Class diff --git a/P3D/Screens/NewOptionScreen.vb b/P3D/Screens/NewOptionScreen.vb index 9428f977e..d83f70876 100644 --- a/P3D/Screens/NewOptionScreen.vb +++ b/P3D/Screens/NewOptionScreen.vb @@ -19,6 +19,7 @@ Dim Muted As Integer = 0 Dim GamePadEnabled As Boolean = True Dim PreferMultiSampling As Boolean = True + Private _subMenu As Integer = 0 Private Languages As New List(Of String) Private LanguageNames As New List(Of String) @@ -86,7 +87,8 @@ End If SetFunctionality() If Submenu > 0 Then - Select Case Submenu + _subMenu = Submenu + Select Case _subMenu Case 1 SwitchToLanguage() Case 2 @@ -153,15 +155,15 @@ Private Sub DrawLanguageMenu() For i = 0 To 3 - Dim c As Color = New Color(255, 255, 255, CInt(255 * _pageFade)) + Dim c As Color = New Color(255, 255, 255, CInt(255 * _interfaceFade * _pageFade)) If i + languageMenuIndex(2) = languageMenuIndex(0) Then - c = New Color(77, 147, 198, CInt(255 * _pageFade)) + c = New Color(77, 147, 198, CInt(255 * _interfaceFade * _pageFade)) End If Canvas.DrawRectangle(New Rectangle(CInt(ScreenSize.Width / 2 - 258), CInt(Core.windowSize.Height / 2 - 128 + i * 50), 480, 48), c, True) Next - Canvas.DrawScrollBar(New Vector2(CInt(ScreenSize.Width / 2 + 250), CInt(Core.windowSize.Height / 2 - 128)), Languages.Count, 4, languageMenuIndex(2), New Size(4, 200), False, New Color(77, 147, 198, CInt(255 * _pageFade)), New Color(255, 255, 255, CInt(255 * _pageFade)), True) + Canvas.DrawScrollBar(New Vector2(CInt(ScreenSize.Width / 2 + 250), CInt(Core.windowSize.Height / 2 - 128)), Languages.Count, 4, languageMenuIndex(2), New Size(4, 200), False, New Color(77, 147, 198, CInt(255 * _interfaceFade * _pageFade)), New Color(255, 255, 255, CInt(255 * _interfaceFade * _pageFade)), True) Dim x As Integer = Languages.Count - 1 x = CInt(MathHelper.Clamp(x, 0, 3)) @@ -170,10 +172,10 @@ Dim Name As String = LanguageNames(i + languageMenuIndex(2)) If i + languageMenuIndex(2) = languageMenuIndex(0) Then - SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Name, New Vector2(CInt(ScreenSize.Width / 2 - 246), CInt(Core.windowSize.Height / 2 - 128 + 8 + 2 + i * 50)), New Color(0, 0, 0, CInt(255 * _pageFade))) - SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Name, New Vector2(CInt(ScreenSize.Width / 2 - 248), CInt(Core.windowSize.Height / 2 - 128 + 8 + i * 50)), New Color(255, 255, 255, CInt(255 * _pageFade))) + SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Name, New Vector2(CInt(ScreenSize.Width / 2 - 246), CInt(Core.windowSize.Height / 2 - 128 + 8 + 2 + i * 50)), New Color(0, 0, 0, CInt(255 * _interfaceFade * _pageFade))) + SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Name, New Vector2(CInt(ScreenSize.Width / 2 - 248), CInt(Core.windowSize.Height / 2 - 128 + 8 + i * 50)), New Color(255, 255, 255, CInt(255 * _interfaceFade * _pageFade))) Else - SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Name, New Vector2(CInt(ScreenSize.Width / 2 - 248), CInt(Core.windowSize.Height / 2 - 128 + 8 + i * 50)), New Color(0, 0, 0, CInt(255 * _pageFade))) + SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Name, New Vector2(CInt(ScreenSize.Width / 2 - 248), CInt(Core.windowSize.Height / 2 - 128 + 8 + i * 50)), New Color(0, 0, 0, CInt(255 * _interfaceFade * _pageFade))) End If Next @@ -269,12 +271,11 @@ #Region "PacksMenu" Private Sub DrawPacksMenu() - Dim CanvasTexture As Texture2D For i = 0 To 3 - Dim c As Color = New Color(255, 255, 255, 255 * _pageFade) + Dim c As Color = New Color(255, 255, 255, CInt(255 * _interfaceFade * _pageFade)) If i + packsMenuIndex(2) = packsMenuIndex(0) Then - c = New Color(77, 147, 198, CInt(255 * _pageFade)) + c = New Color(77, 147, 198, CInt(255 * _interfaceFade * _pageFade)) If EnabledPackNames.Count > 0 Then If EnabledPackNames.Contains(PackNames(i + packsMenuIndex(2))) = True Then @@ -285,36 +286,32 @@ End If End If - Canvas.DrawRectangle(New Rectangle(CInt(ScreenSize.Width / 2) - 328, 212 + i * 50, 500, 48), c, True) + Canvas.DrawRectangle(New Rectangle(CInt(ScreenSize.Width / 2) - 328, CInt(Core.windowSize.Height / 2 - 128 + i * 50), 500, 48), c, True) Next - Canvas.DrawScrollBar(New Vector2(CInt(ScreenSize.Width / 2) + 188, 204), PackNames.Count, 4, packsMenuIndex(2), New Size(4, 200), False, New Color(77, 147, 198, CInt(255 * _pageFade)), New Color(255, 255, 255, CInt(255 * _pageFade)), True) + Canvas.DrawScrollBar(New Vector2(CInt(ScreenSize.Width / 2) + 188, CInt(Core.windowSize.Height / 2 - 128)), PackNames.Count, 4, packsMenuIndex(2), New Size(4, 200), False, New Color(77, 147, 198, CInt(255 * _interfaceFade * _pageFade)), New Color(255, 255, 255, CInt(255 * _interfaceFade * _pageFade)), True) Dim x As Integer = PackNames.Count - 1 x = CInt(MathHelper.Clamp(x, 0, 3)) - Dim textColor As Color = New Color(0, 0, 0, CInt(255 * _pageFade)) + Dim textColor As Color = New Color(0, 0, 0, CInt(255 * _interfaceFade * _pageFade)) If PackNames.Count > 0 Then For i = 0 To x Dim Name As String = PackNames(i + packsMenuIndex(2)) If EnabledPackNames.Contains(Name) = True Then Name &= " (" & Localization.GetString("pack_menu_enabled") & ")" - textColor = New Color(0, 0, 0, CInt(255 * _pageFade)) + textColor = New Color(0, 0, 0, CInt(255 * _interfaceFade * _pageFade)) End If If i + packsMenuIndex(2) = packsMenuIndex(0) Then SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Name, New Vector2(CInt(ScreenSize.Width / 2) - 318, 220 + 2 + i * 50), textColor) - SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Name, New Vector2(CInt(ScreenSize.Width / 2) - 320, 220 + i * 50), New Color(255, 255, 255, CInt(255 * _pageFade))) + SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Name, New Vector2(CInt(ScreenSize.Width / 2) - 320, 220 + i * 50), New Color(255, 255, 255, CInt(255 * _interfaceFade * _pageFade))) Else SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Name, New Vector2(CInt(ScreenSize.Width / 2) - 320, 220 + i * 50), textColor) End If Next End If - CanvasTexture = TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), "") - Dim buttonRectangle = New Rectangle(0, 0, 16, 16) - Dim buttonColor = Color.White - End Sub Private Sub UpdatePacksMenu() @@ -482,12 +479,12 @@ Dim CanvasTexture As Texture2D = TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), "") - Canvas.DrawRectangle(New Rectangle(CInt(ScreenSize.Width / 2) - 240 + 4, 196, 480, 64), New Color(77, 147, 198, CInt(255 * _pageFade))) - SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Localization.GetString("pack_menu_name") & ": " & PInfoName, New Vector2(CInt(ScreenSize.Width / 2) - CInt(FontManager.InGameFont.MeasureString(Localization.GetString("pack_menu_name") & ": " & PInfoName).X / 2) + 2, 212 + 2), New Color(0, 0, 0, CInt(255 * _pageFade))) - SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Localization.GetString("pack_menu_name") & ": " & PInfoName, New Vector2(CInt(ScreenSize.Width / 2) - CInt(FontManager.InGameFont.MeasureString(Localization.GetString("pack_menu_name") & ": " & PInfoName).X / 2), 212), New Color(255, 255, 255, CInt(255 * _pageFade))) + Canvas.DrawRectangle(New Rectangle(CInt(ScreenSize.Width / 2) - 240 + 4, 196, 480, 64), New Color(77, 147, 198, CInt(255 * _interfaceFade * _pageFade))) + SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Localization.GetString("pack_menu_name") & ": " & PInfoName, New Vector2(CInt(ScreenSize.Width / 2) - CInt(FontManager.InGameFont.MeasureString(Localization.GetString("pack_menu_name") & ": " & PInfoName).X / 2) + 2, 212 + 2), New Color(0, 0, 0, CInt(255 * _interfaceFade * _pageFade))) + SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Localization.GetString("pack_menu_name") & ": " & PInfoName, New Vector2(CInt(ScreenSize.Width / 2) - CInt(FontManager.InGameFont.MeasureString(Localization.GetString("pack_menu_name") & ": " & PInfoName).X / 2), 212), New Color(255, 255, 255, CInt(255 * _interfaceFade * _pageFade))) - Canvas.DrawRectangle(New Rectangle(CInt(ScreenSize.Width / 2) - 272 + 4, 272, 544, 196), New Color(255, 255, 255, CInt(255 * _pageFade))) - SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Localization.GetString("pack_menu_version") & ": " & PInfoVersion & Environment.NewLine & Localization.GetString("pack_menu_by") & ": " & PInfoAuthor & Environment.NewLine & Localization.GetString("pack_menu_content") & ": " & PInfoContent & Environment.NewLine & Localization.GetString("pack_menu_description") & ": " & Environment.NewLine & PInfoDescription.Replace("
", Environment.NewLine), New Vector2(CInt(ScreenSize.Width / 2) - 272 + 16, 280), New Color(0, 0, 0, CInt(255 * _pageFade))) + Canvas.DrawRectangle(New Rectangle(CInt(ScreenSize.Width / 2) - 272 + 4, 272, 544, 196), New Color(255, 255, 255, CInt(255 * _interfaceFade * _pageFade))) + SpriteBatch.DrawInterfaceString(FontManager.InGameFont, Localization.GetString("pack_menu_version") & ": " & PInfoVersion & Environment.NewLine & Localization.GetString("pack_menu_by") & ": " & PInfoAuthor & Environment.NewLine & Localization.GetString("pack_menu_content") & ": " & PInfoContent & Environment.NewLine & Localization.GetString("pack_menu_description") & ": " & Environment.NewLine & PInfoDescription.Replace("
", Environment.NewLine), New Vector2(CInt(ScreenSize.Width / 2) - 272 + 16, 280), New Color(0, 0, 0, CInt(255 * _interfaceFade * _pageFade))) For i = 0 To 1 If i = packInfoIndex Then @@ -710,14 +707,16 @@ End If If _pageClosing = True Then - If _pageFade >= 0F Then - _pageFade -= 0.07F - If _pageFade <= 0F Then - _pageFade = 0F - _pageClosing = False - _pageOpening = True - ScreenIndex = _nextIndex - InitializeControls() + If PreScreen.Identification = Identifications.MainMenuScreen Then + If _pageFade >= 0F Then + _pageFade -= 0.07F + If _pageFade <= 0F Then + _pageFade = 0F + _pageClosing = False + _pageOpening = True + ScreenIndex = _nextIndex + InitializeControls() + End If End If End If End If @@ -768,7 +767,7 @@ If KeyBoardHandler.KeyPressed(KeyBindings.EscapeKey) Or KeyBoardHandler.KeyPressed(KeyBindings.BackKey1) Or KeyBoardHandler.KeyPressed(KeyBindings.BackKey2) Or MouseHandler.ButtonPressed(MouseHandler.MouseButtons.RightButton) Or ControllerHandler.ButtonPressed(Buttons.B) Then If _pageClosing = False And _pageOpening = False Then SoundManager.PlaySound("select") - If ScreenIndex = 0 Then + If ScreenIndex = 0 Or _subMenu <> 0 Then _closing = True Else SwitchToMain() @@ -929,15 +928,12 @@ Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 90, Delta_Y + 80), 1, 64, "Game", AddressOf SwitchToGame, 1)) Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 310, Delta_Y + 80), 1, 64, "Graphics", AddressOf SwitchToGraphics, 2)) Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 530, Delta_Y + 80), 1, 64, "Battle", AddressOf SwitchToBattle, 3)) - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 90, Delta_Y + 168), 1, 64, "Controls", AddressOf SwitchToControls, 4)) - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 310, Delta_Y + 168), 1, 64, "Audio", AddressOf SwitchToAudio, 5)) - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 530, Delta_Y + 168), 1, 64, "Language", AddressOf SwitchToLanguage, 6)) - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 310 - 32, Delta_Y + 256), 2, 64, "Content Packs", AddressOf SwitchToContentPacks, 7)) - - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 90 + 24, Delta_Y + 336), 1, 48, "Apply", AddressOf Apply, 8)) - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 286 + 24, Delta_Y + 336), 2, 48, "Reset Options", AddressOf Reset, 9)) - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 530 + 24, Delta_Y + 336), 1, 48, "Close", AddressOf Close, 10)) + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 200, Delta_Y + 168), 1, 64, "Controls", AddressOf SwitchToControls, 4)) + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 420, Delta_Y + 168), 1, 64, "Audio", AddressOf SwitchToAudio, 5)) + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 90 + 24, Delta_Y + 336), 1, 48, "Apply", AddressOf Apply, 6)) + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 286 + 24, Delta_Y + 336), 2, 48, "Reset Options", AddressOf Reset, 7)) + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 530 + 24, Delta_Y + 336), 1, 48, "Close", AddressOf Close, 8)) Case 1 ' "Game" from the Options menu. Me.ControlList.Add(New ScrollBar(New Vector2(Delta_X + 100, Delta_Y + 60), 400, "Text Speed", Me.TextSpeed, 1, 3, AddressOf ChangeTextspeed, 1)) If CBool(GameModeManager.GetGameRuleValue("LockDifficulty", "0")) = False Then @@ -987,24 +983,34 @@ Me.ControlList.Add(New ScrollBar(New Vector2(Delta_X + 100, Delta_Y + 60), 400, "Mouse Speed", Me.MouseSpeed, 1, 50, AddressOf ChangeMouseSpeed, d, 1)) Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 100, Delta_Y + 200), 3, 64, "Reset Key Bindings", AddressOf ResetKeyBindings, 2)) Me.ControlList.Add(New ToggleButton(New Vector2(Delta_X + 100, Delta_Y + 120), 5, 64, "Xbox 360 Gamepad", Me.GamePadEnabled, AddressOf ToggleXBOX360Controller, {"Disabled", "Enabled"}.ToList(), 3)) + If PreScreen.Identification = Identifications.MainMenuScreen Then + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 530 + 24, Delta_Y + 327), 1, 48, "Back", AddressOf Close, 4)) + Else + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 530 + 24, Delta_Y + 327), 1, 48, "Back", AddressOf SwitchToMain, 4)) + End If - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 530 + 24, Delta_Y + 327), 1, 48, "Back", AddressOf SwitchToMain, 4)) Case 5 ' "Audio" from the Options menu. Me.ControlList.Add(New ScrollBar(New Vector2(Delta_X + 100, Delta_Y + 60), 400, "Music Volume", Me.Music, 0, 100, AddressOf ChangeMusicVolume, 1)) Me.ControlList.Add(New ScrollBar(New Vector2(Delta_X + 100, Delta_Y + 120), 400, "Sound Volume", Me.Sound, 0, 100, AddressOf ChangeSoundVolume, 2)) Me.ControlList.Add(New ToggleButton(New Vector2(Delta_X + 100, Delta_Y + 200), 1, 64, "Muted", CBool(Me.Muted), AddressOf ToggleMute, {"No", "Yes"}.ToList(), 3)) + If PreScreen.Identification = Identifications.MainMenuScreen Then + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 530 + 24, Delta_Y + 327), 1, 48, "Back", AddressOf Close, 4)) + Else + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 530 + 24, Delta_Y + 327), 1, 48, "Back", AddressOf SwitchToMain, 4)) + End If - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 530 + 24, Delta_Y + 327), 1, 48, "Back", AddressOf SwitchToMain, 4)) Case 6 ' "Language" from the Options menu. Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 286 + 24, Delta_Y + 336), 1, 48, "Back", AddressOf LanguageApply, 1)) + Case 7 ' "ContentPacks" from the Options menu. - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 604, Delta_Y + 56), 2, 48, Localization.GetString("pack_menu_up"), AddressOf ButtonUp, 1)) - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 604, Delta_Y + 112), 2, 48, Localization.GetString("pack_menu_down"), AddressOf ButtonDown, 2)) - Me.ControlList.Add(New ToggleButton(New Vector2(Delta_X + 604, Delta_Y + 168), 2, 48, Localization.GetString("pack_menu_enabled"), isSelectedEnabled, AddressOf PackEnabledToggle, {Localization.GetString("global_no"), Localization.GetString("global_yes")}.ToList(), 3)) - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 604, Delta_Y + 222), 2, 48, Localization.GetString("pack_menu_information"), AddressOf SwitchToPackInformation, 4)) + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 604, Delta_Y + 64), 2, 48, Localization.GetString("pack_menu_up"), AddressOf ButtonUp, 1)) + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 604, Delta_Y + 120), 2, 48, Localization.GetString("pack_menu_down"), AddressOf ButtonDown, 2)) + Me.ControlList.Add(New ToggleButton(New Vector2(Delta_X + 604, Delta_Y + 176), 2, 48, Localization.GetString("pack_menu_enabled"), isSelectedEnabled, AddressOf PackEnabledToggle, {Localization.GetString("global_no"), Localization.GetString("global_yes")}.ToList(), 3)) + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 604, Delta_Y + 232), 2, 48, Localization.GetString("pack_menu_information"), AddressOf SwitchToPackInformation, 4)) Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 90 + 24, Delta_Y + 327), 1, 48, "Apply", AddressOf PacksApply, 5)) - Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 310 + 24, Delta_Y + 327), 1, 48, "Back", AddressOf SwitchToMain, 6)) + Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 310 + 24, Delta_Y + 327), 1, 48, "Back", AddressOf Close, 6)) + Case 8 ' "Information" from the ContentPacks menu. Me.ControlList.Add(New ToggleButton(New Vector2(Delta_X + 90 + 24, Delta_Y + 336), 2, 48, Localization.GetString("pack_menu_enabled"), isSelectedEnabled, AddressOf PackEnabledToggle, {Localization.GetString("global_no"), Localization.GetString("global_yes")}.ToList(), 1)) Me.ControlList.Add(New CommandButton(New Vector2(Delta_X + 530 + 24, Delta_Y + 336), 1, 48, "Back", AddressOf SwitchToContentPacks, 2)) @@ -1114,12 +1120,22 @@ Private Sub SwitchToControls() Me._nextIndex = 4 - Me._pageClosing = True + If PreScreen.Identification = Identifications.MainMenuScreen Then + ScreenIndex = _nextIndex + InitializeControls() + Else + Me._pageClosing = True + End If End Sub Private Sub SwitchToAudio() Me._nextIndex = 5 - Me._pageClosing = True + If PreScreen.Identification = Identifications.MainMenuScreen Then + ScreenIndex = _nextIndex + InitializeControls() + Else + Me._pageClosing = True + End If End Sub Private Sub SwitchToLanguage() @@ -1130,7 +1146,8 @@ languageMenuIndex(1) = 0 languageMenuIndex(2) = 0 Me._nextIndex = 6 - Me._pageClosing = True + ScreenIndex = _nextIndex + InitializeControls() End Sub Private Sub SwitchToContentPacks() @@ -1141,7 +1158,12 @@ packsMenuIndex(2) = 0 End If Me._nextIndex = 7 - Me._pageClosing = True + If ScreenIndex = 8 Then + Me._pageClosing = True + Else + ScreenIndex = _nextIndex + InitializeControls() + End If End Sub Private Sub SwitchToPackInformation() Me._nextIndex = 8 @@ -1274,6 +1296,7 @@ If currentLanguage <> Languages(languageMenuIndex(0)) Then currentLanguage = Languages(languageMenuIndex(0)) End If + _closing = True End Sub #End Region #End Region