Cache rectangles and font in ProductionTabsWidget

This commit is contained in:
reaperrr
2020-08-15 21:35:12 +02:00
committed by abcdefg30
parent 235fb19aa8
commit 29b55de042

View File

@@ -91,6 +91,7 @@ namespace OpenRA.Mods.Common.Widgets
float listOffset = 0; float listOffset = 0;
bool leftPressed = false; bool leftPressed = false;
bool rightPressed = false; bool rightPressed = false;
SpriteFont font;
Rectangle leftButtonRect; Rectangle leftButtonRect;
Rectangle rightButtonRect; Rectangle rightButtonRect;
Lazy<ProductionPaletteWidget> paletteWidget; Lazy<ProductionPaletteWidget> paletteWidget;
@@ -110,6 +111,16 @@ namespace OpenRA.Mods.Common.Widgets
paletteWidget = Exts.Lazy(() => Ui.Root.Get<ProductionPaletteWidget>(PaletteWidget)); paletteWidget = Exts.Lazy(() => Ui.Root.Get<ProductionPaletteWidget>(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) public bool SelectNextTab(bool reverse)
{ {
if (queueGroup == null) if (queueGroup == null)
@@ -173,8 +184,6 @@ namespace OpenRA.Mods.Common.Widgets
return; return;
var rb = RenderBounds; 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 leftDisabled = listOffset >= 0;
var leftHover = Ui.MouseOverWidget == this && leftButtonRect.Contains(Viewport.LastMousePos); var leftHover = Ui.MouseOverWidget == this && leftButtonRect.Contains(Viewport.LastMousePos);
@@ -198,7 +207,6 @@ namespace OpenRA.Mods.Common.Widgets
// Draw tab buttons // Draw tab buttons
Game.Renderer.EnableScissor(new Rectangle(leftButtonRect.Right, rb.Y + 1, rightButtonRect.Left - leftButtonRect.Right - 1, rb.Height)); 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 origin = new int2(leftButtonRect.Right - 1 + (int)listOffset, leftButtonRect.Y);
var font = Game.Renderer.Fonts["TinyBold"];
contentWidth = 0; contentWidth = 0;
foreach (var tab in tabs) foreach (var tab in tabs)