mirror of
https://github.com/P3D-Legacy/P3D-Legacy.git
synced 2025-09-01 23:28:37 +02:00
* Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
1816 lines
82 KiB
VB.net
1816 lines
82 KiB
VB.net
Public Class PokedexSelectScreen
|
|
|
|
Inherits Screen
|
|
|
|
Dim texture As Texture2D
|
|
Dim Profiles As New List(Of PokedexProfile)
|
|
Dim Cursor As Integer = 0
|
|
|
|
Public Sub New(ByVal currentScreen As Screen)
|
|
Me.Identification = Identifications.PokedexScreen
|
|
|
|
Me.PreScreen = currentScreen
|
|
Me.texture = TextureManager.GetTexture("GUI\Menus\General")
|
|
|
|
Me.MouseVisible = True
|
|
Me.CanMuteMusic = True
|
|
Me.CanBePaused = True
|
|
|
|
For Each p As Pokedex In Core.Player.Pokedexes
|
|
If p.IsActivated = True Then
|
|
Me.Profiles.Add(New PokedexProfile With {.Pokedex = p, .Obtained = p.Obtained, .Seen = p.Seen})
|
|
End If
|
|
Next
|
|
|
|
Me.AchievePokedexEmblems()
|
|
End Sub
|
|
|
|
Private Sub AchievePokedexEmblems()
|
|
' Eevee:
|
|
Dim eevee() As Integer = {134, 135, 136, 196, 197, 470, 471, 700}
|
|
Dim hasEevee As Boolean = True
|
|
For Each e As Integer In eevee
|
|
If Pokedex.GetEntryType(Core.Player.PokedexData, e) < 2 Then
|
|
hasEevee = False
|
|
Exit For
|
|
End If
|
|
Next
|
|
If hasEevee = True Then
|
|
GameJolt.Emblem.AchieveEmblem("eevee")
|
|
End If
|
|
|
|
' Pokédex:
|
|
If Core.Player.IsGameJoltSave = True Then
|
|
If Me.Profiles(0).Pokedex.Obtained >= Me.Profiles(0).Pokedex.Count Then
|
|
GameJolt.Emblem.AchieveEmblem("pokedex")
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Structure PokedexProfile
|
|
Dim Obtained As Integer
|
|
Dim Seen As Integer
|
|
Dim Pokedex As Pokedex
|
|
End Structure
|
|
|
|
Public Overrides Sub Draw()
|
|
Canvas.DrawRectangle(Core.windowSize, New Color(84, 198, 216))
|
|
|
|
For y = -64 To Core.windowSize.Height Step 64
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(Core.windowSize.Width - 128, y + PokedexScreen.TileOffset, 128, 64), New Rectangle(48, 0, 16, 16), Color.White)
|
|
Next
|
|
|
|
Canvas.DrawGradient(New Rectangle(0, 0, CInt(Core.windowSize.Width), 200), New Color(42, 167, 198), New Color(42, 167, 198, 0), False, -1)
|
|
Canvas.DrawGradient(New Rectangle(0, CInt(Core.windowSize.Height - 200), CInt(Core.windowSize.Width), 200), New Color(42, 167, 198, 0), New Color(42, 167, 198), False, -1)
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Select a Pokédex", New Vector2(100, 24), Color.White, 0.0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0.0F)
|
|
|
|
For i = 0 To Me.Profiles.Count
|
|
If i = Me.Profiles.Count Then
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(100, 100 + i * 96, 64, 64), New Rectangle(16, 16, 16, 16), Color.White)
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(100 + 64, 100 + i * 96, 64 * 5, 64), New Rectangle(32, 16, 16, 16), Color.White)
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(100 + 64 * 6, 100 + i * 96, 64, 64), New Rectangle(16, 16, 16, 16), Color.White, 0.0F, Vector2.Zero, SpriteEffects.FlipHorizontally, 0.0F)
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Habitat-Dex", New Vector2(120, 116 + i * 96), Color.Black, 0.0F, Vector2.Zero, 1.25F, SpriteEffects.None, 0.0F)
|
|
Else
|
|
Dim p As Pokedex = Me.Profiles(i).Pokedex
|
|
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(100, 100 + i * 96, 64, 64), New Rectangle(16, 16, 16, 16), Color.White)
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(100 + 64, 100 + i * 96, 64 * 5, 64), New Rectangle(32, 16, 16, 16), Color.White)
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(100 + 64 * 6, 100 + i * 96, 64, 64), New Rectangle(16, 16, 16, 16), Color.White, 0.0F, Vector2.Zero, SpriteEffects.FlipHorizontally, 0.0F)
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, p.Name, New Vector2(120, 116 + i * 96), Color.Black, 0.0F, Vector2.Zero, 1.25F, SpriteEffects.None, 0.0F)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Profiles(i).Obtained.ToString(), New Vector2(460, 116 + i * 96), Color.Black, 0.0F, Vector2.Zero, 1.25F, SpriteEffects.None, 0.0F)
|
|
|
|
If Me.Profiles(i).Obtained >= Me.Profiles(i).Pokedex.Count Then
|
|
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\pokedexhabitat", New Rectangle(160, 160, 10, 10), ""), New Rectangle(430, 122 + i * 96, 20, 20), Color.White)
|
|
Else
|
|
If Me.Profiles(i).Seen + Me.Profiles(i).Obtained >= Me.Profiles(i).Pokedex.Count Then
|
|
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\pokedexhabitat", New Rectangle(160, 170, 10, 10), ""), New Rectangle(430, 122 + i * 96, 20, 20), Color.White)
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
DrawCursor()
|
|
End Sub
|
|
|
|
Private Sub DrawCursor()
|
|
Dim cPosition As Vector2 = New Vector2(380, 100 + Me.Cursor * 96 - 42)
|
|
|
|
Dim t As Texture2D = TextureManager.GetTexture("GUI\Menus\General", New Rectangle(0, 0, 16, 16), "")
|
|
Core.SpriteBatch.Draw(t, New Rectangle(CInt(cPosition.X), CInt(cPosition.Y), 64, 64), Color.White)
|
|
End Sub
|
|
|
|
Public Overrides Sub Update()
|
|
If Controls.Up(True, True, True, True, True, True) = True Then
|
|
Me.Cursor -= 1
|
|
If Controls.ShiftDown() = True Then
|
|
Me.Cursor -= 4
|
|
End If
|
|
End If
|
|
If Controls.Down(True, True, True, True, True, True) = True Then
|
|
Me.Cursor += 1
|
|
If Controls.ShiftDown() = True Then
|
|
Me.Cursor += 4
|
|
End If
|
|
End If
|
|
|
|
Me.Cursor = Me.Cursor.Clamp(0, Me.Profiles.Count)
|
|
|
|
If Controls.Accept(True, False, False) = True Then
|
|
For i = 0 To Me.Profiles.Count
|
|
If New Rectangle(100, 100 + i * 96, 64 * 7, 64).Contains(MouseHandler.MousePosition) = True Then
|
|
If i = Cursor Then
|
|
If Me.Cursor = Me.Profiles.Count Then
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(New PokedexHabitatScreen(Me))
|
|
Else
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(New PokedexScreen(Me, Me.Profiles(Me.Cursor), Nothing))
|
|
End If
|
|
Else
|
|
Cursor = i
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
If Controls.Accept(False, True, True) = True Then
|
|
If Me.Cursor = Me.Profiles.Count Then
|
|
Core.SetScreen(New PokedexHabitatScreen(Me))
|
|
SoundManager.PlaySound("select")
|
|
Else
|
|
Core.SetScreen(New PokedexScreen(Me, Me.Profiles(Me.Cursor), Nothing))
|
|
SoundManager.PlaySound("select")
|
|
End If
|
|
End If
|
|
|
|
If Controls.Dismiss(True, True, True) = True Then
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, Me.PreScreen, Color.White, False))
|
|
End If
|
|
|
|
PokedexScreen.TileOffset += 1
|
|
If PokedexScreen.TileOffset >= 64 Then
|
|
PokedexScreen.TileOffset = 0
|
|
End If
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class PokedexHabitatScreen
|
|
|
|
Inherits Screen
|
|
|
|
Dim texture As Texture2D
|
|
Dim HabitatList As New List(Of PokedexScreen.Habitat)
|
|
Dim Cursor As Integer = 0
|
|
Dim Scroll As Integer = 0
|
|
|
|
Public Sub New(ByVal currentScreen As Screen)
|
|
Me.Identification = Identifications.PokedexHabitatScreen
|
|
|
|
Me.PreScreen = currentScreen
|
|
Me.texture = TextureManager.GetTexture("GUI\Menus\General")
|
|
|
|
Me.MouseVisible = True
|
|
Me.CanMuteMusic = True
|
|
Me.CanBePaused = True
|
|
|
|
For Each file As String In System.IO.Directory.GetFiles(GameController.GamePath & GameModeManager.ActiveGameMode.PokeFilePath, "*.*", IO.SearchOption.AllDirectories)
|
|
If file.EndsWith(".poke") = True Then
|
|
Dim fileName As String = file.Remove(0, (GameController.GamePath & GameModeManager.ActiveGameMode.PokeFilePath & "\").Length - 1)
|
|
Dim newHabitat As New PokedexScreen.Habitat(file)
|
|
Dim exists As Boolean = False
|
|
For Each h As PokedexScreen.Habitat In Me.HabitatList
|
|
If h.Name.ToLower() = newHabitat.Name.ToLower() Then
|
|
exists = True
|
|
h.Merge(newHabitat)
|
|
Exit For
|
|
End If
|
|
Next
|
|
If exists = False AndAlso Core.Player.PokeFiles.Contains(fileName) = True Then
|
|
HabitatList.Add(New PokedexScreen.Habitat(file))
|
|
End If
|
|
End If
|
|
Next
|
|
Me.HabitatList = (From h As PokedexScreen.Habitat In Me.HabitatList Order By h.Name Ascending).ToList()
|
|
End Sub
|
|
|
|
Public Overrides Sub Draw()
|
|
Canvas.DrawRectangle(Core.windowSize, New Color(84, 198, 216))
|
|
|
|
For y = -64 To Core.windowSize.Height Step 64
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(Core.windowSize.Width - 128, y + PokedexScreen.TileOffset, 128, 64), New Rectangle(48, 0, 16, 16), Color.White)
|
|
Next
|
|
|
|
Canvas.DrawGradient(New Rectangle(0, 0, CInt(Core.windowSize.Width), 200), New Color(42, 167, 198), New Color(42, 167, 198, 0), False, -1)
|
|
Canvas.DrawGradient(New Rectangle(0, CInt(Core.windowSize.Height - 200), CInt(Core.windowSize.Width), 200), New Color(42, 167, 198, 0), New Color(42, 167, 198), False, -1)
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Select a Habitat", New Vector2(100, 24), Color.White, 0.0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0.0F)
|
|
|
|
For i = Scroll To Scroll + 5
|
|
If i <= Me.HabitatList.Count - 1 Then
|
|
Dim p As Integer = i - Scroll
|
|
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(100, 100 + p * 96, 64, 64), New Rectangle(16, 16, 16, 16), Color.White)
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(100 + 64, 100 + p * 96, 64 * 8, 64), New Rectangle(32, 16, 16, 16), Color.White)
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(100 + 64 * 9, 100 + p * 96, 64, 64), New Rectangle(16, 16, 16, 16), Color.White, 0.0F, Vector2.Zero, SpriteEffects.FlipHorizontally, 0.0F)
|
|
|
|
Core.SpriteBatch.Draw(HabitatList(i).Texture, New Rectangle(120, 108 + p * 96, 64, 48), Color.White)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, HabitatList(i).Name, New Vector2(200, 116 + p * 96), Color.Black, 0.0F, Vector2.Zero, 1.25F, SpriteEffects.None, 0.0F)
|
|
|
|
Dim t As String = HabitatList(i).PokemonCaught.ToString() & "/" & HabitatList(i).PokemonList.Count
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, t, New Vector2(680 - CSng((FontManager.MainFont.MeasureString(t).X * 1.25F) / 2.0F), 116 + p * 96), Color.Black, 0.0F, Vector2.Zero, 1.25F, SpriteEffects.None, 0.0F)
|
|
|
|
Dim progressTexture As Texture2D = Me.HabitatList(i).ProgressTexture
|
|
If Not progressTexture Is Nothing Then
|
|
Core.SpriteBatch.Draw(progressTexture, New Rectangle(CInt(650 - CSng((FontManager.MainFont.MeasureString(t).X * 1.25F) / 2.0F)), 121 + p * 96, 20, 20), Color.White)
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
DrawCursor()
|
|
End Sub
|
|
|
|
Private Sub DrawCursor()
|
|
Dim cPosition As Vector2 = New Vector2(520, 100 + Me.Cursor * 96 - 42)
|
|
|
|
Dim t As Texture2D = TextureManager.GetTexture("GUI\Menus\General", New Rectangle(0, 0, 16, 16), "")
|
|
Core.SpriteBatch.Draw(t, New Rectangle(CInt(cPosition.X), CInt(cPosition.Y), 64, 64), Color.White)
|
|
End Sub
|
|
|
|
Public Overrides Sub Update()
|
|
If Controls.Down(True, True, True, True, True, True) = True Then
|
|
Me.Cursor += 1
|
|
If Controls.ShiftDown() = True Then
|
|
Me.Cursor += 4
|
|
End If
|
|
End If
|
|
If Controls.Up(True, True, True, True, True, True) = True Then
|
|
Me.Cursor -= 1
|
|
If Controls.ShiftDown() = True Then
|
|
Me.Cursor -= 4
|
|
End If
|
|
End If
|
|
|
|
While Me.Cursor > 5
|
|
Me.Cursor -= 1
|
|
Me.Scroll += 1
|
|
End While
|
|
While Me.Cursor < 0
|
|
Me.Cursor += 1
|
|
Me.Scroll -= 1
|
|
End While
|
|
|
|
If Me.HabitatList.Count < 7 Then
|
|
Me.Scroll = 0
|
|
Else
|
|
Me.Scroll = Me.Scroll.Clamp(0, Me.HabitatList.Count - 6)
|
|
End If
|
|
|
|
If Me.HabitatList.Count < 6 Then
|
|
Me.Cursor = Me.Cursor.Clamp(0, Me.HabitatList.Count - 1)
|
|
Else
|
|
Me.Cursor = Me.Cursor.Clamp(0, 5)
|
|
End If
|
|
|
|
If Me.HabitatList.Count > 0 Then
|
|
If Controls.Accept(True, False, False) = True Then
|
|
For i = Scroll To Scroll + 5
|
|
If i <= Me.HabitatList.Count - 1 Then
|
|
If New Rectangle(100, 100 + (i - Scroll) * 96, 640, 64).Contains(MouseHandler.MousePosition) = True Then
|
|
If i = Cursor + Scroll Then
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(New PokedexScreen(Me, Nothing, Me.HabitatList(Cursor + Scroll)))
|
|
Else
|
|
Cursor = i - Scroll
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
If Controls.Accept(False, True, True) = True Then
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(New PokedexScreen(Me, Nothing, Me.HabitatList(Cursor + Scroll)))
|
|
End If
|
|
End If
|
|
|
|
If Controls.Dismiss(True, True, True) = True Then
|
|
Core.SetScreen(Me.PreScreen)
|
|
SoundManager.PlaySound("select")
|
|
End If
|
|
|
|
PokedexScreen.TileOffset += 1
|
|
If PokedexScreen.TileOffset >= 64 Then
|
|
PokedexScreen.TileOffset = 0
|
|
End If
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class PokedexScreen
|
|
|
|
Inherits Screen
|
|
|
|
Public Shared TileOffset As Integer = 0
|
|
|
|
Public Enum OrderType
|
|
Numeric
|
|
Weigth
|
|
Height
|
|
Alphabetically
|
|
End Enum
|
|
|
|
Public Enum FilterType
|
|
Type1
|
|
Type2
|
|
Name
|
|
End Enum
|
|
|
|
Structure Filter
|
|
Public FilterType As FilterType
|
|
Public FilterValue As String
|
|
End Structure
|
|
|
|
Dim texture As Texture2D
|
|
|
|
Public ReverseOrder As Boolean = False
|
|
Public Order As OrderType = OrderType.Numeric
|
|
|
|
Public Filters As New List(Of Filter)
|
|
Public Profile As PokedexSelectScreen.PokedexProfile
|
|
Public CHabitat As Habitat = Nothing
|
|
|
|
Dim Scroll As Integer = 0
|
|
Dim Cursor As New Vector2(0)
|
|
|
|
Shared TempPokemonStorage As New Dictionary(Of Integer, Pokemon)
|
|
Shared TempPokemonDexType As New Dictionary(Of Integer, Integer)
|
|
|
|
Dim PokemonList As New List(Of Pokemon)
|
|
Dim menu As SelectMenu
|
|
|
|
Public Sub New(ByVal currentScreen As Screen, ByVal Profile As PokedexSelectScreen.PokedexProfile, ByVal Habitat As Habitat)
|
|
Me.Identification = Identifications.PokedexScreen
|
|
Me.PreScreen = currentScreen
|
|
|
|
Me.texture = TextureManager.GetTexture("GUI\Menus\General")
|
|
Me.Profile = Profile
|
|
Me.CHabitat = Habitat
|
|
|
|
Me.MouseVisible = True
|
|
Me.CanMuteMusic = True
|
|
Me.CanBePaused = True
|
|
|
|
TempPokemonStorage.Clear()
|
|
TempPokemonDexType.Clear()
|
|
|
|
SetList()
|
|
|
|
Me.menu = New SelectMenu({""}.ToList(), 0, Nothing, 0)
|
|
Me.menu.Visible = False
|
|
End Sub
|
|
|
|
Private Sub SetList()
|
|
PokemonList.Clear()
|
|
TempPokemonStorage.Clear()
|
|
TempPokemonDexType.Clear()
|
|
|
|
Dim neededEntryType As Integer = 0
|
|
Select Case Me.Order
|
|
Case OrderType.Alphabetically
|
|
neededEntryType = 1
|
|
Case OrderType.Height, OrderType.Weigth
|
|
neededEntryType = 2
|
|
End Select
|
|
|
|
For Each f As Filter In Me.Filters
|
|
Dim thisType As Integer = 0
|
|
If f.FilterType = FilterType.Name Then
|
|
thisType = 1
|
|
Else
|
|
thisType = 2
|
|
End If
|
|
If thisType > neededEntryType Then
|
|
neededEntryType = thisType
|
|
End If
|
|
Next
|
|
|
|
Dim pokeSearchList As New List(Of Integer)
|
|
|
|
If CHabitat Is Nothing Then
|
|
' Add any external Pokémon if specified to do so:
|
|
If Profile.Pokedex.IncludeExternalPokemon = True Then
|
|
For i = 1 To Pokedex.POKEMONCOUNT
|
|
If Me.Profile.Pokedex.HasPokemon(i, False) = False Then
|
|
If Pokedex.GetEntryType(Core.Player.PokedexData, i) > 0 Then
|
|
Profile.Pokedex.PokemonList.Add(Profile.Pokedex.PokemonList.Count + 1, i)
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
For Each i As Integer In Profile.Pokedex.PokemonList.Values
|
|
pokeSearchList.Add(i)
|
|
Next
|
|
Else
|
|
For Each i As Integer In CHabitat.PokemonList
|
|
pokeSearchList.Add(i)
|
|
Next
|
|
End If
|
|
|
|
For i = 0 To pokeSearchList.Count - 1
|
|
If Pokemon.PokemonDataExists(pokeSearchList(i)) = True Then
|
|
Dim p As Pokemon = Pokemon.GetPokemonByID(pokeSearchList(i))
|
|
If Pokedex.GetEntryType(Core.Player.PokedexData, p.Number) >= neededEntryType Then
|
|
|
|
Dim valid As Boolean = True
|
|
For Each F As Filter In Me.Filters
|
|
Select Case F.FilterType
|
|
Case FilterType.Name
|
|
If p.GetName().ToUpper().StartsWith(F.FilterValue.ToUpper()) = False Then
|
|
valid = False
|
|
Exit For
|
|
End If
|
|
Case FilterType.Type1
|
|
If p.Type1.Type <> New Element(F.FilterValue).Type Then
|
|
valid = False
|
|
Exit For
|
|
End If
|
|
Case FilterType.Type2
|
|
If p.Type2.Type <> New Element(F.FilterValue).Type Then
|
|
valid = False
|
|
Exit For
|
|
End If
|
|
End Select
|
|
Next
|
|
|
|
If valid = True Then
|
|
Me.PokemonList.Add(p)
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
Select Case Me.Order
|
|
Case OrderType.Numeric
|
|
If CHabitat Is Nothing Then
|
|
If Me.ReverseOrder = True Then
|
|
Me.PokemonList = (From p As Pokemon In Me.PokemonList Order By Profile.Pokedex.GetPlace(p.Number) Descending).ToList()
|
|
Else
|
|
Me.PokemonList = (From p As Pokemon In Me.PokemonList Order By Profile.Pokedex.GetPlace(p.Number) Ascending).ToList()
|
|
End If
|
|
Else
|
|
If Me.ReverseOrder = True Then
|
|
Me.PokemonList = (From p As Pokemon In Me.PokemonList Order By p.Number Descending).ToList()
|
|
Else
|
|
Me.PokemonList = (From p As Pokemon In Me.PokemonList Order By p.Number Ascending).ToList()
|
|
End If
|
|
End If
|
|
Case OrderType.Alphabetically
|
|
If Me.ReverseOrder = True Then
|
|
Me.PokemonList = (From p As Pokemon In Me.PokemonList Order By p.GetName() Descending).ToList()
|
|
Else
|
|
Me.PokemonList = (From p As Pokemon In Me.PokemonList Order By p.GetName() Ascending).ToList()
|
|
End If
|
|
Case OrderType.Weigth
|
|
If Me.ReverseOrder = True Then
|
|
Me.PokemonList = (From p As Pokemon In Me.PokemonList Order By p.PokedexEntry.Weight Descending).ToList()
|
|
Else
|
|
Me.PokemonList = (From p As Pokemon In Me.PokemonList Order By p.PokedexEntry.Weight Ascending).ToList()
|
|
End If
|
|
Case OrderType.Height
|
|
If Me.ReverseOrder = True Then
|
|
Me.PokemonList = (From p As Pokemon In Me.PokemonList Order By p.PokedexEntry.Height Descending).ToList()
|
|
Else
|
|
Me.PokemonList = (From p As Pokemon In Me.PokemonList Order By p.PokedexEntry.Height Ascending).ToList()
|
|
End If
|
|
End Select
|
|
|
|
Me.ClampCursor()
|
|
End Sub
|
|
|
|
Public Overrides Sub Draw()
|
|
Canvas.DrawRectangle(Core.windowSize, New Color(84, 198, 216))
|
|
|
|
For y = -64 To Core.windowSize.Height Step 64
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(Core.windowSize.Width - 128, y + TileOffset, 128, 64), New Rectangle(48, 0, 16, 16), Color.White)
|
|
Next
|
|
|
|
Canvas.DrawGradient(New Rectangle(0, 0, CInt(Core.windowSize.Width), 200), New Color(42, 167, 198), New Color(42, 167, 198, 0), False, -1)
|
|
Canvas.DrawGradient(New Rectangle(0, CInt(Core.windowSize.Height - 200), CInt(Core.windowSize.Width), 200), New Color(42, 167, 198, 0), New Color(42, 167, 198), False, -1)
|
|
|
|
Canvas.DrawRectangle(New Rectangle(50, 30, 564, 90), New Color(42, 167, 198, 150))
|
|
|
|
If CHabitat Is Nothing Then
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, Profile.Pokedex.Name, New Vector2(60, 55), Color.White, 0.0F, Vector2.Zero, 1.5F, SpriteEffects.None, 0.0F)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Seen: " & Environment.NewLine & Environment.NewLine & "Obtained: ", New Vector2(420, 45), Color.White)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, Profile.Seen + Profile.Obtained & Environment.NewLine & Environment.NewLine & Profile.Obtained, New Vector2(540, 45), Color.Black)
|
|
Else
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, CHabitat.Name, New Vector2(60, 80), Color.White, 0.0F, Vector2.Zero, 1.5F, SpriteEffects.None, 0.0F)
|
|
Core.SpriteBatch.Draw(CHabitat.Texture, New Rectangle(60, 32, 64, 48), Color.White)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Available: " & Environment.NewLine & Environment.NewLine & "Obtained: ", New Vector2(420, 45), Color.White)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, CHabitat.PokemonList.Count & Environment.NewLine & Environment.NewLine & CHabitat.PokemonCaught, New Vector2(540, 45), Color.Black)
|
|
|
|
Dim progressTexture As Texture2D = Me.CHabitat.ProgressTexture
|
|
If Not progressTexture Is Nothing Then
|
|
Core.SpriteBatch.Draw(progressTexture, New Rectangle(134, 46, 20, 20), Color.White)
|
|
End If
|
|
End If
|
|
|
|
If PokemonList.Count > 0 Then
|
|
For x = 0 To 5
|
|
For y = 0 To 4
|
|
Dim id As Integer = (y + Scroll) * 6 + x
|
|
|
|
If id <= Me.PokemonList.Count - 1 Then
|
|
If Not CHabitat Is Nothing OrElse Me.Profile.Pokedex.OriginalCount >= Profile.Pokedex.GetPlace(Me.PokemonList(id).Number) Then
|
|
Canvas.DrawRectangle(New Rectangle(50 + x * 100, 140 + y * 100, 64, 92), New Color(42, 167, 198, 150))
|
|
Else
|
|
Canvas.DrawBorder(3, New Rectangle(50 + x * 100, 140 + y * 100, 64, 92), New Color(42, 167, 198, 150))
|
|
End If
|
|
|
|
Dim p As Pokemon = Nothing
|
|
Dim entryType As Integer = 0
|
|
|
|
If TempPokemonStorage.ContainsKey(id + 1) = False Then
|
|
TempPokemonStorage.Add(id + 1, Me.PokemonList(id))
|
|
TempPokemonDexType.Add(id + 1, Pokedex.GetEntryType(Core.Player.PokedexData, Me.PokemonList(id).Number))
|
|
End If
|
|
p = TempPokemonStorage(id + 1)
|
|
entryType = TempPokemonDexType(id + 1)
|
|
|
|
If Cursor = New Vector2(x, y) Then
|
|
DrawPokemonPreview(p)
|
|
End If
|
|
|
|
Dim c As Color = Color.Gray
|
|
If entryType > 0 Then
|
|
If entryType > 1 Then
|
|
c = Color.White
|
|
End If
|
|
Dim pokeTexture = p.GetMenuTexture()
|
|
Core.SpriteBatch.Draw(pokeTexture, New Rectangle(50 + x * 100, 140 + y * 100, pokeTexture.Width * 2, 64), c)
|
|
End If
|
|
|
|
Dim no As String = "000"
|
|
If CHabitat Is Nothing Then
|
|
no = Profile.Pokedex.GetPlace(p.Number).ToString()
|
|
Else
|
|
no = p.Number.ToString()
|
|
End If
|
|
While no.Length < 3
|
|
no = "0" & no
|
|
End While
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, no, New Vector2(50 + x * 100 + CInt(32 - FontManager.MainFont.MeasureString(no).X / 2), 206 + y * 100), Color.White)
|
|
End If
|
|
Next
|
|
Next
|
|
Else
|
|
Canvas.DrawGradient(New Rectangle(50, 300, 80, 90), New Color(84, 198, 216), New Color(42, 167, 198, 150), True, -1)
|
|
Canvas.DrawRectangle(New Rectangle(130, 300, 404, 90), New Color(42, 167, 198, 150))
|
|
Canvas.DrawGradient(New Rectangle(534, 300, 80, 90), New Color(42, 167, 198, 150), New Color(84, 198, 216), True, -1)
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "No search results.", New Vector2(50 + CInt(564 / 2) - CInt(FontManager.MainFont.MeasureString("No search results.").X / 2), 330), Color.White)
|
|
End If
|
|
|
|
Canvas.DrawRectangle(New Rectangle(670, 30, 400, 90), New Color(42, 167, 198, 150))
|
|
Dim orderText As String = "Numeric"
|
|
Select Case Me.Order
|
|
Case OrderType.Alphabetically
|
|
orderText = "A-Z"
|
|
Case OrderType.Height
|
|
orderText = "Height"
|
|
Case OrderType.Weigth
|
|
orderText = "Weight"
|
|
End Select
|
|
Dim filterText As String = "None"
|
|
If Filters.Count > 0 Then
|
|
filterText = ""
|
|
For Each f As Filter In Me.Filters
|
|
If filterText <> "" Then
|
|
filterText &= ", "
|
|
End If
|
|
Select Case f.FilterType
|
|
Case FilterType.Name
|
|
filterText &= "Name"
|
|
Case FilterType.Type1
|
|
filterText &= "Type 1"
|
|
Case FilterType.Type2
|
|
filterText &= "Type 2"
|
|
End Select
|
|
Next
|
|
End If
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Order:" & Environment.NewLine & "Filter:" & Environment.NewLine & "Press Q on the keyboard to search.", New Vector2(685, 45), Color.White)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, orderText & Environment.NewLine & filterText, New Vector2(790, 45), Color.Black)
|
|
|
|
If menu.Visible = True Then
|
|
menu.Draw()
|
|
Else
|
|
If PokemonList.Count > 0 Then
|
|
DrawCursor()
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Function GetPlace(ByVal PokemonNumber As Integer) As Integer
|
|
For i = 0 To PokemonList.Count - 1
|
|
If PokemonList(i).Number = PokemonNumber Then
|
|
Return i + 1
|
|
End If
|
|
Next
|
|
|
|
Return -1
|
|
End Function
|
|
|
|
Private Sub DrawPokemonPreview(ByVal p As Pokemon)
|
|
Dim entryType As Integer = Pokedex.GetEntryType(Core.Player.PokedexData, p.Number)
|
|
|
|
For i = 0 To 4
|
|
Canvas.DrawGradient(New Rectangle(650, 300 + i * 40, 50, 2), New Color(255, 255, 255, 10), New Color(255, 255, 255, 255), True, -1)
|
|
Canvas.DrawRectangle(New Rectangle(700, 300 + i * 40, 350, 2), Color.White)
|
|
Canvas.DrawGradient(New Rectangle(1050, 300 + i * 40, 50, 2), New Color(255, 255, 255, 255), New Color(255, 255, 255, 10), True, -1)
|
|
Next
|
|
|
|
Dim no As String = "000"
|
|
If CHabitat Is Nothing Then
|
|
no = Profile.Pokedex.GetPlace(p.Number).ToString()
|
|
Else
|
|
no = p.Number.ToString()
|
|
End If
|
|
While no.Length < 3
|
|
no = "0" & no
|
|
End While
|
|
|
|
If entryType = 0 Then
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "???" & Environment.NewLine & Environment.NewLine & "No. " & no, New Vector2(830, 200), Color.White)
|
|
Else
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, p.GetName() & Environment.NewLine & Environment.NewLine & "No. " & no, New Vector2(830, 200), Color.White)
|
|
Core.SpriteBatch.Draw(p.GetTexture(True), New Rectangle(670, 140, 128, 128), Color.White)
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "SPECIES", New Vector2(680, 310), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "TYPE", New Vector2(680, 350), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "HEIGHT", New Vector2(680, 390), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "WEIGHT", New Vector2(680, 430), Color.Black)
|
|
|
|
Canvas.DrawRectangle(New Rectangle(670, 480, 400, 152), New Color(42, 167, 198, 150))
|
|
|
|
If Not CHabitat Is Nothing Then
|
|
Dim encounterTypes As New List(Of Integer)
|
|
For Each ec As PokedexScreen.Habitat.EncounterPokemon In CHabitat.ObtainTypeList
|
|
If ec.PokemonID = p.Number Then
|
|
If encounterTypes.Contains(ec.EncounterType) = False Then
|
|
encounterTypes.Add(ec.EncounterType)
|
|
End If
|
|
End If
|
|
Next
|
|
For i = 0 To encounterTypes.Count - 1
|
|
Dim encounterType As Integer = encounterTypes(i)
|
|
Core.SpriteBatch.Draw(PokedexScreen.Habitat.GetEncounterTypeImage(encounterType), New Rectangle(824 + i * 32, 266, 32, 32), Color.White)
|
|
Next
|
|
End If
|
|
|
|
If entryType > 1 Then
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, p.PokedexEntry.Species, New Vector2(850, 310), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "", New Vector2(850, 350), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, p.PokedexEntry.Height & " m", New Vector2(850, 390), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, p.PokedexEntry.Weight & " kg", New Vector2(850, 430), Color.Black)
|
|
|
|
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\Types"), New Rectangle(850, 356, 48, 16), p.Type1.GetElementImage(), Color.White)
|
|
If p.Type2.Type <> Element.Types.Blank Then
|
|
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\Types"), New Rectangle(900, 356, 48, 16), p.Type2.GetElementImage(), Color.White)
|
|
End If
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, p.PokedexEntry.Text.CropStringToWidth(FontManager.MainFont, 380), New Vector2(680, 490), Color.Black)
|
|
|
|
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\pokedexhabitat", New Rectangle(160, 160, 10, 10), ""), New Rectangle(915, 242, 20, 20), Color.White)
|
|
Else
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "??? Pokémon", New Vector2(850, 310), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "???", New Vector2(850, 350), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "??? m", New Vector2(850, 390), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "??? kg", New Vector2(850, 430), Color.Black)
|
|
|
|
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\pokedexhabitat", New Rectangle(160, 170, 10, 10), ""), New Rectangle(915, 242, 20, 20), Color.White)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub DrawCursor()
|
|
Dim cPosition As Vector2 = New Vector2(50 + Me.Cursor.X * 100 + 42, 140 + Me.Cursor.Y * 100 - 42)
|
|
|
|
Dim t As Texture2D = TextureManager.GetTexture("GUI\Menus\General", New Rectangle(0, 0, 16, 16), "")
|
|
Core.SpriteBatch.Draw(t, New Rectangle(CInt(cPosition.X), CInt(cPosition.Y), 64, 64), Color.White)
|
|
End Sub
|
|
|
|
Public Overrides Sub Update()
|
|
If menu.Visible = True Then
|
|
menu.Update()
|
|
Else
|
|
If Controls.Left(True, True, False, True, True, True) = True Then
|
|
Me.Cursor.X -= 1
|
|
End If
|
|
If Controls.Right(True, True, False, True, True, True) = True Then
|
|
Me.Cursor.X += 1
|
|
End If
|
|
If Controls.Up(True, True, True, True, True, True) = True Then
|
|
Me.Cursor.Y -= 1
|
|
If Controls.ShiftDown() = True Then
|
|
Me.Cursor.Y -= 4
|
|
End If
|
|
End If
|
|
If Controls.Down(True, True, True, True, True, True) = True Then
|
|
Me.Cursor.Y += 1
|
|
If Controls.ShiftDown() = True Then
|
|
Me.Cursor.Y += 4
|
|
End If
|
|
End If
|
|
|
|
If Cursor.X > 5 Then
|
|
Cursor.X = 0
|
|
Cursor.Y += 1
|
|
End If
|
|
If Cursor.X < 0 Then
|
|
Cursor.X = 5
|
|
Cursor.Y -= 1
|
|
End If
|
|
|
|
While Cursor.Y < 0
|
|
Me.Cursor.Y += 1
|
|
Me.Scroll -= 1
|
|
End While
|
|
While Cursor.Y > 4
|
|
Me.Cursor.Y -= 1
|
|
Me.Scroll += 1
|
|
End While
|
|
|
|
If Controls.Accept(True, False, False) = True Then
|
|
For i = 0 To 29
|
|
Dim x As Integer = i
|
|
Dim y As Integer = 0
|
|
While x > 5
|
|
x -= 6
|
|
y += 1
|
|
End While
|
|
|
|
If New Rectangle(50 + x * 100, 140 + y * 100, 64, 92).Contains(MouseHandler.MousePosition) = True Then
|
|
If Cursor.X + Cursor.Y * 6 = i Then
|
|
If TempPokemonDexType(CInt((Cursor.Y + Scroll) * 6 + Cursor.X + 1)) > 0 Then
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(New PokedexViewScreen(Me, TempPokemonStorage(CInt((Cursor.Y + Scroll) * 6 + Cursor.X + 1)), False))
|
|
End If
|
|
Else
|
|
Cursor.X = x
|
|
Cursor.Y = y
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
ClampCursor()
|
|
|
|
If Controls.Accept(False, True, True) = True Then
|
|
If TempPokemonDexType(CInt((Cursor.Y + Scroll) * 6 + Cursor.X + 1)) > 0 Then
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(New PokedexViewScreen(Me, TempPokemonStorage(CInt((Cursor.Y + Scroll) * 6 + Cursor.X + 1)), False))
|
|
End If
|
|
End If
|
|
|
|
If KeyBoardHandler.KeyPressed(KeyBindings.SpecialKey) = True Or ControllerHandler.ButtonPressed(Buttons.Y) = True Then
|
|
Me.menu = New SelectMenu({"Order", "Filter", "Reset", "Back"}.ToList(), 0, AddressOf SelectMenu1, 3)
|
|
End If
|
|
|
|
If Controls.Dismiss(True, True, True) = True Then
|
|
If Me.Filters.Count > 0 Or Me.Order <> OrderType.Numeric Or Me.ReverseOrder = True Then
|
|
SoundManager.PlaySound("select")
|
|
Me.Filters.Clear()
|
|
Me.ReverseOrder = False
|
|
Me.Order = OrderType.Numeric
|
|
Me.SetList()
|
|
Else
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(Me.PreScreen)
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
TileOffset += 1
|
|
If TileOffset >= 64 Then
|
|
TileOffset = 0
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ClampCursor()
|
|
Dim linesCount As Integer = CInt(Math.Ceiling(Me.PokemonList.Count / 6))
|
|
|
|
If linesCount < 6 Then
|
|
Me.Scroll = 0
|
|
Else
|
|
Me.Scroll = Me.Scroll.Clamp(0, linesCount - 5)
|
|
End If
|
|
|
|
Dim maxY As Integer = linesCount - Scroll - 1
|
|
Me.Cursor.Y = Me.Cursor.Y.Clamp(0, maxY)
|
|
|
|
If Me.Cursor.Y = maxY Then
|
|
Dim maxX As Integer = Me.PokemonList.Count
|
|
While maxX > 6
|
|
maxX -= 6
|
|
End While
|
|
Me.Cursor.X = Me.Cursor.X.Clamp(0, maxX - 1)
|
|
End If
|
|
End Sub
|
|
|
|
Public Overrides Sub ChangeTo()
|
|
TempPokemonDexType.Clear()
|
|
TempPokemonStorage.Clear()
|
|
End Sub
|
|
|
|
#Region "Menus"
|
|
|
|
Private Sub SelectMenu1(ByVal s As SelectMenu)
|
|
Select Case s.SelectedItem.ToLower()
|
|
Case "order"
|
|
Me.menu = New SelectMenu({"Type", "Reverse: " & Me.ReverseOrder.ToString(), "Back"}.ToList(), 0, AddressOf SelectMenuOrder, 2)
|
|
Case "filter"
|
|
Me.menu = New SelectMenu({"Name", "Type1", "Type2", "Clear", "Back"}.ToList(), 0, AddressOf SelectMenuFilter, 4)
|
|
Case "reset"
|
|
Me.Filters.Clear()
|
|
Me.ReverseOrder = False
|
|
Me.Order = OrderType.Numeric
|
|
Me.SetList()
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub SelectMenuFilter(ByVal s As SelectMenu)
|
|
Select Case s.SelectedItem.ToLower()
|
|
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)
|
|
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)
|
|
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)
|
|
Case "clear"
|
|
Me.Filters.Clear()
|
|
Me.SetList()
|
|
Case "back"
|
|
Me.menu = New SelectMenu({"Order", "Filter", "Reset", "Back"}.ToList(), 0, AddressOf SelectMenu1, 3)
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub SelectMenuType1Filter(ByVal s As SelectMenu)
|
|
If s.SelectedItem <> "Back" Then
|
|
For i = 0 To Filters.Count - 1
|
|
If Filters(i).FilterType = FilterType.Type1 Then
|
|
Filters.RemoveAt(i)
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
Filters.Add(New Filter With {.FilterType = FilterType.Type1, .FilterValue = s.SelectedItem})
|
|
SetList()
|
|
Else
|
|
Me.menu = New SelectMenu({"Name", "Type1", "Type2", "Clear", "Back"}.ToList(), 0, AddressOf SelectMenuFilter, 4)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SelectMenuType2Filter(ByVal s As SelectMenu)
|
|
If s.SelectedItem <> "Back" Then
|
|
For i = 0 To Filters.Count - 1
|
|
If Filters(i).FilterType = FilterType.Type2 Then
|
|
Filters.RemoveAt(i)
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
Filters.Add(New Filter With {.FilterType = FilterType.Type2, .FilterValue = s.SelectedItem})
|
|
SetList()
|
|
Else
|
|
Me.menu = New SelectMenu({"Name", "Type1", "Type2", "Clear", "Back"}.ToList(), 0, AddressOf SelectMenuFilter, 4)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SelectMenuNameFilter(ByVal s As SelectMenu)
|
|
If s.SelectedItem <> "Back" Then
|
|
For i = 0 To Filters.Count - 1
|
|
If Filters(i).FilterType = FilterType.Name Then
|
|
Filters.RemoveAt(i)
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
Filters.Add(New Filter With {.FilterType = FilterType.Name, .FilterValue = s.SelectedItem})
|
|
SetList()
|
|
Else
|
|
Me.menu = New SelectMenu({"Name", "Type1", "Type2", "Clear", "Back"}.ToList(), 0, AddressOf SelectMenuFilter, 4)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SelectMenuOrder(ByVal s As SelectMenu)
|
|
Select Case s.SelectedItem.ToLower()
|
|
Case "type"
|
|
Me.menu = New SelectMenu({"Numeric", "A-Z", "Weight", "Height", "Back"}.ToList(), 0, AddressOf SelectMenuOrderType, 4)
|
|
Case "reverse: " & Me.ReverseOrder.ToString().ToLower()
|
|
Me.ReverseOrder = Not Me.ReverseOrder
|
|
Me.menu = New SelectMenu({"Type", "Reverse: " & Me.ReverseOrder.ToString(), "Back"}.ToList(), 0, AddressOf SelectMenuOrder, 2)
|
|
Me.SetList()
|
|
Case "back"
|
|
Me.menu = New SelectMenu({"Order", "Filter", "Reset", "Back"}.ToList(), 0, AddressOf SelectMenu1, 3)
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub SelectMenuOrderType(ByVal s As SelectMenu)
|
|
Select Case s.SelectedItem.ToLower()
|
|
Case "numeric"
|
|
Me.Order = OrderType.Numeric
|
|
Me.SetList()
|
|
Case "a-z"
|
|
Me.Order = OrderType.Alphabetically
|
|
Me.SetList()
|
|
Case "weight"
|
|
Me.Order = OrderType.Weigth
|
|
Me.SetList()
|
|
Case "height"
|
|
Me.Order = OrderType.Height
|
|
Me.SetList()
|
|
Case "back"
|
|
Me.menu = New SelectMenu({"Type", "Reverse: " & Me.ReverseOrder.ToString(), "Back"}.ToList(), 0, AddressOf SelectMenuOrder, 2)
|
|
End Select
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
Private Class SelectMenu
|
|
|
|
Dim Items As New List(Of String)
|
|
Dim Index As Integer = 0
|
|
Public Delegate Sub ClickEvent(ByVal s As SelectMenu)
|
|
Dim ClickHandler As ClickEvent = Nothing
|
|
Dim BackIndex As Integer = 0
|
|
Public Visible As Boolean = True
|
|
Public Scroll As Integer = 0
|
|
|
|
Dim t1 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)
|
|
Me.Items = Items
|
|
Me.Index = Index
|
|
Me.ClickHandler = ClickHandle
|
|
Me.BackIndex = BackIndex
|
|
If Me.BackIndex < 0 Then
|
|
Me.BackIndex = Me.Items.Count + Me.BackIndex
|
|
End If
|
|
Me.Visible = True
|
|
|
|
t1 = TextureManager.GetTexture("GUI\Menus\General", New Rectangle(16, 16, 16, 16), "")
|
|
t2 = TextureManager.GetTexture("GUI\Menus\General", New Rectangle(32, 16, 16, 16), "")
|
|
End Sub
|
|
|
|
Public Sub Update()
|
|
If Visible = True Then
|
|
If Controls.Up(True, True, True, True, True, True) = True Then
|
|
Me.Index -= 1
|
|
End If
|
|
If Controls.Down(True, True, True, True, True, True) = True Then
|
|
Me.Index += 1
|
|
End If
|
|
Me.Index = Me.Index.Clamp(0, Me.Items.Count - 1)
|
|
|
|
For i = Scroll To Me.Scroll + 8
|
|
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
|
|
Controls.Accept(False, True, True) = True And i = Me.Index Or Controls.Dismiss(True, True, True) = True And Me.BackIndex = Me.Index Then
|
|
|
|
If Not ClickHandler Is Nothing Then
|
|
ClickHandler(Me)
|
|
SoundManager.PlaySound("select")
|
|
End If
|
|
Me.Visible = False
|
|
End If
|
|
If Controls.Dismiss(True, True, True) = True Then
|
|
Me.Index = Me.BackIndex
|
|
If Not ClickHandler Is Nothing Then
|
|
ClickHandler(Me)
|
|
SoundManager.PlaySound("select")
|
|
End If
|
|
Me.Visible = False
|
|
End If
|
|
If New Rectangle(Core.windowSize.Width - 270, 66 * ((i + 1) - Scroll), 256, 64).Contains(MouseHandler.MousePosition) = True And Controls.Accept(True, False, False) = True Then
|
|
Me.Index = i
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
If Index - Scroll > 8 Then
|
|
Scroll = Index - 8
|
|
End If
|
|
If Index - Scroll < 0 Then
|
|
Scroll = Index
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub Draw()
|
|
If Visible = True Then
|
|
For i = Scroll To Me.Scroll + 8
|
|
If i <= Me.Items.Count - 1 Then
|
|
Dim Text As String = Items(i)
|
|
|
|
Dim startPos As New Vector2(Core.windowSize.Width - 270, 66 * ((i + 1) - Scroll))
|
|
|
|
Core.SpriteBatch.Draw(t1, New Rectangle(CInt(startPos.X), CInt(startPos.Y), 64, 64), Color.White)
|
|
Core.SpriteBatch.Draw(t2, New Rectangle(CInt(startPos.X + 64), CInt(startPos.Y), 64, 64), Color.White)
|
|
Core.SpriteBatch.Draw(t2, New Rectangle(CInt(startPos.X + 128), CInt(startPos.Y), 64, 64), Color.White)
|
|
Core.SpriteBatch.Draw(t1, New Rectangle(CInt(startPos.X + 192), CInt(startPos.Y), 64, 64), Nothing, Color.White, 0.0F, New Vector2(0), SpriteEffects.FlipHorizontally, 0.0F)
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, Text, New Vector2(startPos.X + 128 - (FontManager.MainFont.MeasureString(Text).X * 1.4F) / 2, startPos.Y + 15), Color.Black, 0.0F, Vector2.Zero, 1.4F, SpriteEffects.None, 0.0F)
|
|
|
|
If Me.Index = i Then
|
|
Dim cPosition As Vector2 = New Vector2(startPos.X + 128, startPos.Y - 40)
|
|
Dim t As Texture2D = TextureManager.GetTexture("GUI\Menus\General", New Rectangle(0, 0, 16, 16), "")
|
|
Core.SpriteBatch.Draw(t, New Rectangle(CInt(cPosition.X), CInt(cPosition.Y), 64, 64), Color.White)
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Public ReadOnly Property SelectedItem() As String
|
|
Get
|
|
Return Items(Me.Index)
|
|
End Get
|
|
End Property
|
|
|
|
End Class
|
|
|
|
Public Class Habitat
|
|
|
|
Public Enum HabitatTypes As Integer
|
|
Grassland = 0
|
|
Forest = 1
|
|
WatersEdge = 2
|
|
Sea = 3
|
|
Cave = 4
|
|
Mountain = 5
|
|
RoughTerrain = 6
|
|
City = 7
|
|
End Enum
|
|
|
|
Public Structure EncounterPokemon
|
|
Public PokemonID As Integer
|
|
Public EncounterType As Integer
|
|
Public Daytimes() As Integer
|
|
End Structure
|
|
|
|
Dim MergeData() As String = {} ' Temporary data storage if needs to merge.
|
|
|
|
Public File As String = ""
|
|
Public Name As String = ""
|
|
Public HabitatType As HabitatTypes = HabitatTypes.Grassland
|
|
|
|
Public PokemonList As New List(Of Integer)
|
|
Public ObtainTypeList As New List(Of EncounterPokemon)
|
|
|
|
Public PokemonCaught As Integer = 0
|
|
Public PokemonSeen As Integer = 0
|
|
|
|
Public Sub New(ByVal file As String)
|
|
Security.FileValidation.CheckFileValid(file, False, "PokedexScreen.vb")
|
|
Dim data() As String = System.IO.File.ReadAllLines(file)
|
|
Me.MergeData = data
|
|
Me.File = file
|
|
|
|
For Each line As String In data
|
|
If line.ToLower().StartsWith("name=") = True Then
|
|
Me.Name = line.Remove(0, 5)
|
|
ElseIf line.ToLower().StartsWith("type=") = True Then
|
|
Dim arg As String = line.Remove(0, 5)
|
|
Select Case arg.ToLower()
|
|
Case "grassland"
|
|
Me.HabitatType = HabitatTypes.Grassland
|
|
Case "forest"
|
|
Me.HabitatType = HabitatTypes.Forest
|
|
Case "watersedge"
|
|
Me.HabitatType = HabitatTypes.WatersEdge
|
|
Case "sea"
|
|
Me.HabitatType = HabitatTypes.Sea
|
|
Case "cave"
|
|
Me.HabitatType = HabitatTypes.Cave
|
|
Case "mountain"
|
|
Me.HabitatType = HabitatTypes.Mountain
|
|
Case "roughterrain"
|
|
Me.HabitatType = HabitatTypes.RoughTerrain
|
|
Case "city"
|
|
Me.HabitatType = HabitatTypes.City
|
|
End Select
|
|
ElseIf line.StartsWith("{") = True And line.EndsWith("}") = True Then
|
|
Dim pokemonData() As String = line.Remove(line.Length - 1, 1).Remove(0, 1).Split(CChar("|"))
|
|
|
|
If Me.PokemonList.Contains(CInt(pokemonData(1))) = False Then
|
|
Me.PokemonList.Add(CInt(pokemonData(1)))
|
|
|
|
Dim entryType As Integer = Pokedex.GetEntryType(Core.Player.PokedexData, CInt(pokemonData(1)))
|
|
|
|
If entryType > 0 Then
|
|
Me.PokemonSeen += 1
|
|
End If
|
|
If entryType > 1 Then
|
|
Me.PokemonCaught += 1
|
|
End If
|
|
End If
|
|
|
|
Dim daytimesData As List(Of String) = pokemonData(3).Split(CChar(",")).ToList()
|
|
Dim dayTimes As New List(Of Integer)
|
|
|
|
For Each s As String In daytimesData
|
|
If StringHelper.IsNumeric(s) = True Then
|
|
Dim i As Integer = CInt(s)
|
|
If i > 0 Then
|
|
dayTimes.Add(i)
|
|
Else
|
|
dayTimes.Clear()
|
|
Exit For
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
Me.ObtainTypeList.Add(New EncounterPokemon With {.PokemonID = CInt(pokemonData(1)), .EncounterType = CInt(pokemonData(0)), .Daytimes = dayTimes.ToArray()})
|
|
End If
|
|
Next
|
|
|
|
If Me.Name = "" Then
|
|
Me.Name = System.IO.Path.GetFileNameWithoutExtension(file)
|
|
Me.Name = Me.Name(0).ToString().ToUpper() & Me.Name.Remove(0, 1)
|
|
End If
|
|
End Sub
|
|
|
|
Public ReadOnly Property Texture() As Texture2D
|
|
Get
|
|
Dim x As Integer = CInt(Me.HabitatType)
|
|
Dim y As Integer = 0
|
|
While x > 1
|
|
x -= 2
|
|
y += 1
|
|
End While
|
|
Return TextureManager.GetTexture("GUI\Menus\pokedexhabitat", New Rectangle(x * 64, y * 48, 64, 48), "")
|
|
End Get
|
|
End Property
|
|
|
|
Public Shared Function GetEncounterTypeImage(ByVal encounterType As Integer) As Texture2D
|
|
Dim x As Integer = 0
|
|
Dim y As Integer = 4
|
|
|
|
Select Case encounterType
|
|
Case 0
|
|
x = 0
|
|
y = 3
|
|
Case 1
|
|
x = 0
|
|
y = 4
|
|
Case 2
|
|
x = 1
|
|
y = 0
|
|
Case 3
|
|
x = 0
|
|
y = 0
|
|
Case 31
|
|
x = 0
|
|
y = 1
|
|
Case 32
|
|
x = 0
|
|
y = 2
|
|
End Select
|
|
|
|
Return TextureManager.GetTexture("GUI\Menus\pokedexhabitat", New Rectangle(128 + x * 32, y * 32, 32, 32), "")
|
|
End Function
|
|
|
|
Public ReadOnly Property ProgressTexture() As Texture2D
|
|
Get
|
|
If Me.PokemonCaught >= Me.PokemonList.Count Then
|
|
Return TextureManager.GetTexture("GUI\Menus\pokedexhabitat", New Rectangle(160, 160, 10, 10), "")
|
|
Else
|
|
If Me.PokemonSeen >= Me.PokemonList.Count Then
|
|
Return TextureManager.GetTexture("GUI\Menus\pokedexhabitat", New Rectangle(160, 170, 10, 10), "")
|
|
End If
|
|
End If
|
|
Return Nothing
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Merge(ByVal h As Habitat)
|
|
Dim data() As String = h.MergeData
|
|
|
|
For Each line As String In data
|
|
If line.StartsWith("{") = True And line.EndsWith("}") = True Then
|
|
Dim pokemonData() As String = line.Remove(line.Length - 1, 1).Remove(0, 1).Split(CChar("|"))
|
|
|
|
If Me.PokemonList.Contains(CInt(pokemonData(1))) = False Then
|
|
Me.PokemonList.Add(CInt(pokemonData(1)))
|
|
|
|
Dim entryType As Integer = Pokedex.GetEntryType(Core.Player.PokedexData, CInt(pokemonData(1)))
|
|
|
|
If entryType > 0 Then
|
|
Me.PokemonSeen += 1
|
|
End If
|
|
If entryType > 1 Then
|
|
Me.PokemonCaught += 1
|
|
End If
|
|
End If
|
|
|
|
Me.ObtainTypeList.Add(New EncounterPokemon With {.PokemonID = CInt(pokemonData(1)), .EncounterType = CInt(pokemonData(0))})
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Public Function HasPokemon(ByVal pokemonNumber As Integer) As Boolean
|
|
Return Me.PokemonList.Contains(pokemonNumber)
|
|
End Function
|
|
|
|
End Class
|
|
|
|
End Class
|
|
|
|
Public Class PokedexViewScreen
|
|
|
|
Inherits Screen
|
|
|
|
Dim Pokemon As Pokemon
|
|
Dim texture As Texture2D
|
|
Dim Page As Integer = 0
|
|
|
|
Dim EntryType As Integer = 0
|
|
Dim _transitionOut As Boolean = False
|
|
|
|
Dim yOffset As Integer = 0
|
|
Dim FrontView As Boolean = True
|
|
|
|
Dim EvolutionLine As EvolutionLinePokemon = Nothing
|
|
Dim minimumLevel As Integer = 0
|
|
Dim maximumLevel As Integer = 0
|
|
|
|
Dim HabitatList As New List(Of PokedexScreen.Habitat)
|
|
|
|
Class EvolutionLinePokemon
|
|
|
|
Public Level As Integer = 0
|
|
Public PokemonID As Integer = 0
|
|
Public Evolutions As New List(Of EvolutionLinePokemon)
|
|
Public Devolution As EvolutionLinePokemon = Nothing
|
|
Public Pokemon As Pokemon = Nothing
|
|
|
|
Public Sub New(ByVal Level As Integer, ByVal pokemonID As Integer, ByVal vS As PokedexViewScreen, ByVal fromEvolution As Integer)
|
|
Me.Level = Level
|
|
Me.PokemonID = pokemonID
|
|
Me.Pokemon = Pokemon.GetPokemonByID(Me.PokemonID)
|
|
|
|
If Me.Pokemon.EvolutionConditions.Count > 0 Then
|
|
Dim evolutions As New List(Of Integer)
|
|
For Each ev As EvolutionCondition In Me.Pokemon.EvolutionConditions
|
|
If evolutions.Contains(ev.Evolution) = False And fromEvolution <> ev.Evolution Then
|
|
evolutions.Add(ev.Evolution)
|
|
End If
|
|
Next
|
|
|
|
For Each ev As Integer In evolutions
|
|
If vS.maximumLevel < Me.Level + 1 Then
|
|
vS.maximumLevel = Me.Level + 1
|
|
End If
|
|
Me.Evolutions.Add(New EvolutionLinePokemon(Me.Level + 1, ev, vS, -1))
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
''' <summary>
|
|
''' Creates a new instance of this class.
|
|
''' </summary>
|
|
''' <param name="currentScreen">The screen that is currently active.</param>
|
|
''' <param name="Pokemon">The Pokémon to display.</param>
|
|
''' <param name="transitionOut">If the screen should fade out when closed.</param>
|
|
Public Sub New(ByVal currentScreen As Screen, ByVal Pokemon As Pokemon, ByVal transitionOut As Boolean)
|
|
Me.PreScreen = currentScreen
|
|
Me.Identification = Identifications.PokedexViewScreen
|
|
Me.texture = TextureManager.GetTexture("GUI\Menus\General")
|
|
|
|
Me.MouseVisible = True
|
|
Me.CanMuteMusic = True
|
|
Me.CanBePaused = True
|
|
Me._transitionOut = transitionOut
|
|
|
|
Me.Pokemon = Pokemon
|
|
Me.EntryType = Pokedex.GetEntryType(Core.Player.PokedexData, Me.Pokemon.Number)
|
|
|
|
Me.GetYOffset()
|
|
Me.FillEvolutionLine()
|
|
Me.FillHabitats()
|
|
End Sub
|
|
|
|
Private Sub FillEvolutionLine()
|
|
Dim p As New EvolutionLinePokemon(0, Me.Pokemon.Number, Me, -1)
|
|
|
|
If p.Pokemon.Devolution > 0 Then
|
|
Dim devP As Pokemon = P3D.Pokemon.GetPokemonByID(p.Pokemon.Devolution)
|
|
Dim devR As EvolutionLinePokemon = Nothing
|
|
Dim level As Integer = -1
|
|
p.Devolution = New EvolutionLinePokemon(level, devP.Number, Me, p.Pokemon.Number)
|
|
Logger.Debug("Add devolution level 1: " & devP.Number)
|
|
devR = p.Devolution
|
|
|
|
While devR.Pokemon.Devolution > 0
|
|
devP = P3D.Pokemon.GetPokemonByID(devR.Pokemon.Devolution)
|
|
level -= 1
|
|
devR.Devolution = New EvolutionLinePokemon(level, devP.Number, Me, devR.Pokemon.Number)
|
|
devR = devR.Devolution
|
|
Logger.Debug("Add devolution level " & (level * -1) & ": " & devP.Number)
|
|
End While
|
|
|
|
minimumLevel = level
|
|
End If
|
|
|
|
Logger.Debug("Minimum level: " & minimumLevel & "; maximum level: " & maximumLevel)
|
|
|
|
Me.EvolutionLine = p
|
|
End Sub
|
|
|
|
Private Sub FillHabitats()
|
|
For Each file As String In System.IO.Directory.GetFiles(GameController.GamePath & GameModeManager.ActiveGameMode.PokeFilePath, "*.*", IO.SearchOption.AllDirectories)
|
|
If file.EndsWith(".poke") = True Then
|
|
Dim fileName As String = file.Remove(0, (GameController.GamePath & GameModeManager.ActiveGameMode.PokeFilePath & "\").Length - 1)
|
|
Dim newHabitat As New PokedexScreen.Habitat(file)
|
|
Dim exists As Boolean = False
|
|
For Each h As PokedexScreen.Habitat In Me.HabitatList
|
|
If h.Name.ToLower() = newHabitat.Name.ToLower() Then
|
|
exists = True
|
|
h.Merge(newHabitat)
|
|
Exit For
|
|
End If
|
|
Next
|
|
If exists = False AndAlso Core.Player.PokeFiles.Contains(fileName) = True Then
|
|
HabitatList.Add(New PokedexScreen.Habitat(file))
|
|
End If
|
|
End If
|
|
Next
|
|
Me.HabitatList = (From h As PokedexScreen.Habitat In Me.HabitatList Order By h.Name Ascending).ToList()
|
|
|
|
For i = 0 To Me.HabitatList.Count - 1
|
|
If i <= Me.HabitatList.Count - 1 Then
|
|
If Me.HabitatList(i).HasPokemon(Me.Pokemon.Number) = False Then
|
|
Me.HabitatList.RemoveAt(i)
|
|
i -= 1
|
|
End If
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub GetYOffset()
|
|
Dim t As Texture2D = Pokemon.GetTexture(FrontView)
|
|
Me.yOffset = -1
|
|
|
|
Dim cArr(t.Width * t.Height - 1) As Color
|
|
t.GetData(cArr)
|
|
|
|
For y = 0 To t.Height - 1
|
|
For x = 0 To t.Width - 1
|
|
If cArr(x + y * t.Height) <> Color.Transparent Then
|
|
Me.yOffset = y
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
If Me.yOffset <> -1 Then
|
|
Exit For
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Public Overrides Sub Draw()
|
|
Canvas.DrawRectangle(Core.windowSize, New Color(84, 198, 216))
|
|
|
|
For y = -64 To Core.windowSize.Height Step 64
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(Core.windowSize.Width - 128, y + PokedexScreen.TileOffset, 128, 64), New Rectangle(48, 0, 16, 16), Color.White)
|
|
Next
|
|
|
|
Canvas.DrawGradient(New Rectangle(0, 0, CInt(Core.windowSize.Width), 200), New Color(42, 167, 198), New Color(42, 167, 198, 0), False, -1)
|
|
Canvas.DrawGradient(New Rectangle(0, CInt(Core.windowSize.Height - 200), CInt(Core.windowSize.Width), 200), New Color(42, 167, 198, 0), New Color(42, 167, 198), False, -1)
|
|
|
|
Select Case Me.Page
|
|
Case 0
|
|
DrawPage1()
|
|
Case 1
|
|
DrawPage2()
|
|
Case 2
|
|
DrawPage3()
|
|
End Select
|
|
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(20, 20, 64, 64), New Rectangle(16, 16, 16, 16), Color.White)
|
|
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(20 + 64, 20, 64 * 8, 64), New Rectangle(32, 16, 16, 16), Color.White)
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(20 + 64 * 9, 20, 64, 64), New Rectangle(16, 16, 16, 16), Color.White, 0.0F, Vector2.Zero, SpriteEffects.FlipHorizontally, 0.0F)
|
|
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(20 + 64, 20, 64 * 5, 64), New Rectangle(32, 16, 16, 16), Color.White)
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(20 + 64 * 6, 20, 64, 64), New Rectangle(16, 16, 16, 16), Color.White, 0.0F, Vector2.Zero, SpriteEffects.FlipHorizontally, 0.0F)
|
|
|
|
Dim pokeTexture = Pokemon.GetMenuTexture()
|
|
Core.SpriteBatch.Draw(pokeTexture, New Rectangle(28, 20, pokeTexture.Width * 2, 64), Color.White)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, Pokemon.GetName(), New Vector2(100, 36), Color.Black, 0.0F, Vector2.Zero, 1.25F, SpriteEffects.None, 0.0F)
|
|
|
|
If EntryType = 1 Then
|
|
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\pokedexhabitat", New Rectangle(160, 170, 10, 10), ""), New Rectangle(64 * 6 + 40, 42, 20, 20), Color.White)
|
|
ElseIf EntryType > 1 Then
|
|
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\pokedexhabitat", New Rectangle(160, 160, 10, 10), ""), New Rectangle(64 * 6 + 40, 42, 20, 20), Color.White)
|
|
End If
|
|
|
|
If Me.mLineLength = 100 Then
|
|
If Me.Page = 0 Or Me.Page = 1 Then
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(Core.windowSize.Width - 70, CInt(Core.windowSize.Height / 2 - 32), 64, 64), New Rectangle(0, 16, 16, 16), Color.White, 0.0F, Vector2.Zero, SpriteEffects.FlipHorizontally, 0.0F)
|
|
End If
|
|
If Me.Page = 1 Or Me.Page = 2 Then
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(6, CInt(Core.windowSize.Height / 2 - 32), 64, 64), New Rectangle(0, 16, 16, 16), Color.White)
|
|
End If
|
|
End If
|
|
|
|
Select Case Me.Page
|
|
Case 0
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Details", New Vector2(480, 36), Color.Black, 0.0F, Vector2.Zero, 1.25F, SpriteEffects.None, 0.0F)
|
|
Case 1
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Habitat", New Vector2(480, 36), Color.Black, 0.0F, Vector2.Zero, 1.25F, SpriteEffects.None, 0.0F)
|
|
Case 2
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Evolution", New Vector2(480, 36), Color.Black, 0.0F, Vector2.Zero, 1.25F, SpriteEffects.None, 0.0F)
|
|
End Select
|
|
End Sub
|
|
|
|
Dim fadeMainImage As Integer = 0
|
|
Dim vLineLength As Integer = 1
|
|
Dim mLineLength As Integer = 1
|
|
Dim playedCry As Boolean = False
|
|
|
|
Private Sub DrawPage1()
|
|
Dim v As Vector2 = Core.GetMiddlePosition(New Size(512, 512))
|
|
Core.SpriteBatch.Draw(Pokemon.GetTexture(Me.FrontView), New Rectangle(CInt(v.X), CInt(v.Y) - yOffset * 2, 512, 512), New Color(255, 255, 255, fadeMainImage))
|
|
|
|
If fadeMainImage = 255 Then
|
|
Dim mV As Vector2 = Core.GetMiddlePosition(New Size(0, 0))
|
|
|
|
Canvas.DrawLine(Color.Black, New Vector2(mV.X + 40, mV.Y - 40), New Vector2(mV.X + vLineLength, mV.Y - vLineLength), 2)
|
|
Canvas.DrawLine(Color.Black, New Vector2(mV.X + 40, mV.Y + 40), New Vector2(mV.X + vLineLength, mV.Y + vLineLength), 2)
|
|
Canvas.DrawLine(Color.Black, New Vector2(mV.X - 40, mV.Y - 40), New Vector2(mV.X - vLineLength, mV.Y - vLineLength), 2)
|
|
Canvas.DrawLine(Color.Black, New Vector2(mV.X - 40, mV.Y + 40), New Vector2(mV.X - vLineLength, mV.Y + vLineLength), 2)
|
|
|
|
If vLineLength = 140 Then
|
|
Canvas.DrawLine(Color.Black, New Vector2(mV.X + 140, mV.Y - 140), New Vector2(mV.X + (140 + mLineLength), mV.Y - 140), 2)
|
|
Canvas.DrawLine(Color.Black, New Vector2(mV.X + 139, mV.Y + 140), New Vector2(mV.X + (140 + mLineLength), mV.Y + 140), 2)
|
|
Canvas.DrawLine(Color.Black, New Vector2(mV.X - 139, mV.Y - 140), New Vector2(mV.X - (140 + mLineLength), mV.Y - 140), 2)
|
|
Canvas.DrawLine(Color.Black, New Vector2(mV.X - 139, mV.Y + 140), New Vector2(mV.X - (140 + mLineLength), mV.Y + 140), 2)
|
|
End If
|
|
|
|
If mLineLength = 100 Then
|
|
If EntryType > 1 Then
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, Pokemon.PokedexEntry.Height & " m", New Vector2(mV.X + 250, mV.Y - 152), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, Pokemon.PokedexEntry.Weight & " kg", New Vector2(mV.X + 250, mV.Y + 128), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, Pokemon.PokedexEntry.Species, New Vector2(mV.X - 248 - FontManager.MainFont.MeasureString(Pokemon.PokedexEntry.Species).X, mV.Y - 152), Color.Black)
|
|
If Pokemon.Type2.Type <> Element.Types.Blank Then
|
|
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\Types"), New Rectangle(CInt(mV.X - 450), CInt(mV.Y + 123), 96, 32), Pokemon.Type1.GetElementImage(), Color.White)
|
|
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\Types"), New Rectangle(CInt(mV.X - 350), CInt(mV.Y + 123), 96, 32), Pokemon.Type2.GetElementImage(), Color.White)
|
|
Else
|
|
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\Types"), New Rectangle(CInt(mV.X - 350), CInt(mV.Y + 123), 96, 32), Pokemon.Type1.GetElementImage(), Color.White)
|
|
End If
|
|
Else
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "??? m", New Vector2(mV.X + 250, mV.Y - 152), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "??? kg", New Vector2(mV.X + 250, mV.Y + 128), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "??? Pokémon", New Vector2(mV.X - 248 - FontManager.MainFont.MeasureString("??? Pokémon").X, mV.Y - 152), Color.Black)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "???", New Vector2(mV.X - 248 - FontManager.MainFont.MeasureString("???").X, mV.Y + 128), Color.Black)
|
|
End If
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Dim Scroll As Integer = 0
|
|
Dim Cursor As Integer = 0
|
|
|
|
Private Sub DrawPage2()
|
|
If Me.HabitatList.Count = 0 Then
|
|
Canvas.DrawGradient(New Rectangle(CInt(Core.windowSize.Width / 2) - 282, CInt(Core.windowSize.Height / 2 - 45), 80, 90), New Color(84, 198, 216), New Color(42, 167, 198, 150), True, -1)
|
|
Canvas.DrawRectangle(New Rectangle(CInt(Core.windowSize.Width / 2) - 202, CInt(Core.windowSize.Height / 2 - 45), 404, 90), New Color(42, 167, 198, 150))
|
|
Canvas.DrawGradient(New Rectangle(CInt(Core.windowSize.Width / 2) + 202, CInt(Core.windowSize.Height / 2 - 45), 80, 90), New Color(42, 167, 198, 150), New Color(84, 198, 216), True, -1)
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Area Unknown.", New Vector2(CInt(Core.windowSize.Width / 2) - CInt(FontManager.MainFont.MeasureString("Area Unknown.").X / 2), CInt(Core.windowSize.Height / 2 - 15)), Color.White)
|
|
Else
|
|
For i = Scroll To Scroll + 4
|
|
If i <= Me.HabitatList.Count - 1 Then
|
|
Dim p As Integer = i - Scroll
|
|
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(100, 160 + p * 96, 64, 64), New Rectangle(16, 16, 16, 16), Color.White)
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(100 + 64, 160 + p * 96, 64 * 9, 64), New Rectangle(32, 16, 16, 16), Color.White)
|
|
Core.SpriteBatch.Draw(Me.texture, New Rectangle(100 + 64 * 10, 160 + p * 96, 64, 64), New Rectangle(16, 16, 16, 16), Color.White, 0.0F, Vector2.Zero, SpriteEffects.FlipHorizontally, 0.0F)
|
|
|
|
Core.SpriteBatch.Draw(HabitatList(i).Texture, New Rectangle(120, 168 + p * 96, 64, 48), Color.White)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, HabitatList(i).Name, New Vector2(200, 176 + p * 96), Color.Black, 0.0F, Vector2.Zero, 1.25F, SpriteEffects.None, 0.0F)
|
|
|
|
Dim encounterTypes As New List(Of Integer)
|
|
For j = 0 To HabitatList(i).ObtainTypeList.Count - 1
|
|
If HabitatList(i).ObtainTypeList(j).PokemonID = Me.Pokemon.Number And encounterTypes.Contains(HabitatList(i).ObtainTypeList(j).EncounterType) = False Then
|
|
encounterTypes.Add(HabitatList(i).ObtainTypeList(j).EncounterType)
|
|
End If
|
|
Next
|
|
|
|
For j = 0 To encounterTypes.Count - 1
|
|
Core.SpriteBatch.Draw(PokedexScreen.Habitat.GetEncounterTypeImage(encounterTypes(j)), New Rectangle(560 + j * 40, 176 + p * 96, 32, 32), Color.White)
|
|
Next
|
|
End If
|
|
Next
|
|
|
|
DrawCursor()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub DrawCursor()
|
|
Dim cPosition As Vector2 = New Vector2(520, 160 + Me.Cursor * 96 - 42)
|
|
|
|
Dim t As Texture2D = TextureManager.GetTexture("GUI\Menus\General", New Rectangle(0, 0, 16, 16), "")
|
|
Core.SpriteBatch.Draw(t, New Rectangle(CInt(cPosition.X), CInt(cPosition.Y), 64, 64), Color.White)
|
|
End Sub
|
|
|
|
Dim scale As Single = 2.0F
|
|
|
|
Private Sub DrawPage3()
|
|
If EvolutionLine.Devolution Is Nothing And EvolutionLine.Evolutions.Count = 0 Then
|
|
Canvas.DrawGradient(New Rectangle(CInt(Core.windowSize.Width / 2) - 282, CInt(Core.windowSize.Height / 2 - 45), 80, 90), New Color(84, 198, 216), New Color(42, 167, 198, 150), True, -1)
|
|
Canvas.DrawRectangle(New Rectangle(CInt(Core.windowSize.Width / 2) - 202, CInt(Core.windowSize.Height / 2 - 45), 404, 90), New Color(42, 167, 198, 150))
|
|
Canvas.DrawGradient(New Rectangle(CInt(Core.windowSize.Width / 2) + 202, CInt(Core.windowSize.Height / 2 - 45), 80, 90), New Color(42, 167, 198, 150), New Color(84, 198, 216), True, -1)
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, Pokemon.GetName() & " doesn't evolve.", New Vector2(CInt(Core.windowSize.Width / 2) - CInt(FontManager.MainFont.MeasureString(Pokemon.GetName() & " doesn't evolve.").X / 2), CInt(Core.windowSize.Height / 2 - 15)), Color.White)
|
|
Else
|
|
Dim connections As New List(Of String)
|
|
Dim levels As New Dictionary(Of Integer, Integer)
|
|
|
|
For i = minimumLevel To maximumLevel
|
|
levels.Add(i, 1)
|
|
Next
|
|
|
|
If Not EvolutionLine.Devolution Is Nothing Then
|
|
connections.Add("-1_0|" & EvolutionLine.Devolution.PokemonID.ToString() & "-" & EvolutionLine.PokemonID.ToString())
|
|
levels(-1) += 1
|
|
|
|
For Each evolution As EvolutionLinePokemon In EvolutionLine.Devolution.Evolutions
|
|
connections.Add("-1_0|" & EvolutionLine.Devolution.PokemonID.ToString() & "-" & evolution.PokemonID.ToString())
|
|
levels(0) += 1
|
|
For Each eevolution As EvolutionLinePokemon In evolution.Evolutions
|
|
connections.Add("0_1|" & evolution.PokemonID.ToString() & "-" & eevolution.PokemonID.ToString())
|
|
levels(1) += 1
|
|
Next
|
|
Next
|
|
|
|
If Not EvolutionLine.Devolution.Devolution Is Nothing Then
|
|
connections.Add("-2_-1|" & EvolutionLine.Devolution.Devolution.PokemonID.ToString() & "-" & EvolutionLine.Devolution.PokemonID.ToString())
|
|
levels(-2) += 1
|
|
End If
|
|
End If
|
|
|
|
For Each evolution As EvolutionLinePokemon In EvolutionLine.Evolutions
|
|
connections.Add("0_1|" & EvolutionLine.PokemonID.ToString() & "-" & evolution.PokemonID.ToString())
|
|
levels(1) += 1
|
|
For Each eevolution As EvolutionLinePokemon In evolution.Evolutions
|
|
connections.Add("1_2|" & evolution.PokemonID.ToString() & "-" & eevolution.PokemonID.ToString())
|
|
levels(2) += 1
|
|
Next
|
|
Next
|
|
|
|
Dim levelDraws As New Dictionary(Of Integer, Integer)
|
|
Dim PokemonDraws As New Dictionary(Of Integer, Integer)
|
|
|
|
For i = 0 To connections.Count - 1
|
|
Dim c As String = connections(i).Split(CChar("|"))(1)
|
|
|
|
Dim mv As Vector2 = Core.GetMiddlePosition(New Size(CInt(64 * scale), CInt(64 * scale)))
|
|
|
|
Dim p1 As Integer = CInt(c.Remove(c.IndexOf("-")))
|
|
Dim level1 As Integer = CInt(connections(i).Split(CChar("|"))(0).Split(CChar("_"))(0))
|
|
Dim level1Count As Integer = levels(level1)
|
|
Dim pokemon1 As Pokemon = Pokemon.GetPokemonByID(p1)
|
|
|
|
If levelDraws.ContainsKey(level1) = False Then
|
|
levelDraws.Add(level1, 0)
|
|
End If
|
|
|
|
If PokemonDraws.ContainsKey(p1) = False Then
|
|
levelDraws(level1) += 1
|
|
PokemonDraws.Add(p1, levelDraws(level1))
|
|
End If
|
|
|
|
Dim level1Offset As Integer = CInt(GetOffset(level1Count, PokemonDraws(p1)) * (64 * scale))
|
|
|
|
Dim p2 As Integer = CInt(c.Remove(0, c.IndexOf("-") + 1))
|
|
Dim level2 As Integer = CInt(connections(i).Split(CChar("|"))(0).Split(CChar("_"))(1))
|
|
Dim level2Count As Integer = levels(level2)
|
|
Dim pokemon2 As Pokemon = Pokemon.GetPokemonByID(p2)
|
|
|
|
If levelDraws.ContainsKey(level2) = False Then
|
|
levelDraws.Add(level2, 0)
|
|
End If
|
|
|
|
If PokemonDraws.ContainsKey(p2) = False Then
|
|
levelDraws(level2) += 1
|
|
PokemonDraws.Add(p2, levelDraws(level2))
|
|
End If
|
|
|
|
Dim level2Offset As Integer = CInt(GetOffset(level2Count, PokemonDraws(p2)) * (64 * scale))
|
|
|
|
Canvas.DrawLine(Color.Black, New Vector2(mv.X + (level1 * (128 * scale)) + (scale * 32), mv.Y + (scale * 32) + level1Offset), New Vector2(mv.X + (level2 * (128 * scale)) + (scale * 32), mv.Y + (scale * 32) + level2Offset), 2)
|
|
|
|
If Pokedex.GetEntryType(Core.Player.PokedexData, pokemon1.Number) = 0 Then
|
|
Dim pokeTexture = pokemon1.GetMenuTexture()
|
|
Core.SpriteBatch.Draw(pokeTexture, New Rectangle(CInt(mv.X + (level1 * (128 * scale))) - CInt((pokeTexture.Width - 32) * scale), CInt(mv.Y + level1Offset), CInt(pokeTexture.Width * 2 * scale), CInt(64 * scale)), Color.Black)
|
|
Else
|
|
Dim pokeTexture = pokemon1.GetMenuTexture()
|
|
Core.SpriteBatch.Draw(pokeTexture, New Rectangle(CInt(mv.X + (level1 * (128 * scale))) - CInt((pokeTexture.Width - 32) * scale), CInt(mv.Y + level1Offset), CInt(pokeTexture.Width * 2 * scale), CInt(64 * scale)), Color.White)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, pokemon1.GetName(), New Vector2(CInt(mv.X + (level1 * (128 * scale))) + (32 * scale) - (FontManager.MainFont.MeasureString(pokemon1.GetName()).X / 2 * CSng(scale / 2)), CInt(mv.Y + level1Offset) + (58 * scale)), Color.Black, 0.0F, Vector2.Zero, CSng(scale / 2), SpriteEffects.None, 0.0F)
|
|
End If
|
|
If Pokedex.GetEntryType(Core.Player.PokedexData, pokemon2.Number) = 0 Then
|
|
Dim pokeTexture = pokemon2.GetMenuTexture()
|
|
Core.SpriteBatch.Draw(pokeTexture, New Rectangle(CInt(mv.X + (level2 * (128 * scale))) - CInt((pokeTexture.Width - 32) * scale), CInt(mv.Y + level2Offset), CInt(pokeTexture.Width * 2 * scale), CInt(64 * scale)), Color.Black)
|
|
Else
|
|
Dim pokeTexture = pokemon2.GetMenuTexture()
|
|
Core.SpriteBatch.Draw(pokeTexture, New Rectangle(CInt(mv.X + (level2 * (128 * scale))) - CInt((pokeTexture.Width - 32) * scale), CInt(mv.Y + level2Offset), CInt(pokeTexture.Width * 2 * scale), CInt(64 * scale)), Color.White)
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, pokemon2.GetName(), New Vector2(CInt(mv.X + (level2 * (128 * scale))) + (32 * scale) - (FontManager.MainFont.MeasureString(pokemon2.GetName()).X / 2 * CSng(scale / 2)), CInt(mv.Y + level2Offset) + (58 * scale)), Color.Black, 0.0F, Vector2.Zero, CSng(scale / 2), SpriteEffects.None, 0.0F)
|
|
End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Private Function GetOffset(ByVal count As Integer, ByVal c As Integer) As Double
|
|
If count = 0 Then
|
|
Return 0
|
|
End If
|
|
If count Mod 2 = 1 Then
|
|
' count = 7, c = 7
|
|
Dim middle As Integer = CInt(Math.Ceiling(count / 2))
|
|
' middle = 4
|
|
Dim stat As Integer = c - middle
|
|
' stat = 3
|
|
Return stat
|
|
Else
|
|
' count = 4, c = 1
|
|
Dim middle As Double = count / 2
|
|
' middle = 2
|
|
Dim stat As Double = c - middle - 0.5D
|
|
' stat = -1.5
|
|
Return stat
|
|
End If
|
|
End Function
|
|
|
|
Public Overrides Sub Update()
|
|
If Controls.Dismiss(True, True, True) = True Then
|
|
If Me._transitionOut = True Then
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(New TransitionScreen(Me, Me.PreScreen, Color.White, False))
|
|
Else
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(Me.PreScreen)
|
|
End If
|
|
End If
|
|
|
|
UpdateIntro()
|
|
|
|
If mLineLength = 100 Then
|
|
If Controls.Right(True, True, False, True, True, True) = True Then
|
|
Me.Page += 1
|
|
End If
|
|
If Controls.Left(True, True, False, True, True, True) = True Then
|
|
Me.Page -= 1
|
|
End If
|
|
|
|
If Controls.Accept(True, False, False) = True Then
|
|
If Me.Page = 0 Or Me.Page = 1 Then
|
|
If New Rectangle(Core.windowSize.Width - 70, CInt(Core.windowSize.Height / 2 - 32), 64, 64).Contains(MouseHandler.MousePosition) = True Then
|
|
SoundManager.PlaySound("select")
|
|
Me.Page += 1
|
|
End If
|
|
End If
|
|
If Me.Page = 1 Or Me.Page = 2 Then
|
|
SoundManager.PlaySound("select")
|
|
If New Rectangle(6, CInt(Core.windowSize.Height / 2 - 32), 64, 64).Contains(MouseHandler.MousePosition) = True Then
|
|
Me.Page -= 1
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
Me.Page = Me.Page.Clamp(0, 2)
|
|
|
|
Select Case Me.Page
|
|
Case 0
|
|
UpdatePage1()
|
|
Case 1
|
|
UpdatePage2()
|
|
Case 2
|
|
UpdatePage3()
|
|
End Select
|
|
End If
|
|
|
|
PokedexScreen.TileOffset += 1
|
|
If PokedexScreen.TileOffset >= 64 Then
|
|
PokedexScreen.TileOffset = 0
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub UpdateIntro()
|
|
If fadeMainImage < 255 Then
|
|
fadeMainImage += 10
|
|
If fadeMainImage >= 255 Then
|
|
fadeMainImage = 255
|
|
If playedCry = False Then
|
|
playedCry = True
|
|
SoundManager.PlayPokemonCry(Pokemon.Number)
|
|
End If
|
|
End If
|
|
Else
|
|
If vLineLength < 140 Then
|
|
vLineLength += 10
|
|
If vLineLength >= 140 Then
|
|
vLineLength = 140
|
|
End If
|
|
Else
|
|
If mLineLength < 100 Then
|
|
mLineLength += 10
|
|
If mLineLength >= 100 Then
|
|
mLineLength = 100
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub UpdatePage1()
|
|
If Controls.Accept(True, True, True) = True Then
|
|
SoundManager.PlaySound("select")
|
|
Me.FrontView = Not Me.FrontView
|
|
Me.GetYOffset()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub UpdatePage2()
|
|
If Me.HabitatList.Count > 0 Then
|
|
If Controls.Down(True, True, True, True, True, True) = True Then
|
|
Me.Cursor += 1
|
|
End If
|
|
If Controls.Up(True, True, True, True, True, True) = True Then
|
|
Me.Cursor -= 1
|
|
End If
|
|
|
|
If Me.Cursor > 4 Then
|
|
Me.Cursor = 4
|
|
Me.Scroll += 1
|
|
End If
|
|
If Me.Cursor < 0 Then
|
|
Me.Cursor = 0
|
|
Me.Scroll -= 1
|
|
End If
|
|
|
|
If Me.HabitatList.Count < 6 Then
|
|
Me.Scroll = 0
|
|
Else
|
|
Me.Scroll = Me.Scroll.Clamp(0, Me.HabitatList.Count - 5)
|
|
End If
|
|
|
|
If Me.HabitatList.Count < 5 Then
|
|
Me.Cursor = Me.Cursor.Clamp(0, Me.HabitatList.Count - 1)
|
|
Else
|
|
Me.Cursor = Me.Cursor.Clamp(0, 4)
|
|
End If
|
|
|
|
If Controls.Accept(True, False, False) = True Then
|
|
For i = Scroll To Scroll + 4
|
|
If i <= Me.HabitatList.Count - 1 Then
|
|
If New Rectangle(100, 160 + (i - Scroll) * 96, 640, 64).Contains(MouseHandler.MousePosition) = True Then
|
|
If i = Cursor + Scroll Then
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(New PokedexScreen(Me, Nothing, Me.HabitatList(Cursor + Scroll)))
|
|
Else
|
|
Cursor = i - Scroll
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
If Controls.Accept(False, True, True) = True Then
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(New PokedexScreen(Me, Nothing, Me.HabitatList(Cursor + Scroll)))
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub UpdatePage3()
|
|
If Controls.Up(True, False, True, False, False, False) = True Or KeyBoardHandler.KeyPressed(Keys.OemPlus) = True Then
|
|
Me.scale += 0.5F
|
|
End If
|
|
If Controls.Down(True, False, True, False, False, False) = True Or KeyBoardHandler.KeyPressed(Keys.OemMinus) = True Then
|
|
Me.scale -= 0.5F
|
|
End If
|
|
|
|
Me.scale = Me.scale.Clamp(0.5F, 4.0F)
|
|
End Sub
|
|
|
|
End Class |