Some quality of life changes to the beginning screens:

Updated license text on splash screen.
Updated start instructions, included it to be hidden if the GUI is disabled.
Back out of profile page back to title screen.
Various other minor revisements
This commit is contained in:
Tornado9797 2018-05-16 19:39:25 -05:00
parent ccc6070d2c
commit 1e96f29c4d
7 changed files with 59 additions and 45 deletions

View File

@ -2,7 +2,7 @@ Public Class CreditsScreen
Inherits Screen
Private Const COPYRIGHTYEAR As String = "2017"
Private Const COPYRIGHTYEAR As String = "2018"
Dim CreditsPages As New List(Of CreditsPage)
Dim CurrentPageIndex As Integer = 0

View File

@ -2,6 +2,10 @@
Imports System.Net.Sockets
Imports System.Net
''' <summary>
''' This is the game screen that displays the online server listing.
''' </summary>
Public Class JoinServerScreen
Inherits Screen
@ -84,7 +88,7 @@ Public Class JoinServerScreen
Canvas.DrawRectangle(New Rectangle(0, 75, Core.ScreenSize.Width, Core.ScreenSize.Height - 240), New Color(0, 0, 0, 128), True)
Core.SpriteBatch.DrawInterfaceString(FontManager.MainFont, "Join a server", New Vector2(CSng(Core.ScreenSize.Width / 2 - FontManager.MainFont.MeasureString("Join a server").X), 14), Color.White, 0.0F, New Vector2(0), 2.0F, SpriteEffects.None, 0.0F)
Core.SpriteBatch.DrawInterfaceString(FontManager.MainFont, "Join A Server", New Vector2(CSng(Core.ScreenSize.Width / 2 - FontManager.MainFont.MeasureString("Join A Server").X), 14), Color.White, 0.0F, New Vector2(0), 2.0F, SpriteEffects.None, 0.0F)
Dim endX As Integer = ServerList.Count - 1
endX = CInt(MathHelper.Clamp(endX, 0, ServersToDisplay - 1))
@ -93,7 +97,7 @@ Public Class JoinServerScreen
Canvas.DrawScrollBar(New Vector2(CSng(Core.ScreenSize.Width / 2 + 266), 100), Me.ServerList.Count, 1, selectIndex, New Size(8, Core.ScreenSize.Height - 300), False, Color.Black, Color.Gray, True)
End If
' Draw default first:
' Draw default first.
For i = 0 To endX
Dim index As Integer = i + scrollIndex
@ -154,7 +158,7 @@ Public Class JoinServerScreen
Dim vS As String = "Protocol version: " & Servers.ServersManager.PROTOCOLVERSION
Core.SpriteBatch.DrawInterfaceString(FontManager.MiniFont, vS, New Vector2(Core.ScreenSize.Width - FontManager.MiniFont.MeasureString(vS).X - 4, Core.ScreenSize.Height - FontManager.MiniFont.MeasureString(vS).Y - 1), Color.White)
' Draw player list tooltip after everything else:
' Draw player list tooltip after everything else.
For i = 0 To endX
Dim index As Integer = i + scrollIndex
@ -391,7 +395,7 @@ Public Class JoinServerScreen
Me.MaxPlayersOnline = 1
Me.IP = "127.0.0.1"
Me.Port = "15124"
Me.ServerMessage = "Play on your local computer."
Me.ServerMessage = "Single-player: Play on your local computer."
Me.ServerProtocolVersion = Servers.ServersManager.PROTOCOLVERSION
Else
Dim t As New Threading.Thread(AddressOf StartPing)
@ -410,9 +414,9 @@ Public Class JoinServerScreen
Dim sw As New Stopwatch()
sw.Start()
' TTL: 10000 ticks, usually at 60 Hz => 10000/60 seconds
' TTL: 10000 ticks, usually at 60 Hz => 10000/60 seconds.
While sw.ElapsedMilliseconds < 10000 And Me.Pinged = False
'Wait for server connection in the main thread.
' Wait for server connection in the main thread.
Threading.Thread.Sleep(1)
End While
@ -570,7 +574,7 @@ Public Class JoinServerScreen
Core.SpriteBatch.DrawInterfaceString(FontManager.MiniFont, Me.CurrentPlayersOnline & "/" & Me.MaxPlayersOnline, New Vector2(CInt(startPos.X) + width - 36 - FontManager.MiniFont.MeasureString(Me.CurrentPlayersOnline & "/" & Me.MaxPlayersOnline).X, CInt(startPos.Y) + 7), Color.LightGray)
Core.SpriteBatch.DrawInterface(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(80 + 14 * (4 - GetPingLevel()), 238, 14, 14), ""), New Rectangle(CInt(startPos.X) + width - 32, CInt(startPos.Y) + 3, 28, 28), Color.White)
' Ping result tool tip:
' Ping result tool tip.
If New Rectangle(CInt(startPos.X) + width - 32, CInt(startPos.Y) + 3, 28, 28).Contains(MouseHandler.MousePosition) = True Then
Canvas.DrawRectangle(New Rectangle(MouseHandler.MousePosition.X + 10, MouseHandler.MousePosition.Y + 10, 160, 32), Color.Black)
Canvas.DrawBorder(3, New Rectangle(MouseHandler.MousePosition.X + 10, MouseHandler.MousePosition.Y + 10, 160, 32), Color.Gray)
@ -603,7 +607,7 @@ Public Class JoinServerScreen
tooltipText = PlayerList.ToArray().ArrayToString(True)
End If
Dim v = FontManager.MiniFont.MeasureString("Player list:" & Environment.NewLine & tooltipText)
Dim v = FontManager.MiniFont.MeasureString("Player List" & Environment.NewLine & tooltipText)
Dim drawY As Integer = MouseHandler.MousePosition.Y + 10
If drawY + v.Y + 12 > Core.windowSize.Height Then
@ -616,18 +620,18 @@ Public Class JoinServerScreen
Canvas.DrawRectangle(New Rectangle(MouseHandler.MousePosition.X + 10, drawY, CInt(v.X + 10), CInt(v.Y + 22)), Color.Black, True)
Canvas.DrawBorder(3, New Rectangle(MouseHandler.MousePosition.X + 10, drawY, CInt(v.X + 10), CInt(v.Y + 22)), Color.Gray, True)
Core.SpriteBatch.DrawInterfaceString(FontManager.MiniFont, "Player list:", New Vector2(MouseHandler.MousePosition.X + 14, drawY + 6), Color.LightBlue)
Core.SpriteBatch.DrawInterfaceString(FontManager.MiniFont, "Player List", New Vector2(MouseHandler.MousePosition.X + 14, drawY + 6), Color.LightBlue)
Core.SpriteBatch.DrawInterfaceString(FontManager.MiniFont, tooltipText, New Vector2(MouseHandler.MousePosition.X + 14, drawY + 6 + 34), Color.White)
End If
End If
End Sub
Public Function GetAddressString() As String
If IsLocal = True Then
Return ""
Else
Return Me.IP & ":" & Me.Port
End If
'If IsLocal = True Then
'Return ""
' Else
Return Me.IP & ":" & Me.Port
'End If
End Function
Private Function GetPingLevel() As Integer

View File

@ -2,7 +2,7 @@
Imports P3D.Screens.MainMenu
''' <summary>
''' The "Press {BUTTON} to start" screen.
''' This is the game screen that includes the shimmering Pokémon 3D logo, the "Press {BUTTON} to start" text, and the time-dependent animated background.
''' </summary>
Public Class PressStartScreen
@ -60,7 +60,7 @@ Public Class PressStartScreen
target = New RenderTarget2D(GraphicsDevice, 1200, 680, False, SurfaceFormat.Color, DepthFormat.Depth24Stencil8)
'crappy fix
' TODO: Replace bad workaround.
Screens.MainMenu.NewNewGameScreen.CharacterSelectionScreen.SelectedSkin = ""
Core.Player.Unload()
@ -206,12 +206,12 @@ Public Class PressStartScreen
_shineRenderer.Draw(_shineTexture, New Rectangle(CInt(ScreenSize.Width / 2 - 250 + Math.Sin(tempF) * 240.0F), CInt(-100 + Math.Sin(tempG) * 10.0F + CInt(160 * _fadeIn)), 512, 512), New Color(255, 255, 255, CInt(255 * _logoFade)))
If _fadeIn = 0F Then
If IsCurrentScreen() And CInt(Date.Now.Millisecond / 500) = 1 Then
If IsCurrentScreen() And Core.GameOptions.ShowGUI Then ' Want to implement fading of text, but core doesn't seem to support this.
Dim text As String = String.Empty
If ControllerHandler.IsConnected() Then
text = "Press to start"
text = "Press to start."
Else
text = "Press " & KeyBindings.EnterKey1.ToString() & " or click to start"
text = "Press " & KeyBindings.EnterKey1.ToString() & ", " & KeyBindings.EnterKey2.ToString() & ", or primary mouse button to start."
End If
Dim textSize As Vector2 = FontManager.GameJoltFont.MeasureString(text)
@ -246,7 +246,7 @@ End Class
Public Class NewMainMenuScreen
'TODO: Replace old MainMenuScreen.
' TODO: Replace old MainMenuScreen.
Inherits Screen
@ -299,7 +299,7 @@ Public Class NewMainMenuScreen
End If
Else
If Controls.Accept(True, False, False) Then
'Click on profiles:
' Click on profiles.
For x = 0 To _profiles.Count - 1
Dim xOffset As Single = _screenOffset.X + x * 180 + ((x + 1) * 100 * (1 - _fadeIn))
@ -317,7 +317,7 @@ Public Class NewMainMenuScreen
Next
End If
If Controls.Dismiss(True, False, False) Then
'Click on profiles:
' Click on profiles.
For x = 0 To _profiles.Count - 1
Dim xOffset As Single = _screenOffset.X + x * 180 + ((x + 1) * 100 * (1 - _fadeIn))
@ -347,7 +347,7 @@ Public Class NewMainMenuScreen
If Controls.Dismiss(False, True, True) Then
DismissProfile()
End If
'Try to load the GameJolt profile once the player has logged in.
' Try to load the GameJolt profile once the player has logged in.
_profiles(0).LoadGameJolt()
End If
@ -364,6 +364,11 @@ Public Class NewMainMenuScreen
_sliderPosition = MathHelper.Lerp(_sliderTarget, _sliderPosition, 0.8F)
End If
If KeyBoardHandler.KeyPressed(KeyBindings.EscapeKey) Or KeyBoardHandler.KeyPressed(KeyBindings.BackKey1) Or KeyBoardHandler.KeyPressed(KeyBindings.BackKey2) Or MouseHandler.ButtonPressed(MouseHandler.MouseButtons.RightButton) Or ControllerHandler.ButtonPressed(Buttons.B) Then
'SetScreen(New TransitionScreen(CurrentScreen, Me.PreScreen, Color.White, False))
SetScreen(New PressStartScreen())
End If
If _fadeIn = 1.0F Then
If _closingDisplay Then
If _expandDisplay > 0.0F Then
@ -448,7 +453,7 @@ Public Class NewMainMenuScreen
End Sub
Private Sub DrawProfiles()
'Draw profiles:
' Draw profiles.
For x = 0 To _profiles.Count - 1
Dim xOffset As Single = _screenOffset.X + x * 180 + ((x + 1) * 100 * (1 - _fadeIn))
@ -456,18 +461,18 @@ Public Class NewMainMenuScreen
Next
If _fadeIn = 1.0F Then
'Draw arrow:
' Draw arrow.
SpriteBatch.Draw(_menuTexture, New Rectangle(CInt(_sliderPosition - 16), CInt(_screenOffset.Y + 170), 32, 16), New Rectangle(0, 16, 32, 16), Color.White)
Dim displayRect = New Rectangle(CInt((_sliderPosition - 300).Clamp(20, windowSize.Width - 620)), CInt(_screenOffset.Y + 170 + 16), 600, CInt(240 * _expandDisplay))
'Draw display:
' Draw display.
If _expandDisplay > 0F Then
Canvas.DrawRectangle(displayRect, Screens.UI.ColorProvider.MainColor(False))
Canvas.DrawRectangle(New Rectangle(displayRect.X, displayRect.Y + displayRect.Height - 3, displayRect.Width, 3), Screens.UI.ColorProvider.AccentColor(False, CInt(255 * _expandDisplay)))
End If
'Dark theme:
' Dark theme.
If (_selectedProfile = 0 Or _selectedProfile = 1) And _sliderPosition <= GetSliderTarget(1) Then
Dim maxDistance As Integer = 180
Dim distance As Integer = CInt(Math.Abs(_sliderTarget - _sliderPosition))
@ -484,7 +489,7 @@ Public Class NewMainMenuScreen
End If
End If
'Draw profile info:
' Draw profile info.
Dim tmpProfile = _profiles(_selectedProfile)
If _expandDisplay = 1.0F Then
@ -492,13 +497,13 @@ Public Class NewMainMenuScreen
For i = 0 To tmpProfile.PokemonTextures.Count - 1
SpriteBatch.Draw(tmpProfile.PokemonTextures(i), New Rectangle(displayRect.X + 30 + i * 70, displayRect.Y + 70, 64, 64), Color.White)
Next
GetFontRenderer().DrawString(FontManager.GameJoltFont, "Name: " & tmpProfile.Name & Environment.NewLine &
GetFontRenderer().DrawString(FontManager.GameJoltFont, "Player Name: " & tmpProfile.Name & Environment.NewLine &
"GameMode: " & tmpProfile.GameMode, New Vector2(displayRect.X + 30, displayRect.Y + 20), Color.White, 0F, Vector2.Zero, 0.5F, SpriteEffects.None, 0F)
GetFontRenderer().DrawString(FontManager.GameJoltFont, "Badges: " & tmpProfile.Badges.ToString() & Environment.NewLine &
"Time played: " & tmpProfile.TimePlayed & Environment.NewLine &
"Play time: " & tmpProfile.TimePlayed & Environment.NewLine &
"Location: " & tmpProfile.Location, New Vector2(displayRect.X + 30, displayRect.Y + 150), Color.White, 0F, Vector2.Zero, 0.5F, SpriteEffects.None, 0F)
Else
GetFontRenderer().DrawString(FontManager.GameJoltFont, "Name: " & tmpProfile.Name & Environment.NewLine &
GetFontRenderer().DrawString(FontManager.GameJoltFont, "Player Name: " & tmpProfile.Name & Environment.NewLine &
"GameMode: " & tmpProfile.GameMode, New Vector2(displayRect.X + 30, displayRect.Y + 20), Color.White, 0F, Vector2.Zero, 0.5F, SpriteEffects.None, 0F)
SpriteBatch.Draw(_menuTexture, New Rectangle(displayRect.X + 30, displayRect.Y + 70, 32, 32), New Rectangle(0, 32, 32, 32), Color.White)
@ -772,7 +777,7 @@ Public Class NewMainMenuScreen
End If
If _isNewGameButton Then
Dim text As String = "NEW" & Environment.NewLine & "GAME"
Dim text As String = "New" & Environment.NewLine & "Game"
If alpha >= 250 And CurrentScreen.Identification = Identifications.MainMenuScreen Then
FontRenderer.DrawString(FontManager.GameJoltFont, text, New Vector2(offset.X + 80 - (FontManager.GameJoltFont.MeasureString(text).X) / 2,
@ -873,11 +878,11 @@ Public Class NewMainMenuScreen
If _isNewGameButton Then
World.IsMainMenu = False
If GameModeManager.GameModeCount = 1 Then
'There's only the default GameMode available, so just load that one:
' There's only the default GameMode available, so just load that one.
GameModeManager.SetGameModePointer("Kolben")
SetScreen(New Screens.MainMenu.NewNewGameScreen(CurrentScreen))
Else
'There is more than one GameMode, prompt a selection screen:
' There is more than one GameMode, prompt a selection screen:
SetScreen(New GameModeSelectionScreen(CurrentScreen))
End If
Else
@ -948,7 +953,7 @@ Public Class GameModeSelectionScreen
Public Overrides Sub Draw()
PreScreen.Draw()
Dim text = "Select a GameMode" + Environment.NewLine + "to start the new game with"
Dim text = "Select a GameMode" + Environment.NewLine + "to start the new game with."
GetFontRenderer().DrawString(FontManager.GameJoltFont, text, New Vector2(30, 30), Color.White)
@ -971,7 +976,7 @@ Public Class GameModeSelectionScreen
End Sub
Public Overrides Sub Update()
' PreScreen is the MainMenuScreen, so update the pre screen of that to achieve the background world:
' PreScreen is the MainMenuScreen, so update the previous screen of that to achieve the background world.
PreScreen.PreScreen.Update()
If _index > 0 AndAlso Controls.Up(True, True, True, True, True, True) Then

View File

@ -1,12 +1,17 @@
Imports System.Threading
''' <summary>
''' This is the game screen that includes the MonoGame logo and the relevant license text.
''' </summary>
Friend Class SplashScreen
Inherits Screen
Private Const LICENSE_TEXT As String =
"""MonoGame"", the MonoGame Logo and source code are copyrights of MonoGame Team (monogame.net).
Pokémon 3D is not affiliated with Nintendo, Creatures Inc. or GAME FREAK Inc."
"""MonoGame"", the MonoGame Logo, and its source code are copyrights of MonoGame Team (monogame.net).
Pokémon 3D is not affiliated with The Pokémon Company, Nintendo, Creatures inc. or GAME FREAK inc.
Please support the official release!"
Private ReadOnly _monoGameLogo As Texture2D
Private ReadOnly _licenseFont As SpriteFont
@ -21,12 +26,12 @@ Pokémon 3D is not affiliated with Nintendo, Creatures Inc. or GAME FREAK Inc."
_game = GameReference
CanBePaused = False
CanMuteMusic = False
CanMuteMusic = True
CanChat = False
CanTakeScreenshot = False
CanDrawDebug = False
MouseVisible = True
CanGoFullscreen = False
CanTakeScreenshot = True
CanDrawDebug = True
MouseVisible = False
CanGoFullscreen = True
_monoGameLogo = TextureManager.LoadDirect("GUI\Logos\MonoGame.png")
_licenseFont = Core.Content.Load(Of SpriteFont)("Fonts\BMP\mainFont")
@ -64,7 +69,7 @@ Pokémon 3D is not affiliated with Nintendo, Creatures Inc. or GAME FREAK Inc."
Else
Core.SetScreen(New PressStartScreen())
End If
' Core.SetScreen(New TransitionScreen(Me, New IntroScreen(), Color.Black, False))
'Core.SetScreen(New TransitionScreen(Me, New IntroScreen(), Color.Black, False))
End If
End If

Binary file not shown.

Binary file not shown.