Fix client crashing after clicking 'chat scale', then 'use font', then 'chat scale' again.

This commit is contained in:
UnknownShadow200 2016-04-20 09:48:23 +10:00
parent 8956cc5abd
commit a8cd79abcd
8 changed files with 19 additions and 19 deletions

View File

@ -18,7 +18,7 @@ namespace ClassicalSharp.Gui {
public override void Render( double delta ) { public override void Render( double delta ) {
if( game.HideGui ) return; if( game.HideGui ) return;
bool showMinimal = game.GetActiveScreen.BlocksWorld; bool showMinimal = game.ActiveScreen.BlocksWorld;
if( chat.HandlesAllInput ) if( chat.HandlesAllInput )
chat.RenderBackground(); chat.RenderBackground();
api.Texturing = true; api.Texturing = true;

View File

@ -79,8 +79,6 @@ namespace ClassicalSharp.Gui {
base.Dispose(); base.Dispose();
base.Init(); base.Init();
game.RefreshHud(); game.RefreshHud();
if( selIndex >= 0 )
selectedWidget = (ButtonWidget)widgets[selIndex];
for( int i = 0; i < widgets.Length; i++) { for( int i = 0; i < widgets.Length; i++) {
if( widgets[i] == null || !(widgets[i] is ButtonWidget)) { if( widgets[i] == null || !(widgets[i] is ButtonWidget)) {
@ -91,6 +89,9 @@ namespace ClassicalSharp.Gui {
btn.font = titleFont; btn.font = titleFont;
btn.SetText( btn.Text ); btn.SetText( btn.Text );
} }
if( selIndex >= 0 )
selectedWidget = (ButtonWidget)widgets[selIndex];
} }
void MakeValidators() { void MakeValidators() {

View File

@ -177,6 +177,7 @@ namespace ClassicalSharp.Gui {
if( !canShow ) return; if( !canShow ) return;
int index = Array.IndexOf<Widget>( widgets, selectedWidget ); int index = Array.IndexOf<Widget>( widgets, selectedWidget );
if( index < 0 || index >= descriptions.Length ) return;
string[] desc = descriptions[index]; string[] desc = descriptions[index];
if( desc == null ) return; if( desc == null ) return;
MakeExtendedHelp( desc ); MakeExtendedHelp( desc );

View File

@ -97,7 +97,7 @@ namespace ClassicalSharp.Gui {
public override bool HandlesMouseClick( int mouseX, int mouseY, MouseButton button ) { public override bool HandlesMouseClick( int mouseX, int mouseY, MouseButton button ) {
if( button != MouseButton.Left || !Bounds.Contains( mouseX, mouseY ) ) if( button != MouseButton.Left || !Bounds.Contains( mouseX, mouseY ) )
return false; return false;
InventoryScreen screen = game.GetActiveScreen as InventoryScreen; InventoryScreen screen = game.ActiveScreen as InventoryScreen;
if( screen == null ) return false; if( screen == null ) return false;
for( int i = 0; i < hotbarCount; i++ ) { for( int i = 0; i < hotbarCount; i++ ) {

View File

@ -205,13 +205,12 @@ namespace ClassicalSharp {
UpdateProjection(); UpdateProjection();
} }
/// <summary> Gets whether the active screen handles all input. </summary> /// <summary> Gets whether the screen the user is currently interacting with
public bool ScreenLockedInput { /// handles all input. </summary>
get { return activeScreen == null ? hudScreen.HandlesAllInput : public bool ScreenLockedInput { get { return ActiveScreen.HandlesAllInput; } }
activeScreen.HandlesAllInput; } // inlined here.
}
public Screen GetActiveScreen { /// <summary> Gets the screen that the user is currently interacting with. </summary>
public Screen ActiveScreen {
get { return activeScreen == null ? hudScreen : activeScreen; } get { return activeScreen == null ? hudScreen : activeScreen; }
} }

View File

@ -86,7 +86,7 @@ namespace ClassicalSharp {
#region Event handlers #region Event handlers
void MouseButtonUp( object sender, MouseButtonEventArgs e ) { 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 ) { if( game.Network.UsingPlayerClick && e.Button <= MouseButton.Middle ) {
byte targetId = game.Players.GetClosetPlayer( game.LocalPlayer ); byte targetId = game.Players.GetClosetPlayer( game.LocalPlayer );
ButtonStateChanged( e.Button, false, targetId ); ButtonStateChanged( e.Button, false, targetId );
@ -95,7 +95,7 @@ namespace ClassicalSharp {
} }
void MouseButtonDown( object sender, MouseButtonEventArgs e ) { 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 left = e.Button == MouseButton.Left;
bool middle = e.Button == MouseButton.Middle; bool middle = e.Button == MouseButton.Middle;
bool right = e.Button == MouseButton.Right; bool right = e.Button == MouseButton.Right;
@ -106,13 +106,13 @@ namespace ClassicalSharp {
} }
void MouseMove( object sender, MouseMoveEventArgs e ) { 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; float deltaAcc = 0;
void MouseWheelChanged( object sender, MouseWheelEventArgs e ) { void MouseWheelChanged( object sender, MouseWheelEventArgs e ) {
if( game.GetActiveScreen.HandlesMouseScroll( e.Delta ) ) return; if( game.ActiveScreen.HandlesMouseScroll( e.Delta ) ) return;
Inventory inv = game.Inventory; Inventory inv = game.Inventory;
bool hotbar = IsKeyDown( Key.AltLeft ) || IsKeyDown( Key.AltRight ); bool hotbar = IsKeyDown( Key.AltLeft ) || IsKeyDown( Key.AltRight );
@ -139,7 +139,7 @@ namespace ClassicalSharp {
void KeyPressHandler( object sender, KeyPressEventArgs e ) { void KeyPressHandler( object sender, KeyPressEventArgs e ) {
char key = e.KeyChar; char key = e.KeyChar;
if( !game.GetActiveScreen.HandlesKeyPress( key ) ) { if( !game.ActiveScreen.HandlesKeyPress( key ) ) {
} }
} }
@ -147,7 +147,7 @@ namespace ClassicalSharp {
Key key = e.Key; Key key = e.Key;
if( SimulateMouse( key, false ) ) return; if( SimulateMouse( key, false ) ) return;
if( !game.GetActiveScreen.HandlesKeyUp( key ) ) { if( !game.ActiveScreen.HandlesKeyUp( key ) ) {
if( key == Keys[KeyBinding.ZoomScrolling] ) if( key == Keys[KeyBinding.ZoomScrolling] )
SetFOV( game.DefaultFov, false ); SetFOV( game.DefaultFov, false );
} }
@ -163,7 +163,7 @@ namespace ClassicalSharp {
game.Exit(); game.Exit();
} else if( key == Keys[KeyBinding.Screenshot] ) { } else if( key == Keys[KeyBinding.Screenshot] ) {
game.screenshotRequested = true; game.screenshotRequested = true;
} else if( !game.GetActiveScreen.HandlesKeyDown( key ) ) { } else if( !game.ActiveScreen.HandlesKeyDown( key ) ) {
if( !HandleBuiltinKey( key ) && !game.LocalPlayer.HandleKeyDown( key ) ) if( !HandleBuiltinKey( key ) && !game.LocalPlayer.HandleKeyDown( key ) )
HandleHotkey( key ); HandleHotkey( key );
} }

View File

@ -72,7 +72,6 @@ namespace ClassicalSharp.Renderers {
api.SetBatchFormat( VertexFormat.P3fT2fC4b ); api.SetBatchFormat( VertexFormat.P3fT2fC4b );
api.Texturing = true; api.Texturing = true;
api.AlphaTest = true; api.AlphaTest = true;
Console.WriteLine( _1DUsed );
for( int batch = 0; batch < _1DUsed; batch++ ) { for( int batch = 0; batch < _1DUsed; batch++ ) {
if( totalUsed[batch] <= 0 ) continue; if( totalUsed[batch] <= 0 ) continue;

View File

@ -84,7 +84,7 @@ namespace ClassicalSharp.Singleplayer {
} else { } else {
string state = generator.CurrentState; string state = generator.CurrentState;
float progress = generator.CurrentProgress; float progress = generator.CurrentProgress;
LoadingMapScreen screen = ((LoadingMapScreen)game.GetActiveScreen); LoadingMapScreen screen = ((LoadingMapScreen)game.ActiveScreen);
screen.SetProgress( progress ); screen.SetProgress( progress );
if( state != lastState ) { if( state != lastState ) {