diff --git a/Subsurface/Source/GUI/GUITextBlock.cs b/Subsurface/Source/GUI/GUITextBlock.cs index ecbe20031..d4b5331b3 100644 --- a/Subsurface/Source/GUI/GUITextBlock.cs +++ b/Subsurface/Source/GUI/GUITextBlock.cs @@ -26,8 +26,8 @@ namespace Barotrauma public bool Wrap; - private bool overflowScrollActive; - public bool OverflowScroll; + private bool overflowClipActive; + public bool OverflowClip; private float textDepth; @@ -195,7 +195,7 @@ namespace Barotrauma { if (text == null) return; - overflowScrollActive = false; + overflowClipActive = false; wrappedText = text; @@ -206,18 +206,18 @@ namespace Barotrauma wrappedText = ToolBox.WrapText(text, rect.Width - padding.X - padding.Z, Font, textScale); size = MeasureText(wrappedText); } - else if (OverflowScroll) + else if (OverflowClip) { - overflowScrollActive = size.X > rect.Width; + overflowClipActive = size.X > rect.Width; } textPos = new Vector2(rect.Width / 2.0f, rect.Height / 2.0f); origin = size * 0.5f; - if (textAlignment.HasFlag(Alignment.Left) && !overflowScrollActive) + if (textAlignment.HasFlag(Alignment.Left) && !overflowClipActive) origin.X += (rect.Width / 2.0f - padding.X) - size.X / 2; - if (textAlignment.HasFlag(Alignment.Right) || overflowScrollActive) + if (textAlignment.HasFlag(Alignment.Right) || overflowClipActive) origin.X -= (rect.Width / 2.0f - padding.Z) - size.X / 2; if (textAlignment.HasFlag(Alignment.Top)) @@ -279,7 +279,7 @@ namespace Barotrauma if (TextGetter != null) text = TextGetter(); - if (overflowScrollActive) GameMain.CurrGraphicsDevice.ScissorRectangle = rect; + if (overflowClipActive) GameMain.CurrGraphicsDevice.ScissorRectangle = rect; if (!string.IsNullOrEmpty(text)) { @@ -291,7 +291,7 @@ namespace Barotrauma SpriteEffects.None, textDepth); } - if (overflowScrollActive) GameMain.CurrGraphicsDevice.ScissorRectangle = new Rectangle(0, 0, GameMain.GraphicsWidth, GameMain.GraphicsHeight); + if (overflowClipActive) GameMain.CurrGraphicsDevice.ScissorRectangle = new Rectangle(0, 0, GameMain.GraphicsWidth, GameMain.GraphicsHeight); DrawChildren(spriteBatch); diff --git a/Subsurface/Source/GUI/GUITextBox.cs b/Subsurface/Source/GUI/GUITextBox.cs index 2390cb7d7..2c89b42e3 100644 --- a/Subsurface/Source/GUI/GUITextBox.cs +++ b/Subsurface/Source/GUI/GUITextBox.cs @@ -27,6 +27,8 @@ namespace Barotrauma public OnTextChangedHandler OnTextChanged; public bool CaretEnabled; + + private int? maxTextWidth; public GUITextBlock.TextGetterHandler TextGetter { @@ -40,12 +42,17 @@ namespace Barotrauma set { textBlock.Wrap = value; } } - public bool LimitText + public int? MaxTextWidth { - get { return textBlock.LimitText; } - set { textBlock.LimitText = value; } + get { return maxTextWidth; } + set + { + textBlock.OverflowClip = value != null && (int)value > textBlock.Rect.Width - textBlock.Padding.X - textBlock.Padding.Z; + + maxTextWidth = value; + } } - + public bool Enabled { get; @@ -118,7 +125,7 @@ namespace Barotrauma } } - public String Text + public string Text { get { @@ -126,28 +133,22 @@ namespace Barotrauma } set { + if (textBlock.Text == value) return; + textBlock.Text = value; if (textBlock.Text == null) textBlock.Text = ""; if (textBlock.Text != "") { - /*//if you attempt to display a Character that is not in your font - //you will get an exception, so we filter the characters - //remove the filtering if you're using a default Character in your spritefont - String filtered = ""; - foreach (char c in value) + if (!Wrap) { - if (Font.Characters.Contains(c)) filtered += c; - } + int maxWidth = MaxTextWidth == null ? (int)(textBlock.Rect.Width - textBlock.Padding.X - textBlock.Padding.Z) : (int)MaxTextWidth; - textBlock.Text = filtered;*/ - - if (!Wrap && Font.MeasureString(textBlock.Text).X > rect.Width) - { - //ensure that text cannot be larger than the box - Text = textBlock.Text.Substring(0, textBlock.Text.Length - 1); + if (Font.MeasureString(textBlock.Text).X > maxWidth) + { + Text = textBlock.Text.Substring(0, textBlock.Text.Length - 1); + } } - } } } @@ -178,8 +179,9 @@ namespace Barotrauma if (parent != null) parent.AddChild(this); - textBlock = new GUITextBlock(new Rectangle(0,0,0,0), "", color, textColor, textAlignment, style, this); + textBlock = new GUITextBlock(new Rectangle(0,0,0,0), "", color, textColor, textAlignment, style, this); + Font = GUI.Font; GUI.Style.Apply(textBlock, style == "" ? "GUITextBox" : style); diff --git a/Subsurface/Source/Networking/ChatMessage.cs b/Subsurface/Source/Networking/ChatMessage.cs index 4386318c0..7bd7a9735 100644 --- a/Subsurface/Source/Networking/ChatMessage.cs +++ b/Subsurface/Source/Networking/ChatMessage.cs @@ -1,10 +1,6 @@ -using Barotrauma.Items.Components; -using Barotrauma.Networking.ReliableMessages; -using Lidgren.Network; +using Lidgren.Network; using Microsoft.Xna.Framework; using System; -using System.Collections.Generic; -using System.Linq; using System.Text; namespace Barotrauma.Networking @@ -18,8 +14,15 @@ namespace Barotrauma.Networking class ChatMessage { public const float SpeakRange = 2000.0f; - - public static Color[] MessageColor = { Color.White, Color.Red, new Color(63, 72, 204), Color.LightGreen, Color.Yellow }; + + public static Color[] MessageColor = + { + new Color(125, 140, 153), + new Color(204, 74, 78), + new Color(63, 72, 204), + new Color(157, 225, 160), + new Color(228, 199, 27) + }; public readonly string Text; diff --git a/Subsurface/Source/Networking/NetworkMember.cs b/Subsurface/Source/Networking/NetworkMember.cs index e252ee869..4198f8209 100644 --- a/Subsurface/Source/Networking/NetworkMember.cs +++ b/Subsurface/Source/Networking/NetworkMember.cs @@ -147,6 +147,7 @@ namespace Barotrauma.Networking new Rectangle(chatBox.Rect.X, chatBox.Rect.Y + chatBox.Rect.Height + 20, chatBox.Rect.Width, 25), Color.White * 0.5f, Color.Black, Alignment.TopLeft, Alignment.Left, "", inGameHUD); chatMsgBox.Font = GUI.SmallFont; + chatMsgBox.MaxTextWidth = chatBox.Rect.Width * 2; chatMsgBox.Padding = Vector4.Zero; chatMsgBox.OnEnterPressed = EnterChatMessage; chatMsgBox.OnTextChanged = TypingChatMessage; @@ -309,10 +310,9 @@ namespace Barotrauma.Networking displayedText = message.SenderName + ": " + displayedText; } - GUITextBlock msg = new GUITextBlock(new Rectangle(0, 0, 0, 20), displayedText, + GUITextBlock msg = new GUITextBlock(new Rectangle(0, 0, chatBox.Rect.Width - 40, 0), displayedText, ((chatBox.CountChildren % 2) == 0) ? Color.Transparent : Color.Black * 0.1f, message.Color, - Alignment.Left, null, null, true); - msg.Font = GUI.SmallFont; + Alignment.Left, Alignment.TopLeft, "", null, true, GUI.SmallFont); msg.UserData = message.SenderName; msg.Padding = new Vector4(20.0f, 0, 0, 0); diff --git a/Subsurface/Source/Networking/ServerLog.cs b/Subsurface/Source/Networking/ServerLog.cs index bcb15c838..2c0df9748 100644 --- a/Subsurface/Source/Networking/ServerLog.cs +++ b/Subsurface/Source/Networking/ServerLog.cs @@ -59,21 +59,21 @@ namespace Barotrauma.Networking { LogFrame = new GUIFrame(new Rectangle(0, 0, GameMain.GraphicsWidth, GameMain.GraphicsHeight), Color.Black * 0.5f); - GUIFrame innerFrame = new GUIFrame(new Rectangle(0,0,400, 400), null, Alignment.Center, "", LogFrame); - innerFrame.Padding = new Vector4(10.0f, 10.0f, 10.0f, 10.0f); + GUIFrame innerFrame = new GUIFrame(new Rectangle(0, 0, 500, 400), null, Alignment.Center, "", LogFrame); + innerFrame.Padding = new Vector4(10.0f, 20.0f, 10.0f, 20.0f); - new GUITextBlock(new Rectangle(-200,0,100,15), "Filter", "", Alignment.TopRight, Alignment.TopRight, innerFrame, false, GUI.SmallFont); + new GUITextBlock(new Rectangle(-200, 0, 100, 15), "Filter", "", Alignment.TopRight, Alignment.TopRight, innerFrame, false, GUI.SmallFont); - GUITextBox searchBox = new GUITextBox(new Rectangle(-20,0,180,15), Alignment.TopRight, "", innerFrame); + GUITextBox searchBox = new GUITextBox(new Rectangle(-20, 0, 180, 15), Alignment.TopRight, "", innerFrame); searchBox.Font = GUI.SmallFont; searchBox.OnTextChanged = FilterMessages; GUIComponent.KeyboardDispatcher.Subscriber = searchBox; - var clearButton = new GUIButton(new Rectangle(0,0,15,15), "x", Alignment.TopRight, "", innerFrame); + var clearButton = new GUIButton(new Rectangle(0, 0, 15, 15), "x", Alignment.TopRight, "", innerFrame); clearButton.OnClicked = ClearFilter; clearButton.UserData = searchBox; - listBox = new GUIListBox(new Rectangle(0,20,0,335), "", innerFrame); + listBox = new GUIListBox(new Rectangle(0, 30, 0, 310), "", innerFrame); var currLines = lines.ToList(); diff --git a/Subsurface/Source/Screens/EditMapScreen.cs b/Subsurface/Source/Screens/EditMapScreen.cs index 92467963d..47ef98279 100644 --- a/Subsurface/Source/Screens/EditMapScreen.cs +++ b/Subsurface/Source/Screens/EditMapScreen.cs @@ -193,10 +193,10 @@ namespace Barotrauma var catButton = new GUIButton(new Rectangle(0, y, 0, 20), category.ToString(), Alignment.Left, "", leftPanel); catButton.UserData = i; catButton.OnClicked = SelectTab; - y+=25; + y += 25; GUItabs[i] = new GUIFrame(new Rectangle(GameMain.GraphicsWidth / 2 - width / 2, GameMain.GraphicsHeight / 2 - height / 2, width, height), ""); - GUItabs[i].Padding = new Vector4(10.0f, 30.0f, 10.0f, 10.0f); + GUItabs[i].Padding = new Vector4(10.0f, 30.0f, 10.0f, 20.0f); new GUITextBlock(new Rectangle(-200, 0, 100, 15), "Filter", "", Alignment.TopRight, Alignment.CenterRight, GUItabs[i], false, GUI.SmallFont); diff --git a/Subsurface/Source/Screens/NetLobbyScreen.cs b/Subsurface/Source/Screens/NetLobbyScreen.cs index 401bdd02b..5414fb503 100644 --- a/Subsurface/Source/Screens/NetLobbyScreen.cs +++ b/Subsurface/Source/Screens/NetLobbyScreen.cs @@ -3,9 +3,6 @@ using Lidgren.Network; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Barotrauma.Networking; -using FarseerPhysics; -using FarseerPhysics.Factories; -using FarseerPhysics.Dynamics; using System.IO; using System.Linq; using System.Collections.Generic; @@ -188,6 +185,7 @@ namespace Barotrauma chatBox = new GUIListBox(new Rectangle(0,0,0,chatFrame.Rect.Height-80), Color.White, "", chatFrame); textBox = new GUITextBox(new Rectangle(0, 25, 0, 25), Alignment.Bottom, "", chatFrame); + textBox.MaxTextWidth = textBox.Rect.Width * 2; textBox.Font = GUI.SmallFont; //player info panel ------------------------------------------------------------ @@ -1031,16 +1029,15 @@ namespace Barotrauma { float prevSize = chatBox.BarSize; - while (chatBox.CountChildren>20) + while (chatBox.CountChildren > 20) { chatBox.RemoveChild(chatBox.children[1]); } - GUITextBlock msg = new GUITextBlock(new Rectangle(0, 0, 0, 20), + GUITextBlock msg = new GUITextBlock(new Rectangle(0, 0, chatBox.Rect.Width-20, 0), message.TextWithSender, ((chatBox.CountChildren % 2) == 0) ? Color.Transparent : Color.Black*0.1f, message.Color, - Alignment.Left, "", null, true); - msg.Font = GUI.SmallFont; + Alignment.Left, Alignment.TopLeft, "", null, true, GUI.SmallFont); msg.UserData = message.SenderName; msg.CanBeFocused = false;