From cc6fc6c0088ee3b81437254cbaf6241f91b3d95c Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 9 Aug 2017 14:17:51 -0400 Subject: [PATCH] stuff --- ShiftOS.Frontend/Apps/ChatClient.cs | 14 +++--- ShiftOS.Frontend/Apps/CodeShop.cs | 6 +-- ShiftOS.Frontend/Apps/Pong.cs | 8 ++-- ShiftOS.Frontend/Apps/SkinLoader.cs | 6 +-- ShiftOS.Frontend/Apps/Terminal.cs | 44 +++++++++---------- ShiftOS.Frontend/Desktop/Desktop.cs | 16 +++---- ShiftOS.Frontend/Desktop/WindowManager.cs | 2 +- ShiftOS.Frontend/GUI/Button.cs | 13 +++--- ShiftOS.Frontend/GUI/ListView.cs | 2 +- ShiftOS.Frontend/GUI/TextControl.cs | 2 +- .../GraphicsSubsystem/GraphicsContext.cs | 11 ++--- ShiftOS.Frontend/MainMenu.cs | 2 +- ShiftOS.Frontend/ShiftOS.cs | 8 ++-- 13 files changed, 59 insertions(+), 75 deletions(-) diff --git a/ShiftOS.Frontend/Apps/ChatClient.cs b/ShiftOS.Frontend/Apps/ChatClient.cs index c57f2a3..efcce0e 100644 --- a/ShiftOS.Frontend/Apps/ChatClient.cs +++ b/ShiftOS.Frontend/Apps/ChatClient.cs @@ -70,11 +70,7 @@ namespace ShiftOS.Frontend.Apps int inRight = (Width - _send.Width - 20); _input.AutoSize = false; _input.Width = inRight - _input.X; - if (requiresRepaint) - { - Invalidate(); - requiresRepaint = false; - } + } public bool ChannelConnected @@ -171,13 +167,13 @@ namespace ShiftOS.Frontend.Apps break; var tsProper = $"[{msg.Timestamp.Hour.ToString("##")}:{msg.Timestamp.Minute.ToString("##")}]"; var nnProper = $"<{msg.Author}>"; - var tsMeasure = gfx.MeasureString(tsProper, LoadedSkin.TerminalFont); - var nnMeasure = gfx.MeasureString(nnProper, LoadedSkin.TerminalFont); + var tsMeasure = GraphicsContext.MeasureString(tsProper, LoadedSkin.TerminalFont); + var nnMeasure = GraphicsContext.MeasureString(nnProper, LoadedSkin.TerminalFont); int old = vertSeparatorLeft; vertSeparatorLeft = (int)Math.Round(Math.Max(vertSeparatorLeft, tsMeasure.X + nnGap + nnMeasure.X + 2)); if (old != vertSeparatorLeft) requiresRepaint = true; - var msgMeasure = gfx.MeasureString(msg.Message, LoadedSkin.TerminalFont, (Width - vertSeparatorLeft - 4) - messagesFromRight); + var msgMeasure = GraphicsContext.MeasureString(msg.Message, LoadedSkin.TerminalFont, (Width - vertSeparatorLeft - 4) - messagesFromRight); messagebottom -= (int)msgMeasure.Y; gfx.DrawString(tsProper, 0, messagebottom, LoadedSkin.ControlTextColor.ToMonoColor(), LoadedSkin.TerminalFont); var nnColor = Color.LightGreen; @@ -229,7 +225,7 @@ namespace ShiftOS.Frontend.Apps int usersStartY = messagesTop; foreach(var user in NetInfo.Channel.OnlineUsers.OrderBy(x=>x.Nickname)) { - var measure = gfx.MeasureString(user.Nickname, LoadedSkin.TerminalFont); + var measure = GraphicsContext.MeasureString(user.Nickname, LoadedSkin.TerminalFont); var nnColor = Color.LightGreen; if (user.Nickname == SaveSystem.CurrentSave.Username) diff --git a/ShiftOS.Frontend/Apps/CodeShop.cs b/ShiftOS.Frontend/Apps/CodeShop.cs index 009521c..46b1832 100644 --- a/ShiftOS.Frontend/Apps/CodeShop.cs +++ b/ShiftOS.Frontend/Apps/CodeShop.cs @@ -137,9 +137,9 @@ As you continue through your job, going further up the ranks, you will unlock ad } int wrapwidth = (Width - (upgradelist.X + upgradelist.Width)) - 45; - var titlemeasure = gfx.MeasureString(title, SkinEngine.LoadedSkin.Header2Font, wrapwidth); + var titlemeasure = GraphicsContext.MeasureString(title, SkinEngine.LoadedSkin.Header2Font, wrapwidth); - var descmeasure = gfx.MeasureString(desc, SkinEngine.LoadedSkin.MainFont, wrapwidth); + var descmeasure = GraphicsContext.MeasureString(desc, SkinEngine.LoadedSkin.MainFont, wrapwidth); int availablewidth = Width - (upgradelist.X + upgradelist.Width); int titlelocx = (availablewidth - (int)titlemeasure.X) / 2; @@ -152,7 +152,7 @@ As you continue through your job, going further up the ranks, you will unlock ad gfx.DrawString(desc, desclocx, desclocy, SkinEngine.LoadedSkin.ControlTextColor.ToMonoColor(), SkinEngine.LoadedSkin.MainFont, wrapwidth); string shiftorium = "Shiftorium"; - var smeasure = gfx.MeasureString(shiftorium, SkinEngine.LoadedSkin.HeaderFont); + var smeasure = GraphicsContext.MeasureString(shiftorium, SkinEngine.LoadedSkin.HeaderFont); gfx.DrawString(shiftorium, upgradelist.X + ((upgradelist.Width - (int)smeasure.X) / 2), 20, SkinEngine.LoadedSkin.ControlTextColor.ToMonoColor(), SkinEngine.LoadedSkin.HeaderFont); } } diff --git a/ShiftOS.Frontend/Apps/Pong.cs b/ShiftOS.Frontend/Apps/Pong.cs index 61b1dc9..7861c6c 100644 --- a/ShiftOS.Frontend/Apps/Pong.cs +++ b/ShiftOS.Frontend/Apps/Pong.cs @@ -100,7 +100,7 @@ namespace ShiftOS.Frontend.Apps ["%cp"] = codepointsToEarn.ToString() }); - var tSize = gfx.MeasureString(cp_text, SkinEngine.LoadedSkin.Header3Font); + var tSize = GraphicsContext.MeasureString(cp_text, SkinEngine.LoadedSkin.Header3Font); var tLoc = new Vector2((Width - (int)tSize.X) / 2, (Height - (int)tSize.Y) @@ -109,14 +109,14 @@ namespace ShiftOS.Frontend.Apps gfx.DrawString(cp_text, (int)tLoc.X, (int)tLoc.Y, SkinEngine.LoadedSkin.ControlTextColor.ToMonoColor(), SkinEngine.LoadedSkin.Header3Font); - tSize = gfx.MeasureString(counter, SkinEngine.LoadedSkin.Header2Font); + tSize = GraphicsContext.MeasureString(counter, SkinEngine.LoadedSkin.Header2Font); tLoc = new Vector2((Width - (int)tSize.X) / 2, (Height - (int)tSize.Y) / 2 ); gfx.DrawString(counter, (int)tLoc.X, (int)tLoc.Y, SkinEngine.LoadedSkin.ControlTextColor.ToMonoColor(), SkinEngine.LoadedSkin.Header2Font); - tSize = gfx.MeasureString(header, SkinEngine.LoadedSkin.Header2Font); + tSize = GraphicsContext.MeasureString(header, SkinEngine.LoadedSkin.Header2Font); tLoc = new Vector2((Width - (int)tSize.X) / 2, (Height - (int)tSize.Y) / 4 @@ -129,7 +129,7 @@ namespace ShiftOS.Frontend.Apps ["%level"] = level.ToString(), ["%time"] = secondsleft.ToString() }); - tSize = gfx.MeasureString(l, SkinEngine.LoadedSkin.Header3Font); + tSize = GraphicsContext.MeasureString(l, SkinEngine.LoadedSkin.Header3Font); tLoc = new Vector2((Width - (int)tSize.X) / 2, (tSize.Y) diff --git a/ShiftOS.Frontend/Apps/SkinLoader.cs b/ShiftOS.Frontend/Apps/SkinLoader.cs index 8711d92..b89952e 100644 --- a/ShiftOS.Frontend/Apps/SkinLoader.cs +++ b/ShiftOS.Frontend/Apps/SkinLoader.cs @@ -93,7 +93,7 @@ namespace ShiftOS.Frontend.Apps gfx.DrawRectangle(titlebarleft, _windowystart, titlebarwidth, titleheight, SkinTextures["titlebar"]); } //Now we draw the title text. - var textMeasure = gfx.MeasureString("Program window", titlefont); + var textMeasure = GraphicsContext.MeasureString("Program window", titlefont); Vector2 textloc; if (titletextcentered) textloc = new Vector2((titlebarwidth - textMeasure.X) / 2, @@ -363,7 +363,7 @@ namespace ShiftOS.Frontend.Apps { gfx.DrawRectangle(al_left.X, dp_position + al_left.Y, holderSize.Width, holderSize.Height, SkinTextures["applauncher"]); } - var altextmeasure = gfx.MeasureString(_skin.AppLauncherText, _skin.AppLauncherFont); + var altextmeasure = GraphicsContext.MeasureString(_skin.AppLauncherText, _skin.AppLauncherFont); int altextx = _previewxstart + (holderSize.Width - (int)altextmeasure.X) / 2; int altexty = _desktopystart + (holderSize.Height - (int)altextmeasure.Y) / 2; gfx.DrawString(_skin.AppLauncherText, altextx, altexty, _skin.AppLauncherTextColor.ToMonoColor(), _skin.AppLauncherFont); @@ -373,7 +373,7 @@ namespace ShiftOS.Frontend.Apps var panelClockTextColor = _skin.DesktopPanelClockColor.ToMonoColor(); string dateTimeString = "00:00:00 - localhost"; - var measure = gfx.MeasureString(dateTimeString, _skin.DesktopPanelClockFont); + var measure = GraphicsContext.MeasureString(dateTimeString, _skin.DesktopPanelClockFont); int panelclockleft = _previewxstart + (dp_width - (int)measure.X); int panelclockwidth = (dp_width - panelclockleft); diff --git a/ShiftOS.Frontend/Apps/Terminal.cs b/ShiftOS.Frontend/Apps/Terminal.cs index 6d01d9f..ee470ab 100644 --- a/ShiftOS.Frontend/Apps/Terminal.cs +++ b/ShiftOS.Frontend/Apps/Terminal.cs @@ -140,18 +140,15 @@ namespace ShiftOS.Frontend.Apps protected void RecalculateLayout() { - using(var gfx = Graphics.FromImage(new Bitmap(1, 1))) + var cloc = GetPointAtIndex(); + var csize = GraphicsContext.MeasureString("#", new Font(LoadedSkin.TerminalFont.Name, LoadedSkin.TerminalFont.Size * _zoomFactor, LoadedSkin.TerminalFont.Style)); + if (cloc.Y - _vertOffset < 0) { - var cloc = GetPointAtIndex(gfx); - var csize = gfx.MeasureString("#", new Font(LoadedSkin.TerminalFont.Name, LoadedSkin.TerminalFont.Size * _zoomFactor, LoadedSkin.TerminalFont.Style)); - if(cloc.Y - _vertOffset < 0) - { - _vertOffset += cloc.Y - _vertOffset; - } - while((cloc.Y + csize.Height) - _vertOffset > Height) - { - _vertOffset += csize.Height; - } + _vertOffset += cloc.Y - _vertOffset; + } + while ((cloc.Y + csize.Y) - _vertOffset > Height) + { + _vertOffset += csize.Y; } } @@ -176,23 +173,23 @@ namespace ShiftOS.Frontend.Apps /// /// A object used for font measurements /// the correct position of the d*ng caret. yw - public System.Drawing.Point GetPointAtIndex(Graphics gfx) + public System.Drawing.Point GetPointAtIndex() { if (string.IsNullOrEmpty(Text)) return new System.Drawing.Point(2, 2); var font = new Font(LoadedSkin.TerminalFont.Name, LoadedSkin.TerminalFont.Size * _zoomFactor, LoadedSkin.TerminalFont.Style); int currline = GetCurrentLine(); string substring = String.Join(Environment.NewLine, Lines.Take(currline + 1)); - int h = (int)Math.Round(gfx.SmartMeasureString(substring, font, Width).Height - font.Height); + int h = (int)Math.Round(GraphicsContext.MeasureString(substring, font, Width).Y - font.Height); int linestart = String.Join(Environment.NewLine, Lines.Take(GetCurrentLine())).Length; - var lineMeasure = gfx.SmartMeasureString(Text.Substring(linestart, Index - linestart), font); - int w = (int)Math.Floor(lineMeasure.Width); + var lineMeasure = GraphicsContext.MeasureString(Text.Substring(linestart, Index - linestart), font); + int w = (int)Math.Floor(lineMeasure.X); while (w > Width) { w -= Width; - h += (int)lineMeasure.Height; + h += (int)lineMeasure.Y; } return new System.Drawing.Point(w, h); } @@ -389,15 +386,11 @@ namespace ShiftOS.Frontend.Apps //Draw the caret. if (blinkStatus == true) { - PointF cursorPos; - using (var cgfx = System.Drawing.Graphics.FromHwnd(IntPtr.Zero)) - { - cursorPos = GetPointAtIndex(cgfx); + PointF cursorPos = GetPointAtIndex(); + string caret = (Index < Text.Length) ? Text[Index].ToString() : " "; + var cursorSize = GraphicsContext.MeasureString(caret, font); - } - var cursorSize = gfx.MeasureString("#", font); - - var lineMeasure = gfx.MeasureString(Lines[GetCurrentLine()], font); + var lineMeasure = GraphicsContext.MeasureString(Lines[GetCurrentLine()], font); if (cursorPos.X > lineMeasure.X) { cursorPos.X = lineMeasure.X; @@ -465,12 +458,15 @@ namespace ShiftOS.Frontend.Apps public static class GraphicsExtensions { + + [Obsolete("Use GraphicsContext.MeasureString instead")] public static SizeF SmartMeasureString(this Graphics gfx, string s, Font font, int width) { var measure = System.Windows.Forms.TextRenderer.MeasureText(s, font, new Size(width, int.MaxValue)); return measure; } + [Obsolete("Use GraphicsContext.MeasureString instead")] public static SizeF SmartMeasureString(this Graphics gfx, string s, Font font) { return SmartMeasureString(gfx, s, font, int.MaxValue); diff --git a/ShiftOS.Frontend/Desktop/Desktop.cs b/ShiftOS.Frontend/Desktop/Desktop.cs index 352c764..82c7b9a 100644 --- a/ShiftOS.Frontend/Desktop/Desktop.cs +++ b/ShiftOS.Frontend/Desktop/Desktop.cs @@ -119,16 +119,14 @@ namespace ShiftOS.Frontend.Desktop int y = 0; int height = 0; int[] widths = new int[items.Length]; - using(var gfx = System.Drawing.Graphics.FromImage(new System.Drawing.Bitmap(1, 1))) - { LauncherItems.Clear(); for(int i = 0; i < items.Length; i++) { string name = Localization.Parse(items[i].DisplayData.Name); - var measure = gfx.SmartMeasureString(name, LoadedSkin.MainFont); - if (height < (int)measure.Height) - height = (int)measure.Height; - widths[i] = 120 + (int)measure.Width; + var measure = GraphicsContext.MeasureString(name, LoadedSkin.MainFont); + if (height < (int)measure.Y) + height = (int)measure.Y; + widths[i] = 120 + (int)measure.X; } @@ -148,7 +146,7 @@ namespace ShiftOS.Frontend.Desktop y += item.Height; } - } + Invalidate(); } @@ -297,7 +295,7 @@ namespace ShiftOS.Frontend.Desktop { gfx.DrawRectangle(al_left.X, dp_position + al_left.Y, holderSize.Width, holderSize.Height, UIManager.SkinTextures["applauncher"]); } - var altextmeasure = gfx.MeasureString(LoadedSkin.AppLauncherText, LoadedSkin.AppLauncherFont); + var altextmeasure = GraphicsContext.MeasureString(LoadedSkin.AppLauncherText, LoadedSkin.AppLauncherFont); int altextx = (holderSize.Width - (int)altextmeasure.X) / 2; int altexty = (holderSize.Height - (int)altextmeasure.Y) / 2; gfx.DrawString(LoadedSkin.AppLauncherText, altextx, altexty, LoadedSkin.AppLauncherTextColor.ToMonoColor(), LoadedSkin.AppLauncherFont); @@ -307,7 +305,7 @@ namespace ShiftOS.Frontend.Desktop var panelClockTextColor = LoadedSkin.DesktopPanelClockColor.ToMonoColor(); - var measure = gfx.MeasureString(dateTimeString, LoadedSkin.DesktopPanelClockFont); + var measure = GraphicsContext.MeasureString(dateTimeString, LoadedSkin.DesktopPanelClockFont); int panelclockleft = Width - (int)measure.X; int panelclockwidth = Width - panelclockleft; diff --git a/ShiftOS.Frontend/Desktop/WindowManager.cs b/ShiftOS.Frontend/Desktop/WindowManager.cs index b130b03..60f9e26 100644 --- a/ShiftOS.Frontend/Desktop/WindowManager.cs +++ b/ShiftOS.Frontend/Desktop/WindowManager.cs @@ -348,7 +348,7 @@ namespace ShiftOS.Frontend.Desktop gfx.DrawRectangle(titlebarleft, 0, titlebarwidth, titleheight, UIManager.SkinTextures["titlebar"]); } //Now we draw the title text. - var textMeasure = gfx.MeasureString(Text, titlefont); + var textMeasure = GraphicsContext.MeasureString(Text, titlefont); PointF textloc; if (titletextcentered) textloc = new PointF((titlebarwidth - textMeasure.X) / 2, diff --git a/ShiftOS.Frontend/GUI/Button.cs b/ShiftOS.Frontend/GUI/Button.cs index 62db283..f1bbb9c 100644 --- a/ShiftOS.Frontend/GUI/Button.cs +++ b/ShiftOS.Frontend/GUI/Button.cs @@ -20,16 +20,13 @@ namespace ShiftOS.Frontend.GUI protected override void OnLayout(GameTime gameTime) { - if(AutoSize == true) + if (AutoSize == true) { int borderwidth = SkinEngine.LoadedSkin.ButtonBorderWidth * 2; - using (var gfx = Graphics.FromImage(new Bitmap(1, 1))) - { - var measure = gfx.MeasureString(this.Text, this.Font); - Width = borderwidth + (int)measure.Width + 16; - Height = borderwidth + (int)measure.Height + 12; - } + var measure = GraphicsContext.MeasureString(this.Text, this.Font); + Width = borderwidth + (int)measure.X + 16; + Height = borderwidth + (int)measure.Y + 12; } } @@ -45,7 +42,7 @@ namespace ShiftOS.Frontend.GUI gfx.DrawRectangle(0, 0, Width, Height, UIManager.SkinTextures["ControlTextColor"]); gfx.DrawRectangle(1, 1, Width - 2, Height - 2, bgCol); - var measure = gfx.MeasureString(Text, Font); + var measure = GraphicsContext.MeasureString(Text, Font); var loc = new Vector2((Width - measure.X) / 2, (Height - measure.Y) / 2); diff --git a/ShiftOS.Frontend/GUI/ListView.cs b/ShiftOS.Frontend/GUI/ListView.cs index d4f22a7..23765e4 100644 --- a/ShiftOS.Frontend/GUI/ListView.cs +++ b/ShiftOS.Frontend/GUI/ListView.cs @@ -163,7 +163,7 @@ namespace ShiftOS.Frontend.GUI image = _images[item.ImageKey]; } int textwidth = texwidth + (_itemimagemargin * 2); - var textmeasure = gfx.MeasureString(item.Text, LoadedSkin.MainFont, textwidth); + var textmeasure = GraphicsContext.MeasureString(item.Text, LoadedSkin.MainFont, textwidth); yhelper = Math.Max(yhelper, _itemy + texheight + (int)textmeasure.Y); if(image != null) diff --git a/ShiftOS.Frontend/GUI/TextControl.cs b/ShiftOS.Frontend/GUI/TextControl.cs index 1e23680..95d4291 100644 --- a/ShiftOS.Frontend/GUI/TextControl.cs +++ b/ShiftOS.Frontend/GUI/TextControl.cs @@ -57,7 +57,7 @@ namespace ShiftOS.Frontend.GUI protected override void OnPaint(GraphicsContext gfx) { - var sMeasure = gfx.MeasureString(_text, _font, Width); + var sMeasure = GraphicsContext.MeasureString(_text, _font, Width); PointF loc = new PointF(2, 2); float centerH = (Width - sMeasure.X) / 2; float centerV = (Height - sMeasure.Y) / 2; diff --git a/ShiftOS.Frontend/GraphicsSubsystem/GraphicsContext.cs b/ShiftOS.Frontend/GraphicsSubsystem/GraphicsContext.cs index df9c064..0d7c820 100644 --- a/ShiftOS.Frontend/GraphicsSubsystem/GraphicsContext.cs +++ b/ShiftOS.Frontend/GraphicsSubsystem/GraphicsContext.cs @@ -136,13 +136,10 @@ namespace ShiftOS.Frontend.GraphicsSubsystem _spritebatch.Draw(tex2, new Rectangle(x, y, width, height), tint); } - public Vector2 MeasureString(string text, System.Drawing.Font font, int wrapWidth = int.MaxValue) + public static Vector2 MeasureString(string text, System.Drawing.Font font, int wrapWidth = int.MaxValue) { - using(var gfx = System.Drawing.Graphics.FromHwnd(IntPtr.Zero)) - { - var s = gfx.SmartMeasureString(text, font, wrapWidth); - return new Vector2((float)Math.Ceiling(s.Width), (float)Math.Ceiling(s.Height)); - } + var measure = TextRenderer.MeasureText(text, font, new System.Drawing.Size(wrapWidth, int.MaxValue)); + return new Vector2(measure.Width, measure.Height); } public static List StringCaches = new List(); @@ -174,7 +171,7 @@ namespace ShiftOS.Frontend.GraphicsSubsystem { using (var gfx = System.Drawing.Graphics.FromImage(bmp)) { - TextRenderer.DrawText(gfx, text, font, new System.Drawing.Point(0, 0), System.Drawing.Color.White); + TextRenderer.DrawText(gfx, text, font, new System.Drawing.Rectangle(0,0,bmp.Width,bmp.Height), System.Drawing.Color.White); } var lck = bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); var bytes = new byte[Math.Abs(lck.Stride) * lck.Height]; diff --git a/ShiftOS.Frontend/MainMenu.cs b/ShiftOS.Frontend/MainMenu.cs index db6ece9..361e425 100644 --- a/ShiftOS.Frontend/MainMenu.cs +++ b/ShiftOS.Frontend/MainMenu.cs @@ -333,7 +333,7 @@ namespace ShiftOS.Frontend gfx.DrawRectangle(0, 0, Width, Height, Color.Lerp(_redbg, _bluebg, _bglerp)); gfx.DrawRectangle(0, 0, Width / 4, Height, Color.White * 0.35F); - var measure = gfx.MeasureString(_tipText, _campaign.Font, (Width / 4) - 30); + var measure = GraphicsContext.MeasureString(_tipText, _campaign.Font, (Width / 4) - 30); int _height = (Height - (int)measure.Y) - 30; gfx.DrawString(_tipText, 30, _height, Color.White * _tipFade, _campaign.Font, (Width / 4) - 30); } diff --git a/ShiftOS.Frontend/ShiftOS.cs b/ShiftOS.Frontend/ShiftOS.cs index 3577574..ca6952d 100644 --- a/ShiftOS.Frontend/ShiftOS.cs +++ b/ShiftOS.Frontend/ShiftOS.cs @@ -363,9 +363,9 @@ namespace ShiftOS.Frontend string objectiveFailed = "- OBJECTIVE FAILURE -"; string prompt = "[press any key to dismiss this message and return to your sentience]"; int textMaxWidth = UIManager.Viewport.Width / 3; - var topMeasure = gfx.MeasureString(objectiveFailed, SkinEngine.LoadedSkin.HeaderFont, textMaxWidth); - var msgMeasure = gfx.MeasureString(failMessage, SkinEngine.LoadedSkin.Header3Font, textMaxWidth); - var pMeasure = gfx.MeasureString(prompt, SkinEngine.LoadedSkin.MainFont, textMaxWidth); + var topMeasure = GraphicsContext.MeasureString(objectiveFailed, SkinEngine.LoadedSkin.HeaderFont, textMaxWidth); + var msgMeasure = GraphicsContext.MeasureString(failMessage, SkinEngine.LoadedSkin.Header3Font, textMaxWidth); + var pMeasure = GraphicsContext.MeasureString(prompt, SkinEngine.LoadedSkin.MainFont, textMaxWidth); gfx.DrawString(objectiveFailed, (UIManager.Viewport.Width - (int)topMeasure.X) / 2, UIManager.Viewport.Height / 3, Color.White, SkinEngine.LoadedSkin.HeaderFont, textMaxWidth); gfx.DrawString(failMessage, (UIManager.Viewport.Width - (int)msgMeasure.X) / 2, (UIManager.Viewport.Height - (int)msgMeasure.Y) / 2, Color.White, SkinEngine.LoadedSkin.Header3Font, textMaxWidth); @@ -378,7 +378,7 @@ namespace ShiftOS.Frontend { string str = $"Timeout in {(Hacking.CurrentHackable.MillisecondsCountdown / 1000).ToString("#.##")} seconds."; var gfx = new GraphicsContext(GraphicsDevice, spriteBatch, 0, 0, UIManager.Viewport.Width, UIManager.Viewport.Height); - var measure = gfx.MeasureString(str, SkinEngine.LoadedSkin.HeaderFont); + var measure = GraphicsContext.MeasureString(str, SkinEngine.LoadedSkin.HeaderFont); gfx.DrawString(str, 5, (gfx.Height - ((int)measure.Y) - 5), Color.Red, SkinEngine.LoadedSkin.HeaderFont); } }