Remember dex order/filter select menu indexes

This commit is contained in:
JappaWakka 2025-04-19 19:00:06 +02:00
parent 84f200af4a
commit a43d9d8354

View File

@ -363,6 +363,14 @@ Public Class PokedexScreen
Public PokemonList As New List(Of Pokemon) Public PokemonList As New List(Of Pokemon)
Dim menu As SelectMenu Dim menu As SelectMenu
Public SelectIndexMain As Integer = 0
Public OrderIndexMain As Integer = 0
Public OrderIndexType As Integer = 0
Public FilterIndexMain As Integer = 0
Public FilterIndexName As Integer = 0
Public FilterIndexType1 As Integer = 0
Public FilterIndexType2 As Integer = 0
Public Sub New(ByVal currentScreen As Screen, ByVal Profile As PokedexSelectScreen.PokedexProfile, ByVal Habitat As Habitat) Public Sub New(ByVal currentScreen As Screen, ByVal Profile As PokedexSelectScreen.PokedexProfile, ByVal Habitat As Habitat)
Me.Identification = Identifications.PokedexScreen Me.Identification = Identifications.PokedexScreen
Me.PreScreen = currentScreen Me.PreScreen = currentScreen
@ -886,7 +894,7 @@ Public Class PokedexScreen
End If End If
If KeyBoardHandler.KeyPressed(KeyBindings.SpecialKey) = True Or ControllerHandler.ButtonPressed(Buttons.Back) = True Then If KeyBoardHandler.KeyPressed(KeyBindings.SpecialKey) = True Or ControllerHandler.ButtonPressed(Buttons.Back) = True Then
Me.menu = New SelectMenu({"Order", "Filter", "Reset", "Back"}.ToList(), 0, AddressOf SelectMenu1, 3) Me.menu = New SelectMenu({"Order", "Filter", "Reset", "Back"}.ToList(), SelectIndexMain, AddressOf SelectMenu1, 3, "selectmain")
End If End If
If Controls.Dismiss(True, True, True) = True Then If Controls.Dismiss(True, True, True) = True Then
@ -940,9 +948,9 @@ Public Class PokedexScreen
Private Sub SelectMenu1(ByVal s As SelectMenu) Private Sub SelectMenu1(ByVal s As SelectMenu)
Select Case s.SelectedItem.ToLower() Select Case s.SelectedItem.ToLower()
Case "order" Case "order"
Me.menu = New SelectMenu({"Type", "Reverse: " & Me.ReverseOrder.ToString(), "Back"}.ToList(), 0, AddressOf SelectMenuOrder, 2) Me.menu = New SelectMenu({"Type", "Reverse: " & Me.ReverseOrder.ToString(), "Back"}.ToList(), OrderIndexMain, AddressOf SelectMenuOrder, 2, "ordermain")
Case "filter" Case "filter"
Me.menu = New SelectMenu({"Name", "Type1", "Type2", "Clear", "Back"}.ToList(), 0, AddressOf SelectMenuFilter, 4) Me.menu = New SelectMenu({"Name", "Type1", "Type2", "Clear", "Back"}.ToList(), FilterIndexMain, AddressOf SelectMenuFilter, 4, "filtermain")
Case "reset" Case "reset"
Me.Filters.Clear() Me.Filters.Clear()
Me.ReverseOrder = False Me.ReverseOrder = False
@ -954,16 +962,16 @@ Public Class PokedexScreen
Private Sub SelectMenuFilter(ByVal s As SelectMenu) Private Sub SelectMenuFilter(ByVal s As SelectMenu)
Select Case s.SelectedItem.ToLower() Select Case s.SelectedItem.ToLower()
Case "name" Case "name"
Me.menu = New SelectMenu({"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Back"}.ToList(), 0, AddressOf SelectMenuNameFilter, -1) Me.menu = New SelectMenu({"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Back"}.ToList(), FilterIndexName, AddressOf SelectMenuNameFilter, -1, "filtername")
Case "type1" Case "type1"
Me.menu = New SelectMenu({"Normal", "Fire", "Fighting", "Water", "Flying", "Grass", "Poison", "Electric", "Ground", "Psychic", "Rock", "Ice", "Bug", "Dragon", "Ghost", "Dark", "Steel", "Fairy", "Blank", "Back"}.ToList(), 0, AddressOf SelectMenuType1Filter, -1) Me.menu = New SelectMenu({"Normal", "Fire", "Fighting", "Water", "Flying", "Grass", "Poison", "Electric", "Ground", "Psychic", "Rock", "Ice", "Bug", "Dragon", "Ghost", "Dark", "Steel", "Fairy", "Blank", "Back"}.ToList(), FilterIndexType1, AddressOf SelectMenuType1Filter, -1, "filtertype1")
Case "type2" Case "type2"
Me.menu = New SelectMenu({"Normal", "Fire", "Fighting", "Water", "Flying", "Grass", "Poison", "Electric", "Ground", "Psychic", "Rock", "Ice", "Bug", "Dragon", "Ghost", "Dark", "Steel", "Fairy", "Blank", "Back"}.ToList(), 0, AddressOf SelectMenuType2Filter, -1) Me.menu = New SelectMenu({"Normal", "Fire", "Fighting", "Water", "Flying", "Grass", "Poison", "Electric", "Ground", "Psychic", "Rock", "Ice", "Bug", "Dragon", "Ghost", "Dark", "Steel", "Fairy", "Blank", "Back"}.ToList(), FilterIndexType2, AddressOf SelectMenuType2Filter, -1, "filtertype2")
Case "clear" Case "clear"
Me.Filters.Clear() Me.Filters.Clear()
Me.SetList() Me.SetList()
Case "back" Case "back"
Me.menu = New SelectMenu({"Order", "Filter", "Reset", "Back"}.ToList(), 0, AddressOf SelectMenu1, 3) Me.menu = New SelectMenu({"Order", "Filter", "Reset", "Back"}.ToList(), SelectIndexMain, AddressOf SelectMenu1, 3, "selectmain")
End Select End Select
End Sub End Sub
@ -979,7 +987,7 @@ Public Class PokedexScreen
Filters.Add(New Filter With {.FilterType = FilterType.Type1, .FilterValue = s.SelectedItem}) Filters.Add(New Filter With {.FilterType = FilterType.Type1, .FilterValue = s.SelectedItem})
SetList() SetList()
Else Else
Me.menu = New SelectMenu({"Name", "Type1", "Type2", "Clear", "Back"}.ToList(), 0, AddressOf SelectMenuFilter, 4) Me.menu = New SelectMenu({"Name", "Type1", "Type2", "Clear", "Back"}.ToList(), FilterIndexMain, AddressOf SelectMenuFilter, 4, "filtermain")
End If End If
End Sub End Sub
@ -995,7 +1003,7 @@ Public Class PokedexScreen
Filters.Add(New Filter With {.FilterType = FilterType.Type2, .FilterValue = s.SelectedItem}) Filters.Add(New Filter With {.FilterType = FilterType.Type2, .FilterValue = s.SelectedItem})
SetList() SetList()
Else Else
Me.menu = New SelectMenu({"Name", "Type1", "Type2", "Clear", "Back"}.ToList(), 0, AddressOf SelectMenuFilter, 4) Me.menu = New SelectMenu({"Name", "Type1", "Type2", "Clear", "Back"}.ToList(), FilterIndexMain, AddressOf SelectMenuFilter, 4, "filtermain")
End If End If
End Sub End Sub
@ -1011,20 +1019,20 @@ Public Class PokedexScreen
Filters.Add(New Filter With {.FilterType = FilterType.Name, .FilterValue = s.SelectedItem}) Filters.Add(New Filter With {.FilterType = FilterType.Name, .FilterValue = s.SelectedItem})
SetList() SetList()
Else Else
Me.menu = New SelectMenu({"Name", "Type1", "Type2", "Clear", "Back"}.ToList(), 0, AddressOf SelectMenuFilter, 4) Me.menu = New SelectMenu({"Name", "Type1", "Type2", "Clear", "Back"}.ToList(), FilterIndexMain, AddressOf SelectMenuFilter, 4, "filtermain")
End If End If
End Sub End Sub
Private Sub SelectMenuOrder(ByVal s As SelectMenu) Private Sub SelectMenuOrder(ByVal s As SelectMenu)
Select Case s.SelectedItem.ToLower() Select Case s.SelectedItem.ToLower()
Case "type" Case "type"
Me.menu = New SelectMenu({"Numeric", "A-Z", "Weight", "Height", "Back"}.ToList(), 0, AddressOf SelectMenuOrderType, 4) Me.menu = New SelectMenu({"Numeric", "A-Z", "Weight", "Height", "Back"}.ToList(), OrderIndexType, AddressOf SelectMenuOrderType, 4, "ordertype")
Case "reverse: " & Me.ReverseOrder.ToString().ToLower() Case "reverse: " & Me.ReverseOrder.ToString().ToLower()
Me.ReverseOrder = Not Me.ReverseOrder Me.ReverseOrder = Not Me.ReverseOrder
Me.menu = New SelectMenu({"Type", "Reverse: " & Me.ReverseOrder.ToString(), "Back"}.ToList(), 0, AddressOf SelectMenuOrder, 2) Me.menu = New SelectMenu({"Type", "Reverse: " & Me.ReverseOrder.ToString(), "Back"}.ToList(), OrderIndexMain, AddressOf SelectMenuOrder, 2, "ordermain")
Me.SetList() Me.SetList()
Case "back" Case "back"
Me.menu = New SelectMenu({"Order", "Filter", "Reset", "Back"}.ToList(), 0, AddressOf SelectMenu1, 3) Me.menu = New SelectMenu({"Order", "Filter", "Reset", "Back"}.ToList(), SelectIndexMain, AddressOf SelectMenu1, 3, "selectmain")
End Select End Select
End Sub End Sub
@ -1043,7 +1051,7 @@ Public Class PokedexScreen
Me.Order = OrderType.Height Me.Order = OrderType.Height
Me.SetList() Me.SetList()
Case "back" Case "back"
Me.menu = New SelectMenu({"Type", "Reverse: " & Me.ReverseOrder.ToString(), "Back"}.ToList(), 0, AddressOf SelectMenuOrder, 2) Me.menu = New SelectMenu({"Type", "Reverse: " & Me.ReverseOrder.ToString(), "Back"}.ToList(), OrderIndexMain, AddressOf SelectMenuOrder, 2, "ordermain")
End Select End Select
End Sub End Sub
@ -1053,6 +1061,7 @@ Public Class PokedexScreen
Dim Items As New List(Of String) Dim Items As New List(Of String)
Dim Index As Integer = 0 Dim Index As Integer = 0
Dim RememberVar As String = ""
Public Delegate Sub ClickEvent(ByVal s As SelectMenu) Public Delegate Sub ClickEvent(ByVal s As SelectMenu)
Dim ClickHandler As ClickEvent = Nothing Dim ClickHandler As ClickEvent = Nothing
Dim BackIndex As Integer = 0 Dim BackIndex As Integer = 0
@ -1062,11 +1071,14 @@ Public Class PokedexScreen
Dim t1 As Texture2D Dim t1 As Texture2D
Dim t2 As Texture2D Dim t2 As Texture2D
Public Sub New(ByVal Items As List(Of String), ByVal Index As Integer, ByVal ClickHandle As ClickEvent, ByVal BackIndex As Integer) Public Sub New(ByVal Items As List(Of String), ByVal Index As Integer, ByVal ClickHandle As ClickEvent, ByVal BackIndex As Integer, Optional ByRef RememberVar As String = "")
Me.Items = Items Me.Items = Items
Me.Index = Index Me.Index = Index
Me.ClickHandler = ClickHandle Me.ClickHandler = ClickHandle
Me.BackIndex = BackIndex Me.BackIndex = BackIndex
If RememberVar <> "" Then
Me.RememberVar = RememberVar
End If
If Me.BackIndex < 0 Then If Me.BackIndex < 0 Then
Me.BackIndex = Me.Items.Count + Me.BackIndex Me.BackIndex = Me.Items.Count + Me.BackIndex
End If End If
@ -1086,6 +1098,23 @@ Public Class PokedexScreen
End If End If
Me.Index = Me.Index.Clamp(0, Me.Items.Count - 1) Me.Index = Me.Index.Clamp(0, Me.Items.Count - 1)
Select Case Me.RememberVar.ToLower
Case "selectmain"
CType(CurrentScreen, PokedexScreen).SelectIndexMain = Me.Index
Case "ordermain"
CType(CurrentScreen, PokedexScreen).OrderIndexMain = Me.Index
Case "ordertype"
CType(CurrentScreen, PokedexScreen).OrderIndexType = Me.Index
Case "filtermain"
CType(CurrentScreen, PokedexScreen).FilterIndexMain = Me.Index
Case "filtername"
CType(CurrentScreen, PokedexScreen).FilterIndexName = Me.Index
Case "filtertype1"
CType(CurrentScreen, PokedexScreen).FilterIndexType1 = Me.Index
Case "filtertype2"
CType(CurrentScreen, PokedexScreen).FilterIndexType2 = Me.Index
End Select
For i = Scroll To Me.Scroll + 8 For i = Scroll To Me.Scroll + 8
If i <= Me.Items.Count - 1 Then If i <= Me.Items.Count - 1 Then
If Controls.Accept(True, False, False) = True And i = Me.Index And New Rectangle(Core.windowSize.Width - 270, 66 * ((i + 1) - Scroll), 256, 64).Contains(MouseHandler.MousePosition) = True Or If Controls.Accept(True, False, False) = True And i = Me.Index And New Rectangle(Core.windowSize.Width - 270, 66 * ((i + 1) - Scroll), 256, 64).Contains(MouseHandler.MousePosition) = True Or