140 lines
6.3 KiB
VB.net
140 lines
6.3 KiB
VB.net
Public Class MenuScreen
|
|
|
|
Inherits Screen
|
|
|
|
Dim Options() As String
|
|
Dim index As Integer = 0
|
|
Dim drawRight As Boolean = False
|
|
Dim nextAction As String = ""
|
|
Dim offsetX As Integer = 175
|
|
|
|
Public Sub New(ByVal currentScreen As Screen)
|
|
Me.Identification = Identifications.MenuScreen
|
|
Me.PreScreen = currentScreen
|
|
|
|
Dim newOptions As New List(Of String)
|
|
If Core.Player.hasPokedex = True Then
|
|
newOptions.Add(Localization.GetString("game_menu_pokedex"))
|
|
End If
|
|
|
|
If Screen.Level.IsBugCatchingContest = True Then
|
|
newOptions.AddRange({Screen.Level.BugCatchingContestData.GetSplit(2) & " x" & Core.Player.Inventory.GetItemAmount(177), Localization.GetString("game_menu_bag"), Localization.GetString("game_menu_trainer_card"), Localization.GetString("End Contest")})
|
|
Else
|
|
If Core.Player.Pokemons.Count > 0 Then
|
|
newOptions.Add(Localization.GetString("game_menu_party"))
|
|
End If
|
|
newOptions.AddRange({Localization.GetString("game_menu_bag"), Localization.GetString("game_menu_trainer_card"), Localization.GetString("game_menu_save")})
|
|
End If
|
|
|
|
newOptions.AddRange({Localization.GetString("game_menu_options"), Localization.GetString("game_menu_exit")})
|
|
Options = newOptions.ToArray()
|
|
|
|
Me.index = Player.Temp.MenuIndex
|
|
End Sub
|
|
|
|
Public Overrides Sub Draw()
|
|
PreScreen.Draw()
|
|
|
|
If Me.IsCurrentScreen() = True Then
|
|
If Core.Player.IsGamejoltSave = True Then
|
|
GameJolt.Emblem.Draw(GameJolt.API.username, Core.GameJoltSave.GameJoltID, Core.GameJoltSave.Points, Core.GameJoltSave.Gender, Core.GameJoltSave.Emblem, New Vector2(CSng(Core.windowSize.Width / 2 - 256), 30), 4, Core.GameJoltSave.DownloadedSprite)
|
|
End If
|
|
End If
|
|
|
|
With Core.SpriteBatch
|
|
Dim T As Texture2D = TextureManager.GetTexture("GUI\Overworld\ChooseBox")
|
|
Dim Position As Vector2 = New Vector2(CInt(Core.windowSize.Width / 2) - 48 + offsetX, Core.windowSize.Height - 160.0F - 96.0F - (Options.Count - 1) * 48)
|
|
.Draw(T, New Rectangle(CInt(Position.X) + offsetX, CInt(Position.Y), 288, 48), New Rectangle(0, 0, 96, 16), Color.White)
|
|
For i = 0 To Options.Count - 2
|
|
.Draw(T, New Rectangle(CInt(Position.X) + offsetX, CInt(Position.Y) + 48 + i * 48, 288, 48), New Rectangle(0, 16, 96, 16), Color.White)
|
|
Next
|
|
.Draw(T, New Rectangle(CInt(Position.X + offsetX), CInt(Position.Y) + 96 + (Options.Count - 2) * 48, 288, 48), New Rectangle(0, 32, 96, 16), Color.White)
|
|
For i = 0 To Options.Count - 1
|
|
.DrawString(FontManager.InGameFont, Options(i), New Vector2(CInt(Position.X + 40) + offsetX, CInt(Position.Y) + 32 + i * 48), Color.Black)
|
|
Next
|
|
.Draw(T, New Rectangle(CInt(Position.X + 20) + offsetX, CInt(Position.Y) + 36 + index * 48, 10, 20), New Rectangle(96, 0, 3, 6), Color.White)
|
|
End With
|
|
|
|
TextBox.Draw()
|
|
End Sub
|
|
|
|
Public Overrides Sub Update()
|
|
TextBox.Update()
|
|
If TextBox.Showing = False Then
|
|
If drawRight = True Then
|
|
If offsetX < 175 Then
|
|
offsetX += 5
|
|
Else
|
|
drawRight = False
|
|
Select Case nextAction
|
|
Case Localization.GetString("game_menu_pokedex")
|
|
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New PokedexSelectScreen(Me), Color.White, False))
|
|
Case Localization.GetString("game_menu_party")
|
|
Core.SetScreen(New PartyScreen(Me))
|
|
Case Localization.GetString("game_menu_bag")
|
|
Core.SetScreen(New NewInventoryScreen(Me))
|
|
Case Localization.GetString("game_menu_trainer_card")
|
|
Core.SetScreen(New NewTrainerScreen(Me))
|
|
Case "Pokégear"
|
|
Core.SetScreen(New GameJolt.PokegearScreen(Me, GameJolt.PokegearScreen.EntryModes.MainMenu, {}))
|
|
Case Localization.GetString("game_menu_save")
|
|
Core.SetScreen(New SaveScreen(Me))
|
|
Case Localization.GetString("game_menu_options")
|
|
Core.SetScreen(New OptionScreen(Me))
|
|
Case Localization.GetString("game_menu_exit")
|
|
Core.SetScreen(Me.PreScreen)
|
|
Case Screen.Level.BugCatchingContestData.GetSplit(2) & " x" & Core.Player.Inventory.GetItemAmount(177)
|
|
ShowBalls()
|
|
Case "End Contest"
|
|
EndContest()
|
|
End Select
|
|
End If
|
|
Else
|
|
drawRight = False
|
|
|
|
If offsetX > 0 Then
|
|
offsetX -= 5
|
|
Else
|
|
If Controls.Down(True, True) = True Then
|
|
Me.index += 1
|
|
End If
|
|
If Controls.Up(True, True) = True Then
|
|
Me.index -= 1
|
|
End If
|
|
|
|
If Me.index < 0 Then
|
|
Me.index = Me.Options.Count - 1
|
|
End If
|
|
If Me.index = Me.Options.Count Then
|
|
Me.index = 0
|
|
End If
|
|
|
|
If Controls.Dismiss() = True Then
|
|
nextAction = Localization.GetString("game_menu_exit")
|
|
drawRight = True
|
|
End If
|
|
|
|
If Controls.Accept() = True Then
|
|
drawRight = True
|
|
nextAction = Options(index)
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
Player.Temp.MenuIndex = Me.index
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ShowBalls()
|
|
Dim s As Screen = Me.PreScreen
|
|
CType(s, OverworldScreen).ActionScript.StartScript(Screen.Level.BugCatchingContestData.GetSplit(1), 0)
|
|
Core.SetScreen(s)
|
|
End Sub
|
|
|
|
Private Sub EndContest()
|
|
Dim s As Screen = Me.PreScreen
|
|
CType(s, OverworldScreen).ActionScript.StartScript(Screen.Level.BugCatchingContestData.GetSplit(0), 0)
|
|
Core.SetScreen(s)
|
|
End Sub
|
|
|
|
End Class |