154 lines
8.2 KiB
VB.net
154 lines
8.2 KiB
VB.net
Public Class MainGameFunctions
|
|
|
|
Public Shared Sub FunctionKeys()
|
|
If KeyBoardHandler.KeyPressed(KeyBindings.GUIControlKey) = True Then
|
|
Core.GameOptions.ShowGUI = Not Core.GameOptions.ShowGUI
|
|
Core.GameOptions.SaveOptions()
|
|
ElseIf KeyBoardHandler.KeyPressed(KeyBindings.ScreenshotKey) AndAlso Core.CurrentScreen.CanTakeScreenshot Then
|
|
CaptureScreen()
|
|
ElseIf KeyBoardHandler.KeyPressed(KeyBindings.DebugKey) Then
|
|
Core.GameOptions.ShowDebug += 1
|
|
If Core.GameOptions.ShowDebug >= 2 Then
|
|
Core.GameOptions.ShowDebug = 0
|
|
End If
|
|
Core.GameOptions.SaveOptions()
|
|
ElseIf KeyBoardHandler.KeyPressed(KeyBindings.LightKey) Then
|
|
Core.GameOptions.LightingEnabled = Not Core.GameOptions.LightingEnabled
|
|
Core.GameOptions.SaveOptions()
|
|
|
|
If Core.GameOptions.LightingEnabled Then
|
|
Core.GameMessage.ShowMessage(Localization.GetString("game_message_lighting_on", "Lighting Enabled"), 12, FontManager.MainFont, Color.White)
|
|
Else
|
|
Core.GameMessage.ShowMessage(Localization.GetString("game_message_lighting_off", "Lighting Disabled"), 12, FontManager.MainFont, Color.White)
|
|
End If
|
|
ElseIf KeyBoardHandler.KeyPressed(KeyBindings.FullScreenKey) AndAlso Core.CurrentScreen.CanGoFullscreen Then
|
|
ToggleFullScreen()
|
|
ElseIf KeyBoardHandler.KeyPressed(KeyBindings.MuteMusicKey) AndAlso Core.CurrentScreen.CanMuteMusic Then
|
|
MusicManager.Muted = Not MediaPlayer.IsMuted
|
|
SoundManager.Muted = MediaPlayer.IsMuted
|
|
Core.GameOptions.SaveOptions()
|
|
Core.CurrentScreen.ToggledMute()
|
|
End If
|
|
|
|
If KeyBoardHandler.KeyDown(KeyBindings.DebugKey) = True Then
|
|
If KeyBoardHandler.KeyPressed(Keys.F) Then
|
|
TextureManager.TextureList.Clear()
|
|
Core.GameMessage.ShowMessage(Localization.GetString("game_message_debug_texture_list_clear", "Texture list have cleared"), 12, FontManager.MainFont, Color.White)
|
|
ElseIf KeyBoardHandler.KeyPressed(Keys.S) Then
|
|
Core.SetWindowSize(New Vector2(1200, 680))
|
|
ElseIf KeyBoardHandler.KeyPressed(Keys.L) Then
|
|
Logger.DisplayLog = Not Logger.DisplayLog
|
|
ElseIf KeyBoardHandler.KeyPressed(Keys.B) Then
|
|
Entity.drawViewBox = Not Entity.drawViewBox
|
|
End If
|
|
End If
|
|
|
|
If ControllerHandler.ButtonPressed(Buttons.Back, True) = True Then
|
|
Core.GameOptions.GamePadEnabled = Not Core.GameOptions.GamePadEnabled
|
|
If Core.GameOptions.GamePadEnabled Then
|
|
Core.GameMessage.ShowMessage("Enabled XBOX 360 GamePad support.", 12, FontManager.MainFont, Color.White)
|
|
Else
|
|
Core.GameMessage.ShowMessage("Disabled XBOX 360 GamePad support.", 12, FontManager.MainFont, Color.White)
|
|
End If
|
|
Core.GameOptions.SaveOptions()
|
|
End If
|
|
End Sub
|
|
|
|
Private Shared Sub CaptureScreen()
|
|
Try
|
|
Core.GameMessage.HideMessage()
|
|
|
|
Dim fileName As String = ""
|
|
With My.Computer.Clock.LocalTime
|
|
Dim month As String = .Month.ToString()
|
|
If month.Length = 1 Then
|
|
month = "0" & month
|
|
End If
|
|
Dim day As String = .Day.ToString()
|
|
If day.Length = 1 Then
|
|
day = "0" & day
|
|
End If
|
|
Dim hour As String = .Hour.ToString()
|
|
If hour.Length = 1 Then
|
|
hour = "0" & hour
|
|
End If
|
|
Dim minute As String = .Minute.ToString()
|
|
If minute.Length = 1 Then
|
|
minute = "0" & minute
|
|
End If
|
|
Dim second As String = .Second.ToString()
|
|
If second.Length = 1 Then
|
|
second = "0" & second
|
|
End If
|
|
fileName = .Year & "-" & month & "-" & day & "_" & hour & "." & minute & "." & second & ".png"
|
|
End With
|
|
|
|
If Directory.Exists(GameController.GamePath & "\screenshots\") = False Then
|
|
Directory.CreateDirectory(GameController.GamePath & "\screenshots\")
|
|
End If
|
|
|
|
If Core.GraphicsManager.IsFullScreen = False Then
|
|
Dim b As New Drawing.Bitmap(Core.windowSize.Width, Core.windowSize.Height)
|
|
Using g As Drawing.Graphics = Drawing.Graphics.FromImage(b)
|
|
g.CopyFromScreen(Core.Window.ClientBounds.X, Core.Window.ClientBounds.Y, 0, 0, New Drawing.Size(b.Width, b.Height))
|
|
End Using
|
|
|
|
b.Save(GameController.GamePath & "\screenshots\" & fileName, Drawing.Imaging.ImageFormat.Png)
|
|
Else
|
|
Dim screenshot As New RenderTarget2D(Core.GraphicsDevice, Core.windowSize.Width, Core.windowSize.Height, False, SurfaceFormat.Color, DepthFormat.Depth24Stencil8)
|
|
Core.GraphicsDevice.SetRenderTarget(screenshot)
|
|
|
|
Core.Draw()
|
|
|
|
Core.GraphicsDevice.SetRenderTarget(Nothing)
|
|
|
|
Dim stream As Stream = File.OpenWrite(GameController.GamePath & "\screenshots\" & fileName)
|
|
screenshot.SaveAsPng(stream, Core.windowSize.Width, Core.windowSize.Height)
|
|
stream.Dispose()
|
|
End If
|
|
|
|
Core.GameMessage.SetupText(Localization.GetString("game_message_screenshot") & fileName, FontManager.MainFont, Color.White)
|
|
Core.GameMessage.ShowMessage(12, Core.GraphicsDevice)
|
|
Catch ex As Exception
|
|
Logger.Log(Logger.LogTypes.ErrorMessage, "Basic.vb: " & Localization.GetString("game_message_screenshot_failed") & ". More information: " & ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Shared Sub ToggleFullScreen()
|
|
If Core.GraphicsManager.IsFullScreen = False Then
|
|
' MonoGame Bug > GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width != System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
|
|
' MonoGame Bug > GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height != System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
|
|
' Temp Fix just in case someone else face this as well.
|
|
If GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width <> Windows.Forms.Screen.PrimaryScreen.Bounds.Width OrElse
|
|
GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height <> Windows.Forms.Screen.PrimaryScreen.Bounds.Height Then
|
|
Core.GraphicsManager.PreferredBackBufferWidth = Windows.Forms.Screen.PrimaryScreen.Bounds.Width
|
|
Core.GraphicsManager.PreferredBackBufferHeight = Windows.Forms.Screen.PrimaryScreen.Bounds.Height
|
|
Core.windowSize = New Rectangle(0, 0, Windows.Forms.Screen.PrimaryScreen.Bounds.Width, Windows.Forms.Screen.PrimaryScreen.Bounds.Height)
|
|
Else
|
|
Core.GraphicsManager.PreferredBackBufferWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width
|
|
Core.GraphicsManager.PreferredBackBufferHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height
|
|
Core.windowSize = New Rectangle(0, 0, GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width, GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height)
|
|
End If
|
|
|
|
Windows.Forms.Application.VisualStyleState = Windows.Forms.VisualStyles.VisualStyleState.ClientAndNonClientAreasEnabled
|
|
|
|
Core.GraphicsManager.ToggleFullScreen()
|
|
|
|
Core.GameMessage.ShowMessage(Localization.GetString("game_message_fullscreen_on"), 12, FontManager.MainFont, Color.White)
|
|
Else
|
|
Core.GraphicsManager.PreferredBackBufferWidth = 1200
|
|
Core.GraphicsManager.PreferredBackBufferHeight = 680
|
|
Core.windowSize = New Rectangle(0, 0, 1200, 680)
|
|
|
|
Windows.Forms.Application.VisualStyleState = Windows.Forms.VisualStyles.VisualStyleState.ClientAndNonClientAreasEnabled
|
|
|
|
Core.GraphicsManager.ToggleFullScreen()
|
|
|
|
Core.GameMessage.ShowMessage(Localization.GetString("game_message_fullscreen_off"), 12, FontManager.MainFont, Color.White)
|
|
End If
|
|
|
|
Core.GraphicsManager.ApplyChanges()
|
|
NetworkPlayer.ScreenRegionChanged()
|
|
End Sub
|
|
|
|
End Class |