From 7ff7386b6e5cb1a770ae1d26c29b87f42f534ee2 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Thu, 28 Jan 2016 13:59:58 +1100 Subject: [PATCH] Separate launcher draw data setting from launcher widget redrawing. --- .../Gui/Screens/ClassiCubeServersScreen.cs | 30 ++++++------- Launcher2/Gui/Screens/DirectConnectScreen.cs | 5 ++- Launcher2/Gui/Screens/LauncherInputScreen.cs | 41 ++++++++--------- Launcher2/Gui/Screens/LauncherScreen.cs | 45 ++++++++++--------- .../Gui/Screens/MainScreen.Classicube.cs | 3 +- Launcher2/Gui/Screens/ResourcesScreen.cs | 3 +- Launcher2/Gui/Screens/UpdatesScreen.cs | 2 +- .../Gui/TableWidget/LauncherTableWidget.cs | 9 ++-- .../Gui/Widgets/LauncherBooleanWidget.cs | 5 +-- Launcher2/Gui/Widgets/LauncherButtonWidget.cs | 33 +++++++------- Launcher2/Gui/Widgets/LauncherInputWidget.cs | 37 ++++++++++----- Launcher2/Gui/Widgets/LauncherLabelWidget.cs | 17 +++---- Launcher2/Gui/Widgets/LauncherWidget.cs | 2 + 13 files changed, 130 insertions(+), 102 deletions(-) diff --git a/Launcher2/Gui/Screens/ClassiCubeServersScreen.cs b/Launcher2/Gui/Screens/ClassiCubeServersScreen.cs index e1f0ae98c..2368b5a5f 100644 --- a/Launcher2/Gui/Screens/ClassiCubeServersScreen.cs +++ b/Launcher2/Gui/Screens/ClassiCubeServersScreen.cs @@ -113,7 +113,7 @@ namespace Launcher2 { void DrawBackground() { using( FastBitmap dst = new FastBitmap( game.Framebuffer, true ) ) { - game.ClearArea( 0, 0, game.Width, tableY, dst ); + game.ClearArea( 0, 0, game.Width, tableY, dst ); int tableHeight = Math.Max( game.Height - tableY - 50, 1 ); Rectangle rec = new Rectangle( tableX, tableY, game.Width - tableX, tableHeight ); @@ -128,24 +128,24 @@ namespace Launcher2 { void MakeTableWidget() { int tableHeight = Math.Max( game.Height - tableY - 50, 1 ); + LauncherTableWidget widget; if( widgets[tableIndex] != null ) { - LauncherTableWidget table = (LauncherTableWidget)widgets[tableIndex]; - table.Height = tableHeight; - table.Redraw( drawer, tableFont, inputFont, inputFont ); - return; + widget = (LauncherTableWidget)widgets[tableIndex]; + } else { + widget = new LauncherTableWidget( game ); + widget.CurrentIndex = 0; + widget.SetEntries( game.Session.Servers ); + + widget.SetDrawData( drawer, tableFont, inputFont, inputFont, + Anchor.LeftOrTop, Anchor.LeftOrTop, tableX, tableY ); + widget.NeedRedraw = Resize; + widget.SelectedChanged = SelectedChanged; + widgets[widgetIndex] = widget; } - LauncherTableWidget widget = new LauncherTableWidget( game ); - widget.CurrentIndex = 0; - widget.SetEntries( game.Session.Servers ); - widget.Height = tableHeight; - - widget.DrawAt( drawer, tableFont, inputFont, inputFont, - Anchor.LeftOrTop, Anchor.LeftOrTop, tableX, tableY ); - widget.NeedRedraw = Resize; - widget.SelectedChanged = SelectedChanged; - widgets[widgetIndex++] = widget; + widget.Redraw( drawer ); + widgetIndex++; } void FilterList() { diff --git a/Launcher2/Gui/Screens/DirectConnectScreen.cs b/Launcher2/Gui/Screens/DirectConnectScreen.cs index 46839a163..5d57ce9d1 100644 --- a/Launcher2/Gui/Screens/DirectConnectScreen.cs +++ b/Launcher2/Gui/Screens/DirectConnectScreen.cs @@ -55,8 +55,9 @@ namespace Launcher2 { game.ClearArea( widget.X, widget.Y, widget.Width, widget.Height ); using( drawer ) { - drawer.SetBitmap( game.Framebuffer ); - widget.DrawAt( drawer, text, inputFont, Anchor.Centre, Anchor.Centre, 0, 100 ); + drawer.SetBitmap( game.Framebuffer ); + widget.SetDrawData( drawer, text, inputFont, Anchor.Centre, Anchor.Centre, 0, 100 ); + widget.Redraw( drawer ); Dirty = true; } } diff --git a/Launcher2/Gui/Screens/LauncherInputScreen.cs b/Launcher2/Gui/Screens/LauncherInputScreen.cs index 011bd9647..5db1ebd48 100644 --- a/Launcher2/Gui/Screens/LauncherInputScreen.cs +++ b/Launcher2/Gui/Screens/LauncherInputScreen.cs @@ -39,7 +39,8 @@ namespace Launcher2 { using( drawer ) { drawer.SetBitmap( game.Framebuffer ); - lastInput.Redraw( drawer, lastInput.Text, inputFont, inputHintFont ); + lastInput.SetDrawData( drawer, lastInput.Text ); + lastInput.Redraw( drawer ); if( caretShow ) lastInput.DrawCaret( drawer, inputFont ); Dirty = true; @@ -114,11 +115,11 @@ namespace Launcher2 { protected virtual void RedrawLastInput() { if( lastInput.Width > lastInput.ButtonWidth ) - game.ClearArea( lastInput.X, lastInput.Y, lastInput.Width + 1, lastInput.Height + 1 ); + game.ClearArea( lastInput.X, lastInput.Y, lastInput.Width, lastInput.Height ); using( drawer ) { drawer.SetBitmap( game.Framebuffer ); - lastInput.Redraw( drawer, lastInput.Text, inputFont, inputHintFont ); + lastInput.Redraw( drawer ); Dirty = true; } } @@ -135,8 +136,8 @@ namespace Launcher2 { } protected void Set( int index, string text ) { - ((LauncherInputWidget)widgets[index]) - .Redraw( drawer, text, inputFont, inputHintFont ); + ((LauncherInputWidget)widgets[index]).SetDrawData( drawer, text ); + ((LauncherInputWidget)widgets[index]).Redraw( drawer ); } protected virtual void MouseWheelChanged( object sender, MouseWheelEventArgs e ) { @@ -149,14 +150,14 @@ namespace Launcher2 { drawer.SetBitmap( game.Framebuffer ); if( lastInput != null ) { lastInput.Active = false; - lastInput.Redraw( drawer, lastInput.Text, inputFont, inputHintFont ); + lastInput.Redraw( drawer ); } input.Active = true; widgetOpenTime = DateTime.UtcNow; lastCaretFlash = false; input.SetCaretToCursor( mouseX, mouseY, drawer, inputFont ); - input.Redraw( drawer, input.Text, inputFont, inputHintFont ); + input.Redraw( drawer ); } lastInput = input; Dirty = true; @@ -168,7 +169,7 @@ namespace Launcher2 { using( drawer ) { drawer.SetBitmap( game.Framebuffer ); input.Active = false; - input.Redraw( drawer, lastInput.Text, inputFont, inputHintFont ); + input.Redraw( drawer ); } lastInput = null; Dirty = true; @@ -181,21 +182,21 @@ namespace Launcher2 { protected void MakeInput( string text, int width, Anchor horAnchor, Anchor verAnchor, bool password, int x, int y, int maxChars, string hint ) { + LauncherInputWidget widget; if( widgets[widgetIndex] != null ) { - LauncherInputWidget input = (LauncherInputWidget)widgets[widgetIndex]; - input.DrawAt( drawer, text, inputFont, inputHintFont, horAnchor, verAnchor, width, 30, x, y ); - widgetIndex++; - return; + widget = (LauncherInputWidget)widgets[widgetIndex]; + } else { + widget = new LauncherInputWidget( game ); + widget.OnClick = InputClick; + widget.Password = password; + widget.MaxTextLength = maxChars; + widget.HintText = hint; + widgets[widgetIndex] = widget; } - LauncherInputWidget widget = new LauncherInputWidget( game ); - widget.OnClick = InputClick; - widget.Password = password; - widget.MaxTextLength = maxChars; - widget.HintText = hint; - - widget.DrawAt( drawer, text, inputFont, inputHintFont, horAnchor, verAnchor, width, 30, x, y ); - widgets[widgetIndex++] = widget; + widget.SetDrawData( drawer, text, inputFont, inputHintFont, horAnchor, verAnchor, width, 30, x, y ); + widget.Redraw( drawer ); + widgetIndex++; } public override void Dispose() { diff --git a/Launcher2/Gui/Screens/LauncherScreen.cs b/Launcher2/Gui/Screens/LauncherScreen.cs index 0deb92b73..f1ff0b025 100644 --- a/Launcher2/Gui/Screens/LauncherScreen.cs +++ b/Launcher2/Gui/Screens/LauncherScreen.cs @@ -67,7 +67,7 @@ namespace Launcher2 { button.RedrawBackground(); using( drawer ) { drawer.SetBitmap( game.Framebuffer ); - button.Redraw( drawer, button.Text, buttonFont ); + button.Redraw( drawer ); } Dirty = true; } @@ -81,7 +81,7 @@ namespace Launcher2 { button.RedrawBackground(); using( drawer ) { drawer.SetBitmap( game.Framebuffer ); - button.Redraw( drawer, button.Text, buttonFont ); + button.Redraw( drawer ); } Dirty = true; } @@ -150,47 +150,50 @@ namespace Launcher2 { protected void MakeButtonAt( string text, int width, int height, Font font, Anchor horAnchor, Anchor verAnchor, int x, int y, Action onClick ) { + LauncherButtonWidget widget; if( widgets[widgetIndex] != null ) { - LauncherButtonWidget button = (LauncherButtonWidget)widgets[widgetIndex]; - button.Active = false; - button.DrawAt( drawer, text, font, horAnchor, verAnchor, width, height, x, y ); - widgetIndex++; - return; + widget = (LauncherButtonWidget)widgets[widgetIndex]; + } else { + widget = new LauncherButtonWidget( game ); + widget.Text = text; + widget.OnClick = onClick; + widgets[widgetIndex] = widget; } - LauncherButtonWidget widget = new LauncherButtonWidget( game ); - widget.Text = text; - widget.OnClick = onClick; - widget.Active = false; - widget.DrawAt( drawer, text, font, horAnchor, verAnchor, width, height, x, y ); - widgets[widgetIndex++] = widget; + widget.SetDrawData( drawer, text, font, horAnchor, verAnchor, width, height, x, y ); + widget.Redraw( drawer ); + widgetIndex++; } protected void MakeLabelAt( string text, Font font, Anchor horAnchor, Anchor verAnchor, int x, int y ) { + LauncherLabelWidget widget; if( widgets[widgetIndex] != null ) { - LauncherLabelWidget label = (LauncherLabelWidget)widgets[widgetIndex]; - label.DrawAt( drawer, text, font, horAnchor, verAnchor, x, y ); + widget = (LauncherLabelWidget)widgets[widgetIndex]; } else { - LauncherLabelWidget widget = new LauncherLabelWidget( game, text ); - widget.DrawAt( drawer, text, font, horAnchor, verAnchor, x, y ); + widget = new LauncherLabelWidget( game, text ); widgets[widgetIndex] = widget; } + + widget.SetDrawData( drawer, text, font, horAnchor, verAnchor, x, y ); + widget.Redraw( drawer ); widgetIndex++; } protected void MakeBooleanAt( Anchor horAnchor, Anchor verAnchor, Font font, bool initValue, int width, int height, int x, int y, Action onClick ) { + LauncherBooleanWidget widget; if( widgets[widgetIndex] != null ) { - LauncherBooleanWidget widget = (LauncherBooleanWidget)widgets[widgetIndex]; - widget.DrawAt( drawer, horAnchor, verAnchor, x, y ); + widget = (LauncherBooleanWidget)widgets[widgetIndex]; } else { - LauncherBooleanWidget widget = new LauncherBooleanWidget( game, font, width, height ); + widget = new LauncherBooleanWidget( game, font, width, height ); widget.Value = initValue; - widget.DrawAt( drawer, horAnchor, verAnchor, x, y ); widget.OnClick = onClick; widgets[widgetIndex] = widget; } + + widget.SetDrawData( drawer, horAnchor, verAnchor, x, y ); + widget.Redraw( drawer ); widgetIndex++; } } diff --git a/Launcher2/Gui/Screens/MainScreen.Classicube.cs b/Launcher2/Gui/Screens/MainScreen.Classicube.cs index fca366ba4..091a0fcbc 100644 --- a/Launcher2/Gui/Screens/MainScreen.Classicube.cs +++ b/Launcher2/Gui/Screens/MainScreen.Classicube.cs @@ -58,7 +58,8 @@ namespace Launcher2 { game.ClearArea( widget.X, widget.Y, widget.Width, widget.Height ); using( drawer ) { drawer.SetBitmap( game.Framebuffer ); - widget.DrawAt( drawer, text, inputFont, Anchor.Centre, Anchor.Centre, 0, 20 ); + widget.SetDrawData( drawer, text, inputFont, Anchor.Centre, Anchor.Centre, 0, 20 ); + widget.Redraw( drawer ); } Dirty = true; } diff --git a/Launcher2/Gui/Screens/ResourcesScreen.cs b/Launcher2/Gui/Screens/ResourcesScreen.cs index 4d2b32165..d67912aea 100644 --- a/Launcher2/Gui/Screens/ResourcesScreen.cs +++ b/Launcher2/Gui/Screens/ResourcesScreen.cs @@ -103,7 +103,8 @@ namespace Launcher2 { using( drawer ) { drawer.SetBitmap( game.Framebuffer ); drawer.Clear( backCol, widget.X, widget.Y, widget.Width, widget.Height ); - widget.Redraw( drawer, text, statusFont ); + widget.SetDrawData( drawer, text, statusFont, Anchor.Centre, Anchor.Centre, 0, 5 ); + widget.Redraw( drawer ); Dirty = true; } } diff --git a/Launcher2/Gui/Screens/UpdatesScreen.cs b/Launcher2/Gui/Screens/UpdatesScreen.cs index edc1d7588..122c4244a 100644 --- a/Launcher2/Gui/Screens/UpdatesScreen.cs +++ b/Launcher2/Gui/Screens/UpdatesScreen.cs @@ -98,7 +98,7 @@ namespace Launcher2 { MakeLabelAt( "Update to dev build", titleFont, Anchor.Centre, Anchor.Centre, -120, 30 ); MakeLabelAt( "Latest dev:", infoFont, Anchor.Centre, Anchor.Centre, -100, 60 ); string latestDev = GetDateString( lastDev, validDev ); - MakeLabelAt( latestDev, infoFont, Anchor.Centre, Anchor.Centre, 30, 60 ); + MakeLabelAt( latestDev, infoFont, Anchor.Centre, Anchor.Centre, 50, 60 ); MakeButtonAt( "Direct3D 9", 130, 30, titleFont, Anchor.Centre, -80, 95, (x, y) => UpdateBuild( lastDev, validDev, false, true ) ); MakeButtonAt( "OpenGL", 130, 30, titleFont, Anchor.Centre, 80, 95, diff --git a/Launcher2/Gui/TableWidget/LauncherTableWidget.cs b/Launcher2/Gui/TableWidget/LauncherTableWidget.cs index ddb49f054..5fbd9e9fc 100644 --- a/Launcher2/Gui/TableWidget/LauncherTableWidget.cs +++ b/Launcher2/Gui/TableWidget/LauncherTableWidget.cs @@ -67,13 +67,16 @@ namespace Launcher2 { public int Y, Height; } - public void DrawAt( IDrawer2D drawer, Font font, Font titleFont, Font boldFont, + Font font, titleFont, boldFont; + public void SetDrawData( IDrawer2D drawer, Font font, Font titleFont, Font boldFont, Anchor horAnchor, Anchor verAnchor, int x, int y ) { CalculateOffset( x, y, horAnchor, verAnchor ); - Redraw( drawer, font, titleFont, boldFont ); + this.font = font; + this.titleFont = titleFont; + this.boldFont = boldFont; } - public void Redraw( IDrawer2D drawer, Font font, Font titleFont, Font boldFont ) { + public override void Redraw( IDrawer2D drawer ) { for( int i = 0; i < ColumnWidths.Length; i++ ) { ColumnWidths[i] = DesiredColumnWidths[i]; Utils.Clamp( ref ColumnWidths[i], 20, Window.Width - 20 ); diff --git a/Launcher2/Gui/Widgets/LauncherBooleanWidget.cs b/Launcher2/Gui/Widgets/LauncherBooleanWidget.cs index 0ad3a1a84..09aea7bf1 100644 --- a/Launcher2/Gui/Widgets/LauncherBooleanWidget.cs +++ b/Launcher2/Gui/Widgets/LauncherBooleanWidget.cs @@ -17,12 +17,11 @@ namespace Launcher2 { this.font = font; } - public void DrawAt( IDrawer2D drawer, Anchor horAnchor, Anchor verAnchor, int x, int y ) { + public void SetDrawData( IDrawer2D drawer, Anchor horAnchor, Anchor verAnchor, int x, int y ) { CalculateOffset( x, y, horAnchor, verAnchor ); - Redraw( drawer ); } - public void Redraw( IDrawer2D drawer ) { + public override void Redraw( IDrawer2D drawer ) { drawer.DrawRect( FastColour.Black, X, Y, Width, Height ); if( Value ) { DrawTextArgs args = new DrawTextArgs( "X", font, false ); diff --git a/Launcher2/Gui/Widgets/LauncherButtonWidget.cs b/Launcher2/Gui/Widgets/LauncherButtonWidget.cs index ff3a79909..a8fc82017 100644 --- a/Launcher2/Gui/Widgets/LauncherButtonWidget.cs +++ b/Launcher2/Gui/Widgets/LauncherButtonWidget.cs @@ -9,33 +9,36 @@ namespace Launcher2 { public bool Shadow = true; public bool Active = false; const int border = 2; + Size textSize; + Font font; public LauncherButtonWidget( LauncherWindow window ) : base( window ) { } - public void DrawAt( IDrawer2D drawer, string text, Font font, Anchor horAnchor, - Anchor verAnchor, int width, int height, int x, int y ) { + public void SetDrawData( IDrawer2D drawer, string text, Font font, Anchor horAnchor, + Anchor verAnchor, int width, int height, int x, int y ) { Width = width; Height = height; CalculateOffset( x, y, horAnchor, verAnchor ); - RedrawBackground(); - Redraw( drawer, text, font ); + this.font = font; + + Text = text; + DrawTextArgs args = new DrawTextArgs( text, font, true ); + textSize = drawer.MeasureSize( ref args ); } - public void Redraw( IDrawer2D drawer, string text, Font font ) { - Text = text; - if( !Active ) - text = "&7" + text; + public override void Redraw( IDrawer2D drawer ) { + string text = Text; + if( !Active ) text = "&7" + text; + int xOffset = Width - textSize.Width, yOffset = Height - textSize.Height; DrawTextArgs args = new DrawTextArgs( text, font, true ); - Size size = drawer.MeasureSize( ref args ); - int xOffset = Width - size.Width, yOffset = Height - size.Height; + RedrawBackground(); DrawBorder( drawer ); if( Window.ClassicMode ) - DrawClassic( drawer, ref args, xOffset, yOffset ); + DrawClassic( drawer, xOffset, yOffset ); else - DrawNormal( drawer, ref args, xOffset, yOffset ); + DrawNormal( drawer, xOffset, yOffset ); - args.SkipPartsCheck = true; drawer.DrawText( ref args, X + xOffset / 2, Y + yOffset / 2 ); } @@ -47,13 +50,13 @@ namespace Launcher2 { drawer.Clear( backCol, X + Width - border, Y + 1, border, Height - 2 ); } - void DrawNormal( IDrawer2D drawer, ref DrawTextArgs args, int xOffset, int yOffset ) { + void DrawNormal( IDrawer2D drawer, int xOffset, int yOffset ) { if( Active ) return; FastColour lineCol = LauncherSkin.ButtonHighlightCol; drawer.Clear( lineCol, X + border + 1, Y + border, Width - (border * 2 + 1), border ); } - void DrawClassic( IDrawer2D drawer, ref DrawTextArgs args, int xOffset, int yOffset ) { + void DrawClassic( IDrawer2D drawer, int xOffset, int yOffset ) { FastColour highlightCol = Active ? new FastColour( 189, 198, 255 ) : new FastColour( 168, 168, 168 ); drawer.Clear( highlightCol, X + border + 1, Y + border, Width - (border * 2 + 1), border ); drawer.Clear( highlightCol, X + border, Y + border + 1, border, Height - (border * 2 + 1) ); diff --git a/Launcher2/Gui/Widgets/LauncherInputWidget.cs b/Launcher2/Gui/Widgets/LauncherInputWidget.cs index e09e5ce29..560912ef1 100644 --- a/Launcher2/Gui/Widgets/LauncherInputWidget.cs +++ b/Launcher2/Gui/Widgets/LauncherInputWidget.cs @@ -33,24 +33,42 @@ namespace Launcher2 { public int CaretPos = -1; + Font font, hintFont; + int textHeight; public LauncherInputWidget( LauncherWindow window ) : base( window ) { } - public void DrawAt( IDrawer2D drawer, string text, Font font, Font hintFont, + public void SetDrawData( IDrawer2D drawer, string text, Font font, Font hintFont, Anchor horAnchor, Anchor verAnchor, int width, int height, int x, int y ) { ButtonWidth = width; ButtonHeight = height; Width = width; Height = height; CalculateOffset( x, y, horAnchor, verAnchor ); - Redraw( drawer, text, font, hintFont ); - } - - public void Redraw( IDrawer2D drawer, string text, Font font, Font hintFont ) { + Text = text; - if( Password ) - text = new String( '*', text.Length ); + if( Password ) text = new String( '*', text.Length ); + this.font = font; + this.hintFont = hintFont; + DrawTextArgs args = new DrawTextArgs( text, font, true ); Size size = drawer.MeasureSize( ref args ); - Width = Math.Max( ButtonWidth, size.Width + 7 ); + Width = Math.Max( ButtonWidth, size.Width + 15 ); + textHeight = size.Height; + } + + public void SetDrawData( IDrawer2D drawer, string text ) { + Text = text; + if( Password ) text = new String( '*', text.Length ); + + DrawTextArgs args = new DrawTextArgs( text, font, true ); + Size size = drawer.MeasureSize( ref args ); + Width = Math.Max( ButtonWidth, size.Width + 15 ); + textHeight = size.Height; + } + + public override void Redraw( IDrawer2D drawer ) { + string text = Text; + if( Password ) text = new String( '*', text.Length ); + DrawTextArgs args = new DrawTextArgs( text, font, true ); FastColour col = Active ? new FastColour( 240, 240, 240 ) : new FastColour( 180, 180, 180 ); drawer.Clear( col, X + 1, Y, Width - 2, 2 ); @@ -59,9 +77,8 @@ namespace Launcher2 { drawer.Clear( col, X + Width - 2, Y + 1, 2, Height - 2 ); drawer.Clear( FastColour.Black, X + 2, Y + 2, Width - 4, Height - 4 ); - args.SkipPartsCheck = true; if( Text.Length != 0 || HintText == null ) { - int y = Y + 2 + (Height - size.Height) / 2; + int y = Y + 2 + (Height - textHeight) / 2; drawer.DrawText( ref args, X + 5, y ); } else { args.SkipPartsCheck = false; diff --git a/Launcher2/Gui/Widgets/LauncherLabelWidget.cs b/Launcher2/Gui/Widgets/LauncherLabelWidget.cs index 8aff7a405..8addff9a9 100644 --- a/Launcher2/Gui/Widgets/LauncherLabelWidget.cs +++ b/Launcher2/Gui/Widgets/LauncherLabelWidget.cs @@ -7,28 +7,25 @@ namespace Launcher2 { /// Widget that represents text that cannot be modified by the user. public sealed class LauncherLabelWidget : LauncherWidget { + Font font; public LauncherLabelWidget( LauncherWindow window, string text ) : base( window ) { Text = text; } - - public void DrawAt( IDrawer2D drawer, string text, Font font, + + public void SetDrawData( IDrawer2D drawer, string text, Font font, Anchor horAnchor, Anchor verAnchor, int x, int y ) { DrawTextArgs args = new DrawTextArgs( text, font, true ); Size size = drawer.MeasureSize( ref args ); Width = size.Width; Height = size.Height; CalculateOffset( x, y, horAnchor, verAnchor ); - Redraw( drawer, text, font ); + Text = text; + this.font = font; } - public void Redraw( IDrawer2D drawer, string text, Font font ) { - DrawTextArgs args = new DrawTextArgs( text, font, true ); - Size size = drawer.MeasureSize( ref args ); - Width = size.Width; Height = size.Height; - - args.SkipPartsCheck = true; + public override void Redraw( IDrawer2D drawer ) { + DrawTextArgs args = new DrawTextArgs( Text, font, true ); drawer.DrawText( ref args, X, Y ); - Text = text; } } } diff --git a/Launcher2/Gui/Widgets/LauncherWidget.cs b/Launcher2/Gui/Widgets/LauncherWidget.cs index 673e6e463..e7c4e6683 100644 --- a/Launcher2/Gui/Widgets/LauncherWidget.cs +++ b/Launcher2/Gui/Widgets/LauncherWidget.cs @@ -24,5 +24,7 @@ namespace Launcher2 { else if( verAnchor == Anchor.Centre ) Y = y + Window.Height / 2 - Height / 2; else if( verAnchor == Anchor.BottomOrRight ) Y = y + Window.Height - Height; } + + public abstract void Redraw( IDrawer2D drawer ); } }