183 lines
6.3 KiB
VB.net
183 lines
6.3 KiB
VB.net
|
Public Class ChooseAttackScreen
|
|||
|
|
|||
|
Inherits Screen
|
|||
|
|
|||
|
Dim Pokemon As Pokemon
|
|||
|
Dim mainTexture As Texture2D
|
|||
|
|
|||
|
Dim index As Integer = 0
|
|||
|
|
|||
|
Dim AttackIndex As Integer = 0
|
|||
|
Dim AttackPos As Single = 320.0F
|
|||
|
|
|||
|
Dim canChooseHMMove As Boolean = True
|
|||
|
Dim canExit As Boolean = True
|
|||
|
|
|||
|
Public Shared Selected As Integer = -1
|
|||
|
Public Shared Exited As Boolean = False
|
|||
|
Public Shared Chosen As Boolean = False
|
|||
|
|
|||
|
Public Delegate Sub ChoseAttack(ByVal Pokemon As Pokemon, ByVal AttackIndex As Integer)
|
|||
|
|
|||
|
Dim DoSub As ChoseAttack
|
|||
|
|
|||
|
Public Sub New(ByVal currentScreen As Screen, ByVal Pokemon As Pokemon, ByVal canChooseHmMove As Boolean, ByVal canExit As Boolean, ByVal DoSub As ChoseAttack)
|
|||
|
Me.Identification = Identifications.ChooseAttackScreen
|
|||
|
|
|||
|
Me.MouseVisible = False
|
|||
|
Me.CanBePaused = True
|
|||
|
Me.CanMuteMusic = True
|
|||
|
Me.CanChat = True
|
|||
|
Me.CanTakeScreenshot = True
|
|||
|
Me.CanDrawDebug = True
|
|||
|
|
|||
|
Me.PreScreen = currentScreen
|
|||
|
Me.Pokemon = Pokemon
|
|||
|
|
|||
|
mainTexture = TextureManager.GetTexture("GUI\Menus\Menu")
|
|||
|
|
|||
|
Me.canChooseHMMove = canChooseHmMove
|
|||
|
Me.canExit = canExit
|
|||
|
|
|||
|
Me.DoSub = DoSub
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Overrides Sub Update()
|
|||
|
If TextBox.Showing = False Then
|
|||
|
If Controls.Up(True, True, True, True) = True Then
|
|||
|
Me.AttackIndex -= 1
|
|||
|
End If
|
|||
|
If Controls.Down(True, True, True, True) = True Then
|
|||
|
Me.AttackIndex += 1
|
|||
|
End If
|
|||
|
|
|||
|
Me.AttackIndex = CInt(MathHelper.Clamp(Me.AttackIndex, 0, Pokemon.Attacks.Count - 1))
|
|||
|
|
|||
|
If Controls.Accept() = True Then
|
|||
|
ClickYes()
|
|||
|
End If
|
|||
|
If Controls.Dismiss() = True Then
|
|||
|
If canExit = True Then
|
|||
|
ClickNo()
|
|||
|
End If
|
|||
|
End If
|
|||
|
End If
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Overrides Sub Draw()
|
|||
|
Me.PreScreen.Draw()
|
|||
|
Canvas.DrawRectangle(Core.windowSize, New Color(0, 0, 0, 150))
|
|||
|
Dim CanvasTexture As Texture2D = TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), "")
|
|||
|
|
|||
|
Dim p As Vector2 = New Vector2(40, 50)
|
|||
|
|
|||
|
If Pokemon.Attacks.Count > 0 Then
|
|||
|
Canvas.DrawImageBorder(CanvasTexture, 2, New Rectangle(CInt(p.X + 432 - 352 + AttackPos), CInt(p.Y + 18), 288, 384))
|
|||
|
|
|||
|
Dim A As BattleSystem.Attack = Pokemon.Attacks(AttackIndex)
|
|||
|
|
|||
|
With Core.SpriteBatch
|
|||
|
Dim fullText As String = A.Description
|
|||
|
Dim t As String = ""
|
|||
|
Dim i As Integer = 0
|
|||
|
Dim n As String = ""
|
|||
|
For i = 0 To fullText.Length - 1
|
|||
|
Dim c As Char = CChar(fullText(i).ToString().Replace("’", "'"))
|
|||
|
|
|||
|
If c = CChar(" ") Then
|
|||
|
If FontManager.MiniFont.MeasureString(n & c).X > 170 Then
|
|||
|
t &= Environment.NewLine
|
|||
|
n = ""
|
|||
|
Else
|
|||
|
t &= " "
|
|||
|
n &= " "
|
|||
|
End If
|
|||
|
Else
|
|||
|
t &= c
|
|||
|
n &= c
|
|||
|
End If
|
|||
|
Next
|
|||
|
|
|||
|
Dim power As String = A.Power.ToString()
|
|||
|
If power = "0" Then
|
|||
|
power = "-"
|
|||
|
End If
|
|||
|
|
|||
|
Dim acc As String = A.Accuracy.ToString()
|
|||
|
If acc = "0" Then
|
|||
|
acc = "-"
|
|||
|
End If
|
|||
|
|
|||
|
.DrawString(FontManager.MiniFont, "Power: " & power & Environment.NewLine & "Accuracy: " & acc & Environment.NewLine & Environment.NewLine & t, New Vector2(CInt(p.X + 432 - 300 + AttackPos), p.Y + 38), Color.Black)
|
|||
|
.Draw(A.GetDamageCategoryImage(), New Rectangle(CInt(p.X + 432 - 150 + AttackPos), CInt(p.Y + 42), 56, 28), Color.White)
|
|||
|
End With
|
|||
|
|
|||
|
Canvas.DrawImageBorder(CanvasTexture, 2, New Rectangle(CInt(p.X + 80), CInt(p.Y + 18), 320, 384))
|
|||
|
Canvas.DrawImageBorder(CanvasTexture, 2, New Rectangle(CInt(p.X + 80), CInt(p.Y + 48 + 384), 320, 96))
|
|||
|
|
|||
|
For i = 0 To Me.Pokemon.Attacks.Count - 1
|
|||
|
DrawAttack(i, Me.Pokemon.Attacks(i))
|
|||
|
Next
|
|||
|
End If
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub DrawAttack(ByVal i As Integer, ByVal A As BattleSystem.Attack)
|
|||
|
Dim p As New Vector2(140, 80 + i * (64 + 32))
|
|||
|
|
|||
|
If i = 4 Then
|
|||
|
p.Y += 32
|
|||
|
End If
|
|||
|
|
|||
|
Dim CanvasTexture As Texture2D = TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), "")
|
|||
|
If Me.AttackIndex = i Then
|
|||
|
CanvasTexture = TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(48, 0, 48, 48), "")
|
|||
|
End If
|
|||
|
|
|||
|
Canvas.DrawImageBorder(CanvasTexture, 2, New Rectangle(CInt(p.X) + 12, CInt(p.Y), 256, 64))
|
|||
|
|
|||
|
With Core.SpriteBatch
|
|||
|
.DrawString(FontManager.MiniFont, A.Name, New Vector2(CInt(p.X) + 30, CInt(p.Y + 26)), Color.Black)
|
|||
|
|
|||
|
Dim c As Color = Color.Black
|
|||
|
Dim per As Integer = CInt((A.CurrentPP / A.MaxPP) * 100)
|
|||
|
|
|||
|
If per <= 33 And per > 10 Then
|
|||
|
c = Color.Orange
|
|||
|
ElseIf per <= 10 Then
|
|||
|
c = Color.IndianRed
|
|||
|
End If
|
|||
|
|
|||
|
.DrawString(FontManager.MiniFont, "PP " & A.CurrentPP & " / " & A.MaxPP, New Vector2(CInt(p.X) + 160, CInt(p.Y + 58)), c)
|
|||
|
|
|||
|
.Draw(TextureManager.GetTexture("GUI\Menus\Types", A.Type.GetElementImage(), ""), New Rectangle(CInt(p.X) + 30, CInt(p.Y + 54), 48, 16), Color.White)
|
|||
|
End With
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub ClickYes()
|
|||
|
Dim valid As Boolean = True
|
|||
|
If canChooseHMMove = False Then
|
|||
|
Dim A As BattleSystem.Attack = Pokemon.Attacks(AttackIndex)
|
|||
|
If A.IsHMMove = True Then
|
|||
|
valid = False
|
|||
|
TextBox.Show("Cannot choose HM move.", {}, False, False)
|
|||
|
End If
|
|||
|
End If
|
|||
|
If valid = True Then
|
|||
|
Selected = AttackIndex
|
|||
|
Core.SetScreen(Me.PreScreen)
|
|||
|
Exited = True
|
|||
|
Chosen = True
|
|||
|
If Not DoSub Is Nothing Then
|
|||
|
DoSub(Pokemon, AttackIndex)
|
|||
|
End If
|
|||
|
End If
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub ClickNo()
|
|||
|
Selected = -1
|
|||
|
Core.SetScreen(Me.PreScreen)
|
|||
|
Exited = True
|
|||
|
Chosen = False
|
|||
|
End Sub
|
|||
|
|
|||
|
End Class
|