mirror of
https://github.com/P3D-Legacy/P3D-Legacy.git
synced 2025-09-24 10:29:41 +02:00
Fixed ContentPacks menu layout Fixed the cause of the Options Menu crashing Replaced the MiniFont in the JoinServerScreen with the InGameFont Adjusted positioning of text in AddServerScreen
261 lines
11 KiB
VB.net
261 lines
11 KiB
VB.net
Public Class AddServerScreen
|
|
|
|
Inherits Screen
|
|
|
|
Private ServerNames As New List(Of String)
|
|
|
|
Private IdentifyName As String = ""
|
|
Private Address As String = ""
|
|
|
|
Private Index As Integer = 0
|
|
Private ButtonIndex As Integer = 0
|
|
|
|
Private NewServer As Boolean = True
|
|
Private EditServer As JoinServerScreen.Server = Nothing
|
|
|
|
Public Sub New(ByVal currentScreen As Screen, ByVal servers As List(Of JoinServerScreen.Server), ByVal NewServer As Boolean, ByVal EditServer As JoinServerScreen.Server)
|
|
Me.PreScreen = currentScreen
|
|
Me.Identification = Identifications.AddServerScreen
|
|
|
|
For Each s As JoinServerScreen.Server In servers
|
|
Me.ServerNames.Add(s.IdentifierName.ToLower())
|
|
Next
|
|
|
|
Me.CanBePaused = False
|
|
Me.CanChat = False
|
|
Me.CanMuteAudio = False
|
|
Me.MouseVisible = True
|
|
|
|
Me.NewServer = NewServer
|
|
Me.EditServer = EditServer
|
|
|
|
If NewServer = False Then
|
|
Me.Address = EditServer.GetAddressString()
|
|
Me.IdentifyName = EditServer.IdentifierName
|
|
End If
|
|
End Sub
|
|
|
|
Public Overrides Sub Draw()
|
|
Dim Tx As Integer = CInt(World.CurrentSeason)
|
|
Dim Ty As Integer = 0
|
|
If Tx > 1 Then
|
|
Tx -= 2
|
|
Ty += 1
|
|
End If
|
|
|
|
Dim pattern As Texture2D = TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(160 + Tx * 16, Ty * 16, 16, 16), "")
|
|
For Dx = 0 To Core.windowSize.Width Step 128
|
|
For Dy = 0 To Core.windowSize.Height Step 128
|
|
Dim c As Color = Color.White
|
|
|
|
Core.SpriteBatch.Draw(pattern, New Rectangle(Dx, Dy, 128, 128), c)
|
|
Next
|
|
Next
|
|
|
|
Canvas.DrawRectangle(New Rectangle(0, 75, Core.windowSize.Width, 680 - 240), New Color(0, 0, 0, 128))
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Add a server", New Vector2(CSng(Core.windowSize.Width / 2 - FontManager.MainFont.MeasureString("Add a server").X), 14), Color.White, 0.0F, New Vector2(0), 2.0F, SpriteEffects.None, 0.0F)
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Name:", New Vector2(CSng(Core.windowSize.Width / 2 - 300), 140), Color.White)
|
|
Canvas.DrawRectangle(New Rectangle(CInt(Core.windowSize.Width / 2 - 300), 170, 600, 40), New Color(40, 40, 40, 255))
|
|
|
|
If Index = 0 Then
|
|
Canvas.DrawBorder(3, New Rectangle(CInt(Core.windowSize.Width / 2 - 300), 170, 600, 40), New Color(220, 220, 220, 255))
|
|
Else
|
|
Canvas.DrawBorder(3, New Rectangle(CInt(Core.windowSize.Width / 2 - 300), 170, 600, 40), New Color(100, 100, 100, 255))
|
|
End If
|
|
|
|
Dim t As String = Me.IdentifyName
|
|
If t.Length < 30 And Index = 0 Then
|
|
t &= "_"
|
|
If Me.IdentifyName = "" And ControllerHandler.IsConnected() = True Then
|
|
t = "Press Y to edit."
|
|
End If
|
|
End If
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, t, New Vector2(CSng(Core.windowSize.Width / 2 - 294), 175), Color.White)
|
|
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, "Address:", New Vector2(CSng(Core.windowSize.Width / 2 - 300), 270), Color.White)
|
|
Canvas.DrawRectangle(New Rectangle(CInt(Core.windowSize.Width / 2 - 300), 300, 600, 40), New Color(40, 40, 40, 255))
|
|
|
|
If Index = 1 Then
|
|
Canvas.DrawBorder(3, New Rectangle(CInt(Core.windowSize.Width / 2 - 300), 300, 600, 40), New Color(220, 220, 220, 255))
|
|
Else
|
|
Canvas.DrawBorder(3, New Rectangle(CInt(Core.windowSize.Width / 2 - 300), 300, 600, 40), New Color(100, 100, 100, 255))
|
|
End If
|
|
|
|
t = Me.Address
|
|
If t.Length < 30 And Index = 1 Then
|
|
t &= "_"
|
|
If Me.Address = "" And ControllerHandler.IsConnected() = True Then
|
|
t = "Press Y to edit."
|
|
End If
|
|
End If
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, t, New Vector2(CSng(Core.windowSize.Width / 2 - 294), 305), Color.White)
|
|
|
|
Dim CanvasTexture As Texture2D
|
|
CanvasTexture = TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), "")
|
|
|
|
For i = 0 To 1
|
|
Dim Text As String = ""
|
|
Select Case i
|
|
Case 0
|
|
Text = "Done"
|
|
Case 1
|
|
Text = "Back"
|
|
End Select
|
|
|
|
If i = Me.ButtonIndex Then
|
|
CanvasTexture = TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 48, 48, 48), "")
|
|
Else
|
|
CanvasTexture = TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), "")
|
|
End If
|
|
|
|
Canvas.DrawImageBorder(CanvasTexture, 2, New Rectangle(CInt(Core.windowSize.Width / 2) - 180 + i * 192, 544, 128, 64))
|
|
Core.SpriteBatch.DrawString(FontManager.InGameFont, Text, New Vector2(CInt(Core.windowSize.Width / 2) - 162 + i * 192, 578), Color.Black)
|
|
Next
|
|
|
|
If IsValid() <> "" Then
|
|
Canvas.DrawRectangle(New Rectangle(CInt(Core.windowSize.Width / 2 - 300), 430, 600, 40), New Color(40, 40, 40, 255))
|
|
Canvas.DrawBorder(3, New Rectangle(CInt(Core.windowSize.Width / 2 - 300), 430, 600, 40), New Color(200, 200, 200, 255))
|
|
Core.SpriteBatch.DrawString(FontManager.MainFont, IsValid(), New Vector2(CInt(Core.windowSize.Width / 2 - 294), 436), New Color(180, 0, 0, 255))
|
|
End If
|
|
|
|
Dim d As New Dictionary(Of Buttons, String)
|
|
d.Add(Input.Buttons.A, "Accept")
|
|
d.Add(Input.Buttons.B, "Back")
|
|
d.Add(Input.Buttons.Y, "Edit")
|
|
d.Add(Input.Buttons.X, "Clear")
|
|
Me.DrawGamePadControls(d)
|
|
End Sub
|
|
|
|
Public Overrides Sub Update()
|
|
If KeyBoardHandler.KeyPressed(Keys.Tab) = True Then
|
|
If Controls.ShiftDown() = True Then
|
|
Me.Index = 0
|
|
Else
|
|
Me.Index = 1
|
|
End If
|
|
End If
|
|
If Controls.Up(True, True, False, False, True, True) = True Then
|
|
Me.Index = 0
|
|
End If
|
|
If Controls.Down(True, True, False, False, True, True) = True Then
|
|
Me.Index = 1
|
|
End If
|
|
If Controls.Left(True, True, True, False, True, True) = True Then
|
|
Me.ButtonIndex = 0
|
|
End If
|
|
If Controls.Right(True, True, True, False, True, True) = True Then
|
|
Me.ButtonIndex = 1
|
|
End If
|
|
|
|
If Controls.Accept(True, False, False) = True Then
|
|
If New Rectangle(CInt(Core.windowSize.Width / 2 - 300), 170, 600, 40).Contains(MouseHandler.MousePosition) Then
|
|
Index = 0
|
|
End If
|
|
|
|
If New Rectangle(CInt(Core.windowSize.Width / 2 - 300), 300, 600, 40).Contains(MouseHandler.MousePosition) Then
|
|
Index = 1
|
|
End If
|
|
End If
|
|
|
|
If Core.GameInstance.IsMouseVisible = True Then
|
|
For i = 0 To 1
|
|
If New Rectangle(CInt(Core.windowSize.Width / 2) - 180 + i * 192, 544, 128 + 32, 64 + 32).Contains(MouseHandler.MousePosition) Then
|
|
If ButtonIndex = i Then
|
|
If Controls.Accept(True, False, False) = True Then
|
|
If i = 0 Then
|
|
SoundManager.PlaySound("select")
|
|
ButtonDone()
|
|
Else
|
|
SoundManager.PlaySound("select")
|
|
ButtonCancel()
|
|
End If
|
|
End If
|
|
Else
|
|
ButtonIndex = i
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
Select Case Index
|
|
Case 0
|
|
KeyBindings.GetInput(Me.IdentifyName, 30, True, True)
|
|
If ControllerHandler.ButtonPressed(Buttons.Y) = True Then
|
|
Core.SetScreen(New InputScreen(Me, "Pokemon3D server", InputScreen.InputModes.Text, Me.IdentifyName, 30, New List(Of Texture2D), AddressOf Me.AcceptName))
|
|
End If
|
|
If ControllerHandler.ButtonPressed(Buttons.X) = True Then
|
|
Me.IdentifyName = ""
|
|
End If
|
|
Case 1
|
|
KeyBindings.GetInput(Me.Address, 30, True, True)
|
|
If ControllerHandler.ButtonPressed(Buttons.Y) = True Then
|
|
Core.SetScreen(New InputScreen(Me, "127.0.0.1", InputScreen.InputModes.Text, Me.Address, 30, New List(Of Texture2D), AddressOf Me.AcceptAddress))
|
|
End If
|
|
If ControllerHandler.ButtonPressed(Buttons.X) = True Then
|
|
Me.Address = ""
|
|
End If
|
|
End Select
|
|
|
|
Select Case ButtonIndex
|
|
Case 0
|
|
If Controls.Accept(False, False, True) = True Or KeyBoardHandler.KeyPressed(Keys.Enter) = True Then
|
|
SoundManager.PlaySound("select")
|
|
ButtonDone()
|
|
End If
|
|
Case 1
|
|
If Controls.Accept(False, False, True) = True Or KeyBoardHandler.KeyPressed(Keys.Enter) = True Then
|
|
SoundManager.PlaySound("select")
|
|
ButtonCancel()
|
|
End If
|
|
End Select
|
|
|
|
If Controls.Dismiss(True, False, True) = True Then
|
|
SoundManager.PlaySound("select")
|
|
Core.SetScreen(Me.PreScreen)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub AcceptName(ByVal input As String)
|
|
Me.IdentifyName = input
|
|
End Sub
|
|
|
|
Private Sub AcceptAddress(ByVal input As String)
|
|
Me.Address = input
|
|
End Sub
|
|
|
|
Private Function IsValid() As String
|
|
If Me.IdentifyName = "" Then
|
|
Return "The server name cannot be empty."
|
|
End If
|
|
If Me.Address = "" Then
|
|
Return "The address cannot be empty."
|
|
End If
|
|
If Me.ServerNames.Contains(Me.IdentifyName.ToLower()) = True Then
|
|
Return "This server name already exists on the list."
|
|
End If
|
|
|
|
Return ""
|
|
End Function
|
|
|
|
Private Sub ButtonDone()
|
|
If IsValid() = "" Then
|
|
Dim data As List(Of String) = System.IO.File.ReadAllLines(GameController.GamePath & "\Save\server_list.dat").ToList()
|
|
data.Add(Me.IdentifyName & "," & Me.Address)
|
|
System.IO.File.WriteAllLines(GameController.GamePath & "\Save\server_list.dat", data.ToArray())
|
|
Core.SetScreen(Me.PreScreen)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ButtonCancel()
|
|
If NewServer = False Then
|
|
Dim data As List(Of String) = System.IO.File.ReadAllLines(GameController.GamePath & "\Save\server_list.dat").ToList()
|
|
data.Add(EditServer.ToString())
|
|
System.IO.File.WriteAllLines(GameController.GamePath & "\Save\server_list.dat", data.ToArray())
|
|
End If
|
|
|
|
Core.SetScreen(Me.PreScreen)
|
|
End Sub
|
|
|
|
End Class |