Added @screen.showmessagebox(text|r.g.b|r,g,b|r,g,b) command and fixed blurry scaling

This commit is contained in:
JappaWakka 2021-10-18 21:36:26 +02:00
parent 7731e9cbc0
commit 6d30a0ebdf
4 changed files with 47 additions and 21 deletions

View File

@ -191,10 +191,10 @@
Else
SpriteBatch.BeginBatch()
FontRenderer.Begin()
GraphicsDevice.DepthStencilState = DepthStencilState.Default
GraphicsDevice.SamplerStates(0) = sampler
GraphicsDevice.SamplerStates(0) = SamplerState.PointClamp
CurrentScreen.Draw()
If Not Core.Player Is Nothing Then

View File

@ -12,9 +12,12 @@
Private _closing As Boolean = False
Private _text As String = ""
Private _width As Integer = 500
Private _height As Integer = 200
Private Scale As Single = CInt(2.0F)
Private _width As Integer = 320
Private _height As Integer = 320
Private _backColor As Color = Color.Black
Private _textColor As Color = Color.White
Private _shadowColor As Color = Color.Black
''' <summary>
''' Creates a new instance of the message box class.
@ -37,14 +40,23 @@
''' Displays the Message box.
''' </summary>
''' <param name="text">The text to display.</param>
Public Sub Show(ByVal text As String)
Public Sub Show(ByVal text As String, Optional backColor As Color = Nothing, Optional textColor As Color = Nothing, Optional shadowColor As Color = Nothing)
_fadeIn = 0F
_text = text
_closing = False
If Not backColor = Nothing Then
_backColor = backColor
End If
If Not textColor = Nothing Then
_textColor = textColor
End If
If Not shadowColor = Nothing Then
_shadowColor = shadowColor
End If
Dim fontSize As Vector2 = FontManager.GameJoltFont.MeasureString(_text)
If fontSize.X > 480 Then
_width = CInt(fontSize.X + 20)
Dim fontSize As Vector2 = FontManager.MainFont.MeasureString(_text) * Scale
If fontSize.X > 196 Then
_width = CInt(fontSize.X + 24)
End If
SetScreen(Me)
@ -53,24 +65,23 @@
Public Overrides Sub Draw()
PreScreen.Draw()
Dim fontSize As Vector2 = New Vector2(CInt(FontManager.MainFont.MeasureString(_text).X * Scale), CInt(FontManager.MainFont.MeasureString(_text).Y * Scale))
Canvas.DrawRectangle(windowSize, New Color(0, 0, 0, CInt(140 * _fadeIn)))
Dim boxRect = New Rectangle(CInt(windowSize.Width / 2 - _width / 2 - (_width / 10)),
CInt(windowSize.Height / 2 - _height / 2 - (_height / 5) * (1 - _fadeIn)),
CInt(_width + (_width / 5)),
CInt(_height + fontSize.Y))
Canvas.DrawRectangle(boxRect, New Color(_backColor.R, _backColor.G, _backColor.B, CInt(255 * _fadeIn)), True)
Canvas.DrawRectangle(New Rectangle(CInt(windowSize.Width / 2 - _width / 2 - (_width / 10) * (1 - _fadeIn)),
CInt(windowSize.Height / 2 - _height / 2 - (_height / 10) * (1 - _fadeIn)),
CInt(_width + (1 - _fadeIn) * (_width / 5)),
CInt(_height + (1 - _fadeIn) * (_height / 5))), New Color(0, 0, 0, CInt(255 * _fadeIn)))
Dim fontSizeMulti As Single = CSng(1 + (1 / 10) * (1 - _fadeIn)) * 0.75F
Dim fontSize As Vector2 = FontManager.GameJoltFont.MeasureString(_text)
GetFontRenderer().DrawString(FontManager.GameJoltFont, _text, New Vector2(windowSize.Width / 2.0F - (fontSize.X * fontSizeMulti) / 2.0F,
windowSize.Height / 2.0F - (fontSize.Y * fontSizeMulti) / 2.0F), New Color(255, 255, 255, CInt(255 * _fadeIn)), 0F, Vector2.Zero, fontSizeMulti, SpriteEffects.None, 0F)
Core.SpriteBatch.DrawString(FontManager.MainFont, _text, New Vector2(CInt(windowSize.Width / 2.0F - fontSize.X / 2.0F + 2 * Scale), CInt(boxRect.Y + (boxRect.Height / 2) - fontSize.Y / 2.0F + 2 * Scale)), New Color(_shadowColor.R, _shadowColor.G, _shadowColor.B, CInt(255 * _fadeIn)), 0F, Vector2.Zero, Scale, SpriteEffects.None, 0F)
Core.SpriteBatch.DrawString(FontManager.MainFont, _text, New Vector2(CInt(windowSize.Width / 2.0F - fontSize.X / 2.0F), CInt(boxRect.Y + (boxRect.Height / 2) - fontSize.Y / 2.0F)), New Color(_textColor.R, _textColor.G, _textColor.B, CInt(255 * _fadeIn)), 0F, Vector2.Zero, Scale, SpriteEffects.None, 0F)
End Sub
Public Overrides Sub Update()
If _closing Then
If _fadeIn > 0.0F Then
_fadeIn = MathHelper.Lerp(0.0F, _fadeIn, 0.4F)
_fadeIn = MathHelper.Lerp(0.0F, _fadeIn, 0.7F)
If _fadeIn - 0.01F <= 0.0F Then
_fadeIn = 0.0F
SetScreen(PreScreen)

View File

@ -615,7 +615,7 @@ Public Class NewMainMenuScreen
Select Case _menuIndex
Case 0
If _selectedProfile = 1 And Security.FileValidation.IsValid(False) = False Then
_messageBox.Show("File validation failed!" & Environment.NewLine & "Redownload the game's files to solve this problem.")
_messageBox.Show("File validation failed!~Redownload the game's files to solve this problem.")
Else
_MainProfiles(_selectedProfile).SelectProfile()
End If
@ -1373,7 +1373,7 @@ Public Class NewMainMenuScreen
LoadGameJolt()
ElseIf IsOptionsMenuButton = False Then
Dim messageBox As New UI.MessageBox(CurrentScreen)
messageBox.Show("The required GameMode does not exist." & Environment.NewLine & "Reaquire the GameMode to play on this profile.")
messageBox.Show("The required GameMode does not exist.~Reaquire the GameMode to play on this profile.".Replace("~", Environment.NewLine))
Else
_menuIndex = 2
_selectedProfileTemp = _selectedProfile

View File

@ -11,6 +11,21 @@
Dim argument As String = ScriptComparer.GetSubClassArgumentPair(subClass).Argument
Select Case command.ToLower()
Case "showmessagebox"
Dim messageBox As New UI.MessageBox(CurrentScreen)
Dim colorsplit() As String = argument.Split("|")
Select Case argument.Split("|").Count
Case 1
messageBox.Show(argument.Replace("~", Environment.NewLine).Replace("*", Environment.NewLine & Environment.NewLine))
Case 2
messageBox.Show(colorsplit(0).Replace("~", Environment.NewLine).Replace("*", Environment.NewLine & Environment.NewLine), New Color(CInt(colorsplit(1).GetSplit(0)), CInt(colorsplit(1).GetSplit(1)), CInt(colorsplit(1).GetSplit(2))))
Case 3
messageBox.Show(colorsplit(0).Replace("~", Environment.NewLine).Replace("*", Environment.NewLine & Environment.NewLine), New Color(CInt(colorsplit(1).GetSplit(0)), CInt(colorsplit(1).GetSplit(1)), CInt(colorsplit(1).GetSplit(2))), New Color(CInt(colorsplit(2).GetSplit(0)), CInt(colorsplit(2).GetSplit(1)), CInt(colorsplit(2).GetSplit(2))))
Case 4
messageBox.Show(colorsplit(0).Replace("~", Environment.NewLine).Replace("*", Environment.NewLine & Environment.NewLine), New Color(CInt(colorsplit(1).GetSplit(0)), CInt(colorsplit(1).GetSplit(1)), CInt(colorsplit(1).GetSplit(2))), New Color(CInt(colorsplit(2).GetSplit(0)), CInt(colorsplit(2).GetSplit(1)), CInt(colorsplit(2).GetSplit(2))), New Color(CInt(colorsplit(3).GetSplit(0)), CInt(colorsplit(3).GetSplit(1)), CInt(colorsplit(3).GetSplit(2))))
End Select
IsReady = True
CanContinue = False
Case "storagesystem"
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New StorageSystemScreen(Core.CurrentScreen), Color.Black, False))