From 328df182c91763589e416b9512f99116c282750c Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Fri, 23 Oct 2015 10:52:50 +1100 Subject: [PATCH] Make number of chatlines configurable. --- ClassicalSharp/2D/Drawing/GdiPlusDrawer2D.cs | 5 +-- ClassicalSharp/2D/Screens/ChatScreen.cs | 3 +- .../2D/Screens/Menu/OptionsScreen.cs | 36 +++++++++++-------- ClassicalSharp/Game/Game.cs | 2 ++ ClassicalSharp/Utils/Options.cs | 1 + 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/ClassicalSharp/2D/Drawing/GdiPlusDrawer2D.cs b/ClassicalSharp/2D/Drawing/GdiPlusDrawer2D.cs index 1ae6e8d10..15d5d1958 100644 --- a/ClassicalSharp/2D/Drawing/GdiPlusDrawer2D.cs +++ b/ClassicalSharp/2D/Drawing/GdiPlusDrawer2D.cs @@ -132,10 +132,7 @@ namespace ClassicalSharp { return bmp; } - public override Size MeasureSize( ref DrawTextArgs args ) { - if( String.IsNullOrEmpty( args.Text ) ) - return Size.Empty; - + public override Size MeasureSize( ref DrawTextArgs args ) { GetTextParts( args.Text ); SizeF total = SizeF.Empty; for( int i = 0; i < parts.Count; i++ ) { diff --git a/ClassicalSharp/2D/Screens/ChatScreen.cs b/ClassicalSharp/2D/Screens/ChatScreen.cs index aef6512e5..1c8d40e7a 100644 --- a/ClassicalSharp/2D/Screens/ChatScreen.cs +++ b/ClassicalSharp/2D/Screens/ChatScreen.cs @@ -8,9 +8,10 @@ namespace ClassicalSharp { public class ChatScreen : Screen { public ChatScreen( Game game ) : base( game ) { + chatLines = game.ChatLines; } - const int chatLines = 12; + int chatLines; Texture announcementTex; TextInputWidget textInput; TextGroupWidget status, bottomRight, normalChat; diff --git a/ClassicalSharp/2D/Screens/Menu/OptionsScreen.cs b/ClassicalSharp/2D/Screens/Menu/OptionsScreen.cs index c60ead5a1..bf9bde7b2 100644 --- a/ClassicalSharp/2D/Screens/Menu/OptionsScreen.cs +++ b/ClassicalSharp/2D/Screens/Menu/OptionsScreen.cs @@ -18,34 +18,39 @@ namespace ClassicalSharp { g => g.ShowFPS ? "yes" : "no", (g, v) => g.ShowFPS = v == "yes" ), + Make( 140, -50, "Chat lines", Anchor.Centre, OnWidgetClick, + g => g.ChatLines.ToString(), + (g, v) => { g.ChatLines = Int32.Parse( v ); + Options.Set( OptionsKey.ChatLines, v ); } ), + Make( -140, 0, "View distance", Anchor.Centre, OnWidgetClick, g => g.ViewDistance.ToString(), (g, v) => g.SetViewDistance( Int32.Parse( v ) ) ), - Make( -140, 50, "VSync active", Anchor.Centre, OnWidgetClick, - g => g.VSync ? "yes" : "no", - (g, v) => g.Graphics.SetVSync( g, v == "yes" ) ), - - Make( 140, -50, "Mouse sensitivity", Anchor.Centre, OnWidgetClick, - g => g.MouseSensitivity.ToString(), - (g, v) => { g.MouseSensitivity = Int32.Parse( v ); - Options.Set( OptionsKey.Sensitivity, v ); } ), - Make( 140, 0, "Chat font size", Anchor.Centre, OnWidgetClick, g => g.Chat.FontSize.ToString(), (g, v) => { g.Chat.FontSize = Int32.Parse( v ); Options.Set( OptionsKey.FontSize, v ); } ), - !network.IsSinglePlayer ? null : - Make( -140, -100, "Singleplayer physics", Anchor.Centre, OnWidgetClick, - g => ((SinglePlayerServer)network).physics.Enabled ? "yes" : "no", - (g, v) => ((SinglePlayerServer)network).physics.Enabled = (v == "yes") ), + Make( -140, 50, "VSync active", Anchor.Centre, OnWidgetClick, + g => g.VSync ? "yes" : "no", + (g, v) => g.Graphics.SetVSync( g, v == "yes" ) ), + + Make( -140, -100, "Mouse sensitivity", Anchor.Centre, OnWidgetClick, + g => g.MouseSensitivity.ToString(), + (g, v) => { g.MouseSensitivity = Int32.Parse( v ); + Options.Set( OptionsKey.Sensitivity, v ); } ), Make( 140, -100, "Speed multiplier", Anchor.Centre, OnWidgetClick, g => g.LocalPlayer.SpeedMultiplier.ToString(), (g, v) => { g.LocalPlayer.SpeedMultiplier = Int32.Parse( v ); Options.Set( OptionsKey.Speed, v ); } ), + !network.IsSinglePlayer ? null : + Make( -140, -150, "Singleplayer physics", Anchor.Centre, OnWidgetClick, + g => ((SinglePlayerServer)network).physics.Enabled ? "yes" : "no", + (g, v) => ((SinglePlayerServer)network).physics.Enabled = (v == "yes") ), + Make( 140, 50, "Key mappings", Anchor.Centre, (g, w) => g.SetNewScreen( new KeyMappingsScreen( g ) ), null, null ), @@ -55,12 +60,13 @@ namespace ClassicalSharp { }; validators = new MenuInputValidator[] { new BooleanValidator(), + new IntegerValidator( 1, 30 ), new IntegerValidator( 16, 4096 ), + new IntegerValidator( 6, 30 ), new BooleanValidator(), new IntegerValidator( 1, 100 ), - new IntegerValidator( 6, 30 ), + new IntegerValidator( 1, 50 ), network.IsSinglePlayer ? new BooleanValidator() : null, - new IntegerValidator( 1, 50 ), }; okayIndex = buttons.Length - 1; } diff --git a/ClassicalSharp/Game/Game.cs b/ClassicalSharp/Game/Game.cs index 1f2cffae1..6bb307f88 100644 --- a/ClassicalSharp/Game/Game.cs +++ b/ClassicalSharp/Game/Game.cs @@ -68,6 +68,7 @@ namespace ClassicalSharp { public AsyncDownloader AsyncDownloader; public Matrix4 View, Projection; public int MouseSensitivity = 40; + public int ChatLines = 12; public bool HideGui = false, ShowFPS = true; public Animations Animations; internal int CloudsTextureId, RainTextureId, SnowTextureId; @@ -105,6 +106,7 @@ namespace ClassicalSharp { MouseSensitivity = Options.GetInt( OptionsKey.Sensitivity, 1, 100, 40 ); BlockInfo = new BlockInfo(); BlockInfo.Init(); + ChatLines = Options.GetInt( OptionsKey.ChatLines, 1, 30, 12 ); ModelCache = new ModelCache( this ); ModelCache.InitCache(); diff --git a/ClassicalSharp/Utils/Options.cs b/ClassicalSharp/Utils/Options.cs index d9243a403..8688b3c2c 100644 --- a/ClassicalSharp/Utils/Options.cs +++ b/ClassicalSharp/Utils/Options.cs @@ -11,6 +11,7 @@ namespace ClassicalSharp { public const string FontSize = "chatfontsize"; public const string Sensitivity = "mousesensitivity"; public const string Speed = "speedmultiplier"; + public const string ChatLines = "chatlines"; public const string MouseLeft = "mouseleft"; public const string MouseMiddle = "mousemiddle";