783 lines
27 KiB
VB.net
783 lines
27 KiB
VB.net
Public Class OptionScreen
|
|
|
|
Inherits Screen
|
|
|
|
Dim TextSpeed As Integer = 2
|
|
Dim MouseSpeed As Integer = 12
|
|
Dim FOV As Single = 45.0F
|
|
Dim C As OverworldCamera
|
|
Dim Music As Integer = 50
|
|
Dim Sound As Integer = 50
|
|
Dim RenderDistance As Integer = 0
|
|
Dim GraphicStyle As Integer = 1
|
|
Dim ShowBattleAnimations As Integer = 0
|
|
Dim DiagonalMovement As Boolean = True
|
|
Dim Difficulty As Integer = 0
|
|
Dim BattleStyle As Integer = 0
|
|
Dim LoadOffsetMaps As Integer = 10
|
|
Dim ViewBobbing As Boolean = True
|
|
Dim ShowModels As Integer = 1
|
|
Dim Muted As Integer = 0
|
|
Dim GamePadEnabled As Boolean = True
|
|
Dim PreferMultiSampling As Boolean = True
|
|
|
|
Dim savedOptions As Boolean = True
|
|
|
|
Dim ScreenIndex As Integer = 0
|
|
Dim ControlList As New List(Of Control)
|
|
|
|
Shared YScroll As Integer = 0
|
|
Dim CanYScroll As Boolean = False
|
|
Dim YScrollLimit As Integer = 0
|
|
|
|
Dim CurrentPath As String = "Options"
|
|
|
|
Public Sub New(ByVal currentScreen As Screen)
|
|
Me.Identification = Identifications.OptionScreen
|
|
Me.PreScreen = currentScreen
|
|
Me.CanChat = False
|
|
Me.MouseVisible = True
|
|
Me.CanBePaused = False
|
|
|
|
Me.C = CType(Screen.Camera, OverworldCamera)
|
|
Me.FOV = C.FOV
|
|
Me.TextSpeed = TextBox.TextSpeed
|
|
Me.MouseSpeed = CInt(C.RotationSpeed * 10000)
|
|
Me.Music = CInt(MusicManager.MasterVolume * 100)
|
|
Me.Sound = CInt(SoundManager.Volume * 100)
|
|
Me.RenderDistance = Core.GameOptions.RenderDistance
|
|
Me.GraphicStyle = Core.GameOptions.GraphicStyle
|
|
Me.ShowBattleAnimations = Core.Player.ShowBattleAnimations
|
|
Me.DiagonalMovement = Core.Player.DiagonalMovement
|
|
Me.Difficulty = Core.Player.DifficultyMode
|
|
Me.BattleStyle = Core.Player.BattleStyle
|
|
Me.ShowModels = CInt(Core.Player.ShowModelsInBattle)
|
|
Me.Muted = CInt(MediaPlayer.IsMuted.ToNumberString())
|
|
If Core.GameOptions.LoadOffsetMaps = 0 Then
|
|
Me.LoadOffsetMaps = 0
|
|
Else
|
|
Me.LoadOffsetMaps = 101 - Core.GameOptions.LoadOffsetMaps
|
|
End If
|
|
Me.ViewBobbing = Core.GameOptions.ViewBobbing
|
|
Me.GamePadEnabled = Core.GameOptions.GamePadEnabled
|
|
Me.PreferMultiSampling = Core.GraphicsManager.PreferMultiSampling
|
|
|
|
InitializeControls()
|
|
End Sub
|
|
|
|
Public Overrides Sub Draw()
|
|
Me.PreScreen.Draw()
|
|
|
|
Canvas.DrawImageBorder(TextureManager.GetTexture(TextureManager.GetTexture("GUI\Menus\Menu"), New Rectangle(0, 0, 48, 48)), 2, New Rectangle(60, 100, 800, 480))
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.InGameFont, Me.CurrentPath, New Vector2(80, 130), Color.Black)
|
|
If savedOptions = False Then
|
|
Core.SpriteBatch.DrawString(FontManager.MiniFont, Localization.GetString("option_screen_warning"), New Vector2(90 + FontManager.InGameFont.MeasureString(Localization.GetString("option_screen_title")).X, 138), Color.DarkRed)
|
|
End If
|
|
|
|
For Each C As Control In ControlList
|
|
C.Draw()
|
|
Next
|
|
End Sub
|
|
|
|
Public Overrides Sub Update()
|
|
If CanYScroll = True Then
|
|
If Controls.Down(True, False, True, False, False) = True Then
|
|
YScroll += 1
|
|
End If
|
|
If Controls.Up(True, False, True, False, False) = True Then
|
|
YScroll -= 1
|
|
End If
|
|
|
|
YScroll = YScroll.Clamp(0, YScrollLimit)
|
|
Else
|
|
YScroll = 0
|
|
End If
|
|
|
|
For i = 0 To ControlList.Count
|
|
If i <= ControlList.Count - 1 Then
|
|
ControlList(i).Update()
|
|
End If
|
|
Next
|
|
|
|
If net.Pokemon3D.Game.Controls.Dismiss(True, True, True) = True Then
|
|
Close()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub InitializeControls()
|
|
Me.ControlList.Clear()
|
|
YScroll = 0
|
|
|
|
Select Case Me.ScreenIndex
|
|
Case 0 ' Main Options menu.
|
|
Me.ControlList.Add(New CommandButton(New Vector2(100, 200), 6, "Game", AddressOf SwitchToGame))
|
|
Me.ControlList.Add(New CommandButton(New Vector2(340, 200), 6, "Graphics", AddressOf SwitchToGraphics))
|
|
Me.ControlList.Add(New CommandButton(New Vector2(580, 200), 6, "Battle", AddressOf SwitchToBattle))
|
|
Me.ControlList.Add(New CommandButton(New Vector2(220, 320), 6, "Controls", AddressOf SwitchToControls))
|
|
Me.ControlList.Add(New CommandButton(New Vector2(460, 320), 6, "Volume", AddressOf SwitchToVolume))
|
|
|
|
Me.ControlList.Add(New CommandButton(New Vector2(120, 480), 6, "Apply", AddressOf Apply))
|
|
Me.ControlList.Add(New CommandButton(New Vector2(630, 480), 6, "Close", AddressOf Close))
|
|
Case 1 ' "Game" from the Options menu.
|
|
Me.ControlList.Add(New ScrollBar(New Vector2(100, 200), 400, "Text Speed", Me.TextSpeed, 1, 3, AddressOf ChangeTextspeed))
|
|
|
|
If CBool(GameModeManager.GetGameRuleValue("LockDifficulty", "0")) = False Then
|
|
Dim d As New Dictionary(Of Integer, String)
|
|
d.Add(0, "Easy")
|
|
d.Add(1, "Hard")
|
|
d.Add(2, "Super Hard")
|
|
|
|
Me.ControlList.Add(New ScrollBar(New Vector2(100, 250), 400, "Difficulty", Me.Difficulty, 0, 2, AddressOf ChangeDifficulty, d))
|
|
End If
|
|
|
|
Me.ControlList.Add(New ToggleButton(New Vector2(100, 300), 8, "View Bobbing", Me.ViewBobbing, AddressOf ToggleBobbing, {"Off", "On"}.ToList()))
|
|
|
|
Me.ControlList.Add(New CommandButton(New Vector2(364, 480), 6, "Back", AddressOf SwitchToMain))
|
|
Case 2 ' "Graphics" from the Options menu.
|
|
Me.ControlList.Add(New ScrollBar(New Vector2(100, 200), 400, "Field of View", CInt(Me.FOV), 45, 120, AddressOf ChangeFOV))
|
|
|
|
Dim d As New Dictionary(Of Integer, String)
|
|
d.Add(0, "Tiny")
|
|
d.Add(1, "Small")
|
|
d.Add(2, "Normal")
|
|
d.Add(3, "Far")
|
|
d.Add(4, "Extreme")
|
|
Me.ControlList.Add(New ScrollBar(New Vector2(100, 250), 400, "Render Distance", Me.RenderDistance, 0, 4, AddressOf ChangeRenderDistance, d))
|
|
|
|
Dim d1 As New Dictionary(Of Integer, String)
|
|
d1.Add(0, "Off")
|
|
Me.ControlList.Add(New ScrollBar(New Vector2(100, 300), 400, "Offset Map Quality", Me.LoadOffsetMaps, 0, 100, AddressOf ChangeOffsetMaps, d1))
|
|
|
|
Me.ControlList.Add(New ToggleButton(New Vector2(100, 350), 8, "Graphics", CBool(Me.GraphicStyle), AddressOf ToggleGraphicsStyle, {"Fast", "Fancy"}.ToList()))
|
|
Me.ControlList.Add(New ToggleButton(New Vector2(400, 350), 8, "Multi Sampling", Me.PreferMultiSampling, AddressOf ToggleMultiSampling, {"Off", "On"}.ToList()))
|
|
|
|
Me.ControlList.Add(New CommandButton(New Vector2(364, 480), 6, "Back", AddressOf SwitchToMain))
|
|
Case 3 ' "Battle" from the Options menu.
|
|
Me.ControlList.Add(New ToggleButton(New Vector2(100, 200), 8, "3D Models", CBool(ShowModels), AddressOf ToggleShowModels, {"Off", "On"}.ToList()))
|
|
Me.ControlList.Add(New ToggleButton(New Vector2(400, 200), 8, "Animations", CBool(Me.ShowBattleAnimations), AddressOf ToggleAnimations, {"Off", "On"}.ToList()))
|
|
Me.ControlList.Add(New ToggleButton(New Vector2(100, 320), 8, "Battle Style", CBool(Me.BattleStyle), AddressOf ToggleBattleStyle, {"Shift", "Set"}.ToList()))
|
|
|
|
Me.ControlList.Add(New CommandButton(New Vector2(364, 480), 6, "Back", AddressOf SwitchToMain))
|
|
Case 4 ' "Controls" from the Options menu.
|
|
Dim d As New Dictionary(Of Integer, String)
|
|
d.Add(1, "...Slow...")
|
|
d.Add(12, "Standard")
|
|
d.Add(38, "Super fast!")
|
|
d.Add(50, "SPEED OF LIGHT!")
|
|
Me.ControlList.Add(New ScrollBar(New Vector2(100, 200), 400, "Mouse Speed", Me.MouseSpeed, 1, 50, AddressOf ChangeMouseSpeed, d))
|
|
Me.ControlList.Add(New CommandButton(New Vector2(100, 250), 9, "Reset Key Bindings", AddressOf ResetKeyBindings))
|
|
Me.ControlList.Add(New ToggleButton(New Vector2(100, 370), 12, "Xbox 360 Gamepad", Me.GamePadEnabled, AddressOf ToggleXBOX360Controller, {"Disabled", "Enabled"}.ToList()))
|
|
|
|
Me.ControlList.Add(New CommandButton(New Vector2(364, 480), 6, "Back", AddressOf SwitchToMain))
|
|
Case 5 ' "Volume" from the Options menu.
|
|
Me.ControlList.Add(New ScrollBar(New Vector2(100, 200), 400, "Music Volume", Me.Music, 0, 100, AddressOf ChangeMusicVolume))
|
|
Me.ControlList.Add(New ScrollBar(New Vector2(100, 250), 400, "Sound Volume", Me.Sound, 0, 100, AddressOf ChangeSoundVolume))
|
|
Me.ControlList.Add(New ToggleButton(New Vector2(100, 300), 8, "Muted", CBool(Me.Muted), AddressOf ToggleMute, {"No", "Yes"}.ToList()))
|
|
|
|
Me.ControlList.Add(New CommandButton(New Vector2(364, 480), 6, "Back", AddressOf SwitchToMain))
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub Apply()
|
|
Save()
|
|
Close()
|
|
End Sub
|
|
|
|
Private Sub Close()
|
|
YScroll = 0
|
|
Core.SetScreen(Me.PreScreen)
|
|
End Sub
|
|
|
|
Private Sub Reset()
|
|
Me.FOV = 45.0F
|
|
Me.TextSpeed = 2
|
|
Me.MouseSpeed = 12
|
|
Me.Music = 50
|
|
Me.Sound = 50
|
|
Me.RenderDistance = 2
|
|
Me.GraphicStyle = 1
|
|
Me.ShowBattleAnimations = 2
|
|
Me.DiagonalMovement = False
|
|
Me.Difficulty = 0
|
|
Me.BattleStyle = 0
|
|
Me.LoadOffsetMaps = 10
|
|
Me.ViewBobbing = True
|
|
Me.ShowModels = 1
|
|
Me.Muted = 0
|
|
Me.GamePadEnabled = True
|
|
Me.PreferMultiSampling = True
|
|
End Sub
|
|
|
|
Private Sub Save()
|
|
C.CreateNewProjection(Me.FOV)
|
|
TextBox.TextSpeed = Me.TextSpeed
|
|
C.RotationSpeed = CSng(Me.MouseSpeed / 10000)
|
|
MusicManager.MasterVolume = CSng(Me.Music / 100)
|
|
SoundManager.Volume = CSng(Me.Sound / 100)
|
|
MusicManager.Mute(CBool(Me.Muted))
|
|
SoundManager.Mute(CBool(Me.Muted))
|
|
Core.GameOptions.RenderDistance = Me.RenderDistance
|
|
Core.GameOptions.GraphicStyle = Me.GraphicStyle
|
|
Screen.Level.World.Initialize(Screen.Level.EnvironmentType, Screen.Level.WeatherType)
|
|
Core.Player.ShowBattleAnimations = Me.ShowBattleAnimations
|
|
Core.Player.DiagonalMovement = Me.DiagonalMovement
|
|
Core.Player.DifficultyMode = Me.Difficulty
|
|
Core.Player.BattleStyle = Me.BattleStyle
|
|
Core.Player.ShowModelsInBattle = CBool(Me.ShowModels)
|
|
Core.GameOptions.GamePadEnabled = Me.GamePadEnabled
|
|
Core.GraphicsManager.PreferMultiSampling = Me.PreferMultiSampling
|
|
If LoadOffsetMaps = 0 Then
|
|
Core.GameOptions.LoadOffsetMaps = Me.LoadOffsetMaps
|
|
Else
|
|
Core.GameOptions.LoadOffsetMaps = 101 - Me.LoadOffsetMaps
|
|
End If
|
|
Core.GameOptions.ViewBobbing = Me.ViewBobbing
|
|
Core.GameOptions.SaveOptions()
|
|
|
|
SoundManager.PlaySound("save")
|
|
|
|
Me.PreScreen.Update()
|
|
End Sub
|
|
|
|
Public Overrides Sub ToggledMute()
|
|
If Me.ScreenIndex = 5 Then
|
|
Me.Muted = CInt(MediaPlayer.IsMuted)
|
|
InitializeControls()
|
|
End If
|
|
End Sub
|
|
|
|
#Region "ControlCommands"
|
|
|
|
#Region "Switch"
|
|
|
|
Private Sub SwitchToMain()
|
|
CurrentPath = "Options"
|
|
Me.ScreenIndex = 0
|
|
CanYScroll = False
|
|
YScrollLimit = 0
|
|
InitializeControls()
|
|
End Sub
|
|
|
|
Private Sub SwitchToGame()
|
|
CurrentPath = "Options > Game"
|
|
Me.ScreenIndex = 1
|
|
CanYScroll = False
|
|
YScrollLimit = 0
|
|
InitializeControls()
|
|
End Sub
|
|
|
|
Private Sub SwitchToGraphics()
|
|
CurrentPath = "Options > Graphics"
|
|
Me.ScreenIndex = 2
|
|
CanYScroll = False
|
|
YScrollLimit = 0
|
|
InitializeControls()
|
|
End Sub
|
|
|
|
Private Sub SwitchToBattle()
|
|
CurrentPath = "Options > Battle"
|
|
Me.ScreenIndex = 3
|
|
CanYScroll = False
|
|
YScrollLimit = 0
|
|
InitializeControls()
|
|
End Sub
|
|
|
|
Private Sub SwitchToControls()
|
|
CurrentPath = "Options > Controls"
|
|
Me.ScreenIndex = 4
|
|
CanYScroll = False
|
|
YScrollLimit = 0
|
|
InitializeControls()
|
|
End Sub
|
|
|
|
Private Sub SwitchToVolume()
|
|
CurrentPath = "Options > Volume"
|
|
Me.ScreenIndex = 5
|
|
CanYScroll = False
|
|
YScrollLimit = 0
|
|
InitializeControls()
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "SettingsGraphics"
|
|
|
|
Private Sub ChangeFOV(ByVal c As ScrollBar)
|
|
Me.FOV = c.Value
|
|
End Sub
|
|
|
|
Private Sub ChangeRenderDistance(ByVal c As ScrollBar)
|
|
Me.RenderDistance = c.Value
|
|
End Sub
|
|
|
|
Private Sub ToggleGraphicsStyle(ByVal c As ToggleButton)
|
|
If c.Toggled = True Then
|
|
Me.GraphicStyle = 1
|
|
Else
|
|
Me.GraphicStyle = 0
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ChangeOffsetMaps(ByVal c As ScrollBar)
|
|
Me.LoadOffsetMaps = c.Value
|
|
End Sub
|
|
|
|
Private Sub ToggleMultiSampling(ByVal c As ToggleButton)
|
|
Me.PreferMultiSampling = Not Me.PreferMultiSampling
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "SettingsGame"
|
|
|
|
Private Sub ToggleBobbing(ByVal c As ToggleButton)
|
|
Me.ViewBobbing = Not Me.ViewBobbing
|
|
End Sub
|
|
|
|
Private Sub ChangeTextspeed(ByVal c As ScrollBar)
|
|
Me.TextSpeed = c.Value
|
|
End Sub
|
|
|
|
Private Sub ChangeDifficulty(ByVal c As ScrollBar)
|
|
Me.Difficulty = c.Value
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "SettingsBattle"
|
|
|
|
Private Sub ToggleShowModels(ByVal c As ToggleButton)
|
|
If Me.ShowModels = 0 Then
|
|
Me.ShowModels = 1
|
|
Else
|
|
Me.ShowModels = 0
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ToggleAnimations(ByVal c As ToggleButton)
|
|
If Me.ShowBattleAnimations = 0 Then
|
|
Me.ShowBattleAnimations = 1
|
|
Else
|
|
Me.ShowBattleAnimations = 0
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ToggleBattleStyle(ByVal c As ToggleButton)
|
|
If Me.BattleStyle = 0 Then
|
|
Me.BattleStyle = 1
|
|
Else
|
|
Me.BattleStyle = 0
|
|
End If
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "SettingsControls"
|
|
|
|
Private Sub ToggleXBOX360Controller(ByVal c As ToggleButton)
|
|
Me.GamePadEnabled = Not Me.GamePadEnabled
|
|
End Sub
|
|
|
|
Private Sub ChangeMouseSpeed(ByVal c As ScrollBar)
|
|
Me.MouseSpeed = c.Value
|
|
End Sub
|
|
|
|
Private Sub ResetKeyBindings(ByVal c As CommandButton)
|
|
KeyBindings.CreateKeySave(True)
|
|
KeyBindings.LoadKeys()
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "SettingsVolume"
|
|
|
|
Private Sub ChangeMusicVolume(ByVal c As ScrollBar)
|
|
Me.Music = c.Value
|
|
ApplyMusicChange()
|
|
End Sub
|
|
|
|
Private Sub ChangeSoundVolume(ByVal c As ScrollBar)
|
|
Me.Sound = c.Value
|
|
ApplyMusicChange()
|
|
End Sub
|
|
|
|
Private Sub ToggleMute(ByVal c As ToggleButton)
|
|
If Me.Muted = 0 Then
|
|
Me.Muted = 1
|
|
Else
|
|
Me.Muted = 0
|
|
End If
|
|
ApplyMusicChange()
|
|
End Sub
|
|
|
|
Private Sub ApplyMusicChange()
|
|
MusicManager.Mute(CBool(Me.Muted))
|
|
SoundManager.Mute(CBool(Me.Muted))
|
|
MusicManager.MasterVolume = CSng(Me.Music / 100)
|
|
SoundManager.Volume = CSng(Me.Sound / 100)
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#End Region
|
|
|
|
#Region "Controls"
|
|
|
|
MustInherit Class Control
|
|
|
|
Public MustOverride Sub Draw()
|
|
Public MustOverride Sub Update()
|
|
|
|
End Class
|
|
|
|
Class ToggleButton
|
|
|
|
Inherits Control
|
|
|
|
Private _position As Vector2 = New Vector2(0)
|
|
Private _size As Integer = 1
|
|
Private _text As String = ""
|
|
Private _toggled As Boolean = False
|
|
|
|
Public Property Position As Vector2
|
|
Get
|
|
Return _position
|
|
End Get
|
|
Set(value As Vector2)
|
|
Me._position = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Size As Integer
|
|
Get
|
|
Return Me._size
|
|
End Get
|
|
Set(value As Integer)
|
|
Me._size = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Text As String
|
|
Get
|
|
Return Me._text
|
|
End Get
|
|
Set(value As String)
|
|
Me._text = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Toggled As Boolean
|
|
Get
|
|
Return Me._toggled
|
|
End Get
|
|
Set(value As Boolean)
|
|
Me._toggled = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Delegate Sub OnToggle(ByVal T As ToggleButton)
|
|
Public OnToggleTrigger As OnToggle
|
|
|
|
Public Settings As New List(Of String)
|
|
|
|
Public Sub New(ByVal TriggerSub As OnToggle)
|
|
Me.OnToggleTrigger = TriggerSub
|
|
End Sub
|
|
|
|
Public Sub New(ByVal Position As Vector2, ByVal Size As Integer, ByVal Text As String, ByVal Toggled As Boolean, ByVal TriggerSub As OnToggle)
|
|
Me.New(Position, Size, Text, Toggled, TriggerSub, New List(Of String))
|
|
End Sub
|
|
|
|
Public Sub New(ByVal Position As Vector2, ByVal Size As Integer, ByVal Text As String, ByVal Toggled As Boolean, ByVal TriggerSub As OnToggle, ByVal Settings As List(Of String))
|
|
Me._position = Position
|
|
Me._size = Size
|
|
Me._text = Text
|
|
Me._toggled = Toggled
|
|
Me.OnToggleTrigger = TriggerSub
|
|
Me.Settings = Settings
|
|
End Sub
|
|
|
|
|
|
Public Overrides Sub Draw()
|
|
If _toggled = True Then
|
|
Canvas.DrawImageBorder(TextureManager.GetTexture(TextureManager.GetTexture("GUI\Menus\Menu"), New Rectangle(0, 48, 48, 48)), 2, New Rectangle(CInt(_position.X), CInt(_position.Y) + YScroll, 32 * _size, 64))
|
|
Else
|
|
Canvas.DrawImageBorder(TextureManager.GetTexture(TextureManager.GetTexture("GUI\Menus\Menu"), New Rectangle(0, 0, 48, 48)), 2, New Rectangle(CInt(_position.X), CInt(_position.Y) + YScroll, 32 * _size, 64))
|
|
End If
|
|
|
|
Dim t As String = Me.Text
|
|
If Settings.Count = 2 Then
|
|
If Toggled = True Then
|
|
t &= ": " & Settings(1)
|
|
Else
|
|
t &= ": " & Settings(0)
|
|
End If
|
|
End If
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.InGameFont, t, New Vector2(CInt(_position.X) + CInt(((Me._size * 32 + 20) / 2) - (FontManager.InGameFont.MeasureString(t).X / 2)), CInt(_position.Y) + 32 + YScroll), Color.Black)
|
|
End Sub
|
|
|
|
Public Overrides Sub Update()
|
|
Dim r As New Rectangle(CInt(_position.X), CInt(_position.Y) + YScroll, 32 * _size, 96)
|
|
|
|
If r.Contains(MouseHandler.MousePosition) = True Then
|
|
If net.Pokemon3D.Game.Controls.Accept(True, False, False) = True Then
|
|
Me._toggled = Not Me._toggled
|
|
OnToggleTrigger(Me)
|
|
End If
|
|
End If
|
|
End Sub
|
|
End Class
|
|
|
|
Class CommandButton
|
|
|
|
Inherits Control
|
|
|
|
Private _position As Vector2 = New Vector2(0)
|
|
Private _size As Integer = 1
|
|
Private _text As String = ""
|
|
|
|
Public Property Position As Vector2
|
|
Get
|
|
Return _position
|
|
End Get
|
|
Set(value As Vector2)
|
|
Me._position = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Size As Integer
|
|
Get
|
|
Return Me._size
|
|
End Get
|
|
Set(value As Integer)
|
|
Me._size = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Text As String
|
|
Get
|
|
Return Me._text
|
|
End Get
|
|
Set(value As String)
|
|
Me._text = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Delegate Sub OnClick(ByVal C As CommandButton)
|
|
Public OnClickTrigger As OnClick
|
|
|
|
Public Sub New(ByVal ClickSub As OnClick)
|
|
Me.OnClickTrigger = ClickSub
|
|
End Sub
|
|
|
|
Public Sub New(ByVal Position As Vector2, ByVal Size As Integer, ByVal Text As String, ByVal ClickSub As OnClick)
|
|
Me._position = Position
|
|
Me._size = Size
|
|
Me._text = Text
|
|
Me.OnClickTrigger = ClickSub
|
|
End Sub
|
|
|
|
|
|
Public Overrides Sub Draw()
|
|
Dim r As New Rectangle(CInt(_position.X), CInt(_position.Y) + YScroll, Me._size * 32 + 32, 96)
|
|
If r.Contains(MouseHandler.MousePosition) = True Then
|
|
Canvas.DrawImageBorder(TextureManager.GetTexture(TextureManager.GetTexture("GUI\Menus\Menu"), New Rectangle(48, 0, 48, 48)), 2, New Rectangle(CInt(_position.X), CInt(_position.Y) + YScroll, 32 * _size, 64))
|
|
Else
|
|
Canvas.DrawImageBorder(TextureManager.GetTexture(TextureManager.GetTexture("GUI\Menus\Menu"), New Rectangle(0, 0, 48, 48)), 2, New Rectangle(CInt(_position.X), CInt(_position.Y) + YScroll, 32 * _size, 64))
|
|
End If
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.InGameFont, Me._text, New Vector2(CInt(_position.X) + CInt(((Me._size * 32 + 20) / 2) - (FontManager.InGameFont.MeasureString(Me._text).X / 2)), CInt(_position.Y) + 32 + YScroll), Color.Black)
|
|
End Sub
|
|
|
|
Public Overrides Sub Update()
|
|
Dim r As New Rectangle(CInt(_position.X), CInt(_position.Y) + YScroll, 32 * _size + 32, 96)
|
|
|
|
If r.Contains(MouseHandler.MousePosition) = True Then
|
|
If net.Pokemon3D.Game.Controls.Accept(True, False, False) = True Then
|
|
OnClickTrigger(Me)
|
|
End If
|
|
End If
|
|
End Sub
|
|
End Class
|
|
|
|
Class ScrollBar
|
|
|
|
Inherits Control
|
|
|
|
Private _size As Integer = 0
|
|
Private _value As Integer = 0
|
|
Private _max As Integer = 0
|
|
Private _min As Integer = 0
|
|
Private _position As Vector2 = New Vector2(0)
|
|
Private _text As String = ""
|
|
Private _drawPercentage As Boolean = False
|
|
|
|
Public Property Position As Vector2
|
|
Get
|
|
Return _position
|
|
End Get
|
|
Set(value As Vector2)
|
|
Me._position = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Size As Integer
|
|
Get
|
|
Return Me._size
|
|
End Get
|
|
Set(value As Integer)
|
|
Me._size = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Value As Integer
|
|
Get
|
|
Return Me._value
|
|
End Get
|
|
Set(value As Integer)
|
|
Me._value = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Max As Integer
|
|
Get
|
|
Return Me._max
|
|
End Get
|
|
Set(value As Integer)
|
|
Me._max = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Min As Integer
|
|
Get
|
|
Return Me._min
|
|
End Get
|
|
Set(value As Integer)
|
|
Me._min = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Text As String
|
|
Get
|
|
Return Me._text
|
|
End Get
|
|
Set(value As String)
|
|
Me._text = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property DrawPercentage As Boolean
|
|
Get
|
|
Return Me._drawPercentage
|
|
End Get
|
|
Set(value As Boolean)
|
|
Me._drawPercentage = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Delegate Sub OnChange(ByVal S As ScrollBar)
|
|
Public OnChangeTrigger As OnChange
|
|
|
|
Public Settings As New Dictionary(Of Integer, String)
|
|
|
|
Dim clicked As Boolean = False
|
|
|
|
Public Sub New(ByVal ChangeSub As OnChange)
|
|
Me.OnChangeTrigger = ChangeSub
|
|
End Sub
|
|
|
|
Public Sub New(ByVal Position As Vector2, ByVal Size As Integer, ByVal Text As String, ByVal Value As Integer, ByVal Min As Integer, ByVal Max As Integer, ByVal ChangeSub As OnChange)
|
|
Me.New(Position, Size, Text, Value, Min, Max, ChangeSub, New Dictionary(Of Integer, String))
|
|
End Sub
|
|
|
|
Public Sub New(ByVal Position As Vector2, ByVal Size As Integer, ByVal Text As String, ByVal Value As Integer, ByVal Min As Integer, ByVal Max As Integer, ByVal ChangeSub As OnChange, ByVal Settings As Dictionary(Of Integer, String))
|
|
Me._position = Position
|
|
Me._size = Size
|
|
Me._text = Text
|
|
Me._value = Value
|
|
Me._max = Max
|
|
Me._min = Min
|
|
Me.Settings = Settings
|
|
Me.OnChangeTrigger = ChangeSub
|
|
End Sub
|
|
|
|
Public Overrides Sub Draw()
|
|
Dim length As Integer = _size + 16
|
|
Dim height As Integer = 32
|
|
|
|
Canvas.DrawRectangle(New Rectangle(CInt(_position.X) - 2, CInt(_position.Y) - 2 + YScroll, length + 4, height + 4), Color.Black)
|
|
|
|
Dim c As Color = Color.White
|
|
If Me.clicked = True Then
|
|
c = New Color(101, 142, 255)
|
|
End If
|
|
|
|
Canvas.DrawRectangle(New Rectangle(CInt(_position.X), CInt(_position.Y) + YScroll, length, height), c)
|
|
|
|
Canvas.DrawRectangle(GetSliderRectangle, Color.Black)
|
|
|
|
Dim t As String = Text & ": "
|
|
|
|
If Settings.ContainsKey(Value) = True Then
|
|
t &= Settings(Value)
|
|
Else
|
|
If Me._drawPercentage = True Then
|
|
t &= CStr(Me._value / (Me._max - Me._min) * 100)
|
|
Else
|
|
t &= Me._value.ToString()
|
|
End If
|
|
End If
|
|
|
|
c = Color.Gray
|
|
If Me.clicked = True Then
|
|
c = Color.White
|
|
End If
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MiniFont, t, New Vector2(Me.Position.X + CSng((Me.Size / 2) - (FontManager.MiniFont.MeasureString(t).X / 2)), Me._position.Y + 6), c)
|
|
End Sub
|
|
|
|
Public Overrides Sub Update()
|
|
If MouseHandler.ButtonDown(MouseHandler.MouseButtons.LeftButton) = True Then
|
|
If GetSliderRectangle().Contains(MouseHandler.MousePosition.X, MouseHandler.MousePosition.Y) = True And clicked = False Then
|
|
clicked = True
|
|
End If
|
|
Else
|
|
clicked = False
|
|
End If
|
|
|
|
If clicked = True Then
|
|
Dim x As Double = MouseHandler.MousePosition.X - Me._position.X
|
|
If x < 0 Then
|
|
x = 0D
|
|
End If
|
|
If x > Me.Size + 16 Then
|
|
x = Me.Size + 16
|
|
End If
|
|
|
|
Me.Value = CInt(x * ((Me._max - Min) / 100) * (100 / Me._size)) + Min
|
|
Me.Value = Value.Clamp(Min, Max)
|
|
|
|
OnChangeTrigger(Me)
|
|
End If
|
|
End Sub
|
|
|
|
Private Function GetSliderRectangle() As Rectangle
|
|
Dim x As Integer = CInt(((100 / (Me._max - Min)) * (Me._value - Min)) * (_size / 100))
|
|
|
|
If Me._value = Min Then
|
|
x = 0
|
|
Else
|
|
If x = 0 And _value > 0 Then
|
|
x = 1
|
|
End If
|
|
End If
|
|
|
|
Return New Rectangle(x + CInt(Me._position.X), CInt(Me.Position.Y) + YScroll, 16, 32)
|
|
End Function
|
|
|
|
End Class
|
|
|
|
#End Region
|
|
End Class |