From 29b55de042421e1699254f5e561f9051d16f8439 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Sat, 15 Aug 2020 21:35:12 +0200 Subject: [PATCH] Cache rectangles and font in ProductionTabsWidget --- OpenRA.Mods.Common/Widgets/ProductionTabsWidget.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/OpenRA.Mods.Common/Widgets/ProductionTabsWidget.cs b/OpenRA.Mods.Common/Widgets/ProductionTabsWidget.cs index 90b663f564..9f57694b2f 100644 --- a/OpenRA.Mods.Common/Widgets/ProductionTabsWidget.cs +++ b/OpenRA.Mods.Common/Widgets/ProductionTabsWidget.cs @@ -91,6 +91,7 @@ namespace OpenRA.Mods.Common.Widgets float listOffset = 0; bool leftPressed = false; bool rightPressed = false; + SpriteFont font; Rectangle leftButtonRect; Rectangle rightButtonRect; Lazy paletteWidget; @@ -110,6 +111,16 @@ namespace OpenRA.Mods.Common.Widgets paletteWidget = Exts.Lazy(() => Ui.Root.Get(PaletteWidget)); } + public override void Initialize(WidgetArgs args) + { + base.Initialize(args); + + var rb = RenderBounds; + leftButtonRect = new Rectangle(rb.X, rb.Y, ArrowWidth, rb.Height); + rightButtonRect = new Rectangle(rb.Right - ArrowWidth, rb.Y, ArrowWidth, rb.Height); + font = Game.Renderer.Fonts["TinyBold"]; + } + public bool SelectNextTab(bool reverse) { if (queueGroup == null) @@ -173,8 +184,6 @@ namespace OpenRA.Mods.Common.Widgets return; var rb = RenderBounds; - leftButtonRect = new Rectangle(rb.X, rb.Y, ArrowWidth, rb.Height); - rightButtonRect = new Rectangle(rb.Right - ArrowWidth, rb.Y, ArrowWidth, rb.Height); var leftDisabled = listOffset >= 0; var leftHover = Ui.MouseOverWidget == this && leftButtonRect.Contains(Viewport.LastMousePos); @@ -198,7 +207,6 @@ namespace OpenRA.Mods.Common.Widgets // Draw tab buttons Game.Renderer.EnableScissor(new Rectangle(leftButtonRect.Right, rb.Y + 1, rightButtonRect.Left - leftButtonRect.Right - 1, rb.Height)); var origin = new int2(leftButtonRect.Right - 1 + (int)listOffset, leftButtonRect.Y); - var font = Game.Renderer.Fonts["TinyBold"]; contentWidth = 0; foreach (var tab in tabs)