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 |