From a8cd79abcddf8626cc572de02f06a2ad6318801d Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Wed, 20 Apr 2016 09:48:23 +1000 Subject: [PATCH] Fix client crashing after clicking 'chat scale', then 'use font', then 'chat scale' again. --- ClassicalSharp/2D/Screens/HudScreen.cs | 2 +- ClassicalSharp/2D/Screens/Menu/GuiOptionsScreen.cs | 5 +++-- .../2D/Screens/Menu/MenuOptionsScreen.cs | 1 + ClassicalSharp/2D/Widgets/BlockHotbarWidget.cs | 2 +- ClassicalSharp/Game/Game.cs | 11 +++++------ ClassicalSharp/Game/InputHandler.cs | 14 +++++++------- ClassicalSharp/Rendering/MapRenderer.cs | 1 - ClassicalSharp/Singleplayer/Server.cs | 2 +- 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/ClassicalSharp/2D/Screens/HudScreen.cs b/ClassicalSharp/2D/Screens/HudScreen.cs index d9d08b8bc..6b28a8d23 100644 --- a/ClassicalSharp/2D/Screens/HudScreen.cs +++ b/ClassicalSharp/2D/Screens/HudScreen.cs @@ -18,7 +18,7 @@ namespace ClassicalSharp.Gui { public override void Render( double delta ) { if( game.HideGui ) return; - bool showMinimal = game.GetActiveScreen.BlocksWorld; + bool showMinimal = game.ActiveScreen.BlocksWorld; if( chat.HandlesAllInput ) chat.RenderBackground(); api.Texturing = true; diff --git a/ClassicalSharp/2D/Screens/Menu/GuiOptionsScreen.cs b/ClassicalSharp/2D/Screens/Menu/GuiOptionsScreen.cs index 9ddc4f5b5..f14cf1c61 100644 --- a/ClassicalSharp/2D/Screens/Menu/GuiOptionsScreen.cs +++ b/ClassicalSharp/2D/Screens/Menu/GuiOptionsScreen.cs @@ -79,8 +79,6 @@ namespace ClassicalSharp.Gui { base.Dispose(); base.Init(); game.RefreshHud(); - if( selIndex >= 0 ) - selectedWidget = (ButtonWidget)widgets[selIndex]; for( int i = 0; i < widgets.Length; i++) { if( widgets[i] == null || !(widgets[i] is ButtonWidget)) { @@ -91,6 +89,9 @@ namespace ClassicalSharp.Gui { btn.font = titleFont; btn.SetText( btn.Text ); } + + if( selIndex >= 0 ) + selectedWidget = (ButtonWidget)widgets[selIndex]; } void MakeValidators() { diff --git a/ClassicalSharp/2D/Screens/Menu/MenuOptionsScreen.cs b/ClassicalSharp/2D/Screens/Menu/MenuOptionsScreen.cs index 424b35518..81d4120e5 100644 --- a/ClassicalSharp/2D/Screens/Menu/MenuOptionsScreen.cs +++ b/ClassicalSharp/2D/Screens/Menu/MenuOptionsScreen.cs @@ -177,6 +177,7 @@ namespace ClassicalSharp.Gui { if( !canShow ) return; int index = Array.IndexOf( widgets, selectedWidget ); + if( index < 0 || index >= descriptions.Length ) return; string[] desc = descriptions[index]; if( desc == null ) return; MakeExtendedHelp( desc ); diff --git a/ClassicalSharp/2D/Widgets/BlockHotbarWidget.cs b/ClassicalSharp/2D/Widgets/BlockHotbarWidget.cs index dba8288c6..51faa047b 100644 --- a/ClassicalSharp/2D/Widgets/BlockHotbarWidget.cs +++ b/ClassicalSharp/2D/Widgets/BlockHotbarWidget.cs @@ -97,7 +97,7 @@ namespace ClassicalSharp.Gui { public override bool HandlesMouseClick( int mouseX, int mouseY, MouseButton button ) { if( button != MouseButton.Left || !Bounds.Contains( mouseX, mouseY ) ) return false; - InventoryScreen screen = game.GetActiveScreen as InventoryScreen; + InventoryScreen screen = game.ActiveScreen as InventoryScreen; if( screen == null ) return false; for( int i = 0; i < hotbarCount; i++ ) { diff --git a/ClassicalSharp/Game/Game.cs b/ClassicalSharp/Game/Game.cs index 3c16db356..1b4129443 100644 --- a/ClassicalSharp/Game/Game.cs +++ b/ClassicalSharp/Game/Game.cs @@ -205,13 +205,12 @@ namespace ClassicalSharp { UpdateProjection(); } - /// Gets whether the active screen handles all input. - public bool ScreenLockedInput { - get { return activeScreen == null ? hudScreen.HandlesAllInput : - activeScreen.HandlesAllInput; } // inlined here. - } + /// Gets whether the screen the user is currently interacting with + /// handles all input. + public bool ScreenLockedInput { get { return ActiveScreen.HandlesAllInput; } } - public Screen GetActiveScreen { + /// Gets the screen that the user is currently interacting with. + public Screen ActiveScreen { get { return activeScreen == null ? hudScreen : activeScreen; } } diff --git a/ClassicalSharp/Game/InputHandler.cs b/ClassicalSharp/Game/InputHandler.cs index c240b640d..75a737383 100644 --- a/ClassicalSharp/Game/InputHandler.cs +++ b/ClassicalSharp/Game/InputHandler.cs @@ -86,7 +86,7 @@ namespace ClassicalSharp { #region Event handlers void MouseButtonUp( object sender, MouseButtonEventArgs e ) { - if( !game.GetActiveScreen.HandlesMouseUp( e.X, e.Y, e.Button ) ) { + if( !game.ActiveScreen.HandlesMouseUp( e.X, e.Y, e.Button ) ) { if( game.Network.UsingPlayerClick && e.Button <= MouseButton.Middle ) { byte targetId = game.Players.GetClosetPlayer( game.LocalPlayer ); ButtonStateChanged( e.Button, false, targetId ); @@ -95,7 +95,7 @@ namespace ClassicalSharp { } void MouseButtonDown( object sender, MouseButtonEventArgs e ) { - if( !game.GetActiveScreen.HandlesMouseClick( e.X, e.Y, e.Button ) ) { + if( !game.ActiveScreen.HandlesMouseClick( e.X, e.Y, e.Button ) ) { bool left = e.Button == MouseButton.Left; bool middle = e.Button == MouseButton.Middle; bool right = e.Button == MouseButton.Right; @@ -106,13 +106,13 @@ namespace ClassicalSharp { } void MouseMove( object sender, MouseMoveEventArgs e ) { - if( !game.GetActiveScreen.HandlesMouseMove( e.X, e.Y ) ) { + if( !game.ActiveScreen.HandlesMouseMove( e.X, e.Y ) ) { } } float deltaAcc = 0; void MouseWheelChanged( object sender, MouseWheelEventArgs e ) { - if( game.GetActiveScreen.HandlesMouseScroll( e.Delta ) ) return; + if( game.ActiveScreen.HandlesMouseScroll( e.Delta ) ) return; Inventory inv = game.Inventory; bool hotbar = IsKeyDown( Key.AltLeft ) || IsKeyDown( Key.AltRight ); @@ -139,7 +139,7 @@ namespace ClassicalSharp { void KeyPressHandler( object sender, KeyPressEventArgs e ) { char key = e.KeyChar; - if( !game.GetActiveScreen.HandlesKeyPress( key ) ) { + if( !game.ActiveScreen.HandlesKeyPress( key ) ) { } } @@ -147,7 +147,7 @@ namespace ClassicalSharp { Key key = e.Key; if( SimulateMouse( key, false ) ) return; - if( !game.GetActiveScreen.HandlesKeyUp( key ) ) { + if( !game.ActiveScreen.HandlesKeyUp( key ) ) { if( key == Keys[KeyBinding.ZoomScrolling] ) SetFOV( game.DefaultFov, false ); } @@ -163,7 +163,7 @@ namespace ClassicalSharp { game.Exit(); } else if( key == Keys[KeyBinding.Screenshot] ) { game.screenshotRequested = true; - } else if( !game.GetActiveScreen.HandlesKeyDown( key ) ) { + } else if( !game.ActiveScreen.HandlesKeyDown( key ) ) { if( !HandleBuiltinKey( key ) && !game.LocalPlayer.HandleKeyDown( key ) ) HandleHotkey( key ); } diff --git a/ClassicalSharp/Rendering/MapRenderer.cs b/ClassicalSharp/Rendering/MapRenderer.cs index 492b53e3c..4b29db7e1 100644 --- a/ClassicalSharp/Rendering/MapRenderer.cs +++ b/ClassicalSharp/Rendering/MapRenderer.cs @@ -72,7 +72,6 @@ namespace ClassicalSharp.Renderers { api.SetBatchFormat( VertexFormat.P3fT2fC4b ); api.Texturing = true; api.AlphaTest = true; - Console.WriteLine( _1DUsed ); for( int batch = 0; batch < _1DUsed; batch++ ) { if( totalUsed[batch] <= 0 ) continue; diff --git a/ClassicalSharp/Singleplayer/Server.cs b/ClassicalSharp/Singleplayer/Server.cs index a6ac02f32..e86bafb13 100644 --- a/ClassicalSharp/Singleplayer/Server.cs +++ b/ClassicalSharp/Singleplayer/Server.cs @@ -84,7 +84,7 @@ namespace ClassicalSharp.Singleplayer { } else { string state = generator.CurrentState; float progress = generator.CurrentProgress; - LoadingMapScreen screen = ((LoadingMapScreen)game.GetActiveScreen); + LoadingMapScreen screen = ((LoadingMapScreen)game.ActiveScreen); screen.SetProgress( progress ); if( state != lastState ) {