From 4138c5aeb710c34d0f6b63483fc729d06279ec7d Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Tue, 26 Jul 2011 22:32:16 +1200 Subject: [PATCH] Display version in the load screen --- OpenRA.Mods.Cnc/CncLoadScreen.cs | 45 +++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/OpenRA.Mods.Cnc/CncLoadScreen.cs b/OpenRA.Mods.Cnc/CncLoadScreen.cs index 617ba966d6..a7ad484943 100644 --- a/OpenRA.Mods.Cnc/CncLoadScreen.cs +++ b/OpenRA.Mods.Cnc/CncLoadScreen.cs @@ -14,6 +14,7 @@ using OpenRA.FileFormats; using OpenRA.Graphics; using OpenRA.Support; using OpenRA.Widgets; +using OpenRA.Mods.Cnc.Widgets; namespace OpenRA.Mods.Cnc { @@ -22,9 +23,8 @@ namespace OpenRA.Mods.Cnc Dictionary Info; Stopwatch loadTimer = new Stopwatch(); Sprite[] ss; - string text; int loadTick; - float2 nodPos, gdiPos, evaPos, textPos; + float2 nodPos, gdiPos, evaPos; Sprite nodLogo, gdiLogo, evaLogo, brightBlock, dimBlock; Rectangle Bounds; Renderer r; @@ -38,9 +38,9 @@ namespace OpenRA.Mods.Cnc r = Game.Renderer; if (r == null) return; - var res = Renderer.Resolution; var s = new Sheet("mods/cnc/uibits/chrome.png"); + var res = Renderer.Resolution; Bounds = new Rectangle(0, 0, res.Width, res.Height); ss = new Sprite[] { @@ -56,14 +56,19 @@ namespace OpenRA.Mods.Cnc nodLogo = new Sprite(s, new Rectangle(0, 256, 256, 256), TextureChannel.Alpha); gdiLogo = new Sprite(s, new Rectangle(256, 256, 256, 256), TextureChannel.Alpha); evaLogo = new Sprite(s, new Rectangle(256, 64, 128, 64), TextureChannel.Alpha); - nodPos = new float2(res.Width / 2 - 384, res.Height / 2 - 128); - gdiPos = new float2(res.Width / 2 + 128, res.Height / 2 - 128); - evaPos = new float2(res.Width - 43 - 128, 43); + nodPos = new float2(Bounds.Width / 2 - 384, Bounds.Height / 2 - 128); + gdiPos = new float2(Bounds.Width / 2 + 128, Bounds.Height / 2 - 128); + evaPos = new float2(Bounds.Width - 43 - 128, 43); brightBlock = new Sprite(s, new Rectangle(320, 0, 16, 35), TextureChannel.Alpha); dimBlock = new Sprite(s, new Rectangle(336, 0, 16, 35), TextureChannel.Alpha); } + bool setup; + SpriteFont loadingFont, versionFont; + string loadingText, versionText; + float2 loadingPos, versionPos; + public void Display() { if (r == null || loadTimer.ElapsedTime() < 0.25) @@ -76,23 +81,33 @@ namespace OpenRA.Mods.Cnc r.RgbaSpriteRenderer.DrawSprite(nodLogo, nodPos); r.RgbaSpriteRenderer.DrawSprite(evaLogo, evaPos); - var res = Renderer.Resolution; - WidgetUtils.DrawPanelPartial(ss, Bounds, PanelSides.Edges); + var barY = Bounds.Height - 78; - var barY = res.Height - 78; - text = "Loading"; - var textSize = r.Fonts["BigBold"].Measure(text); - textPos = new float2((res.Width - textSize.X) / 2, barY); - r.Fonts["BigBold"].DrawText(text, textPos, Color.Gray); + if (!setup) + { + loadingFont = r.Fonts["BigBold"]; + loadingText = "Loading"; + loadingPos = new float2((Bounds.Width - loadingFont.Measure(loadingText).X) / 2, barY); + + versionFont = r.Fonts["Regular"]; + versionText = CncWidgetUtils.ActiveModVersion(); + var versionSize = versionFont.Measure(versionText); + versionPos = new float2(Bounds.Width - 107 - versionSize.X/2, 115 - versionSize.Y/2); + + setup = true; + } + + loadingFont.DrawText(loadingText, loadingPos, Color.Gray); + versionFont.DrawTextWithContrast(versionText, versionPos, Color.White, Color.Black, 2); for (var i = 0; i <= 8; i++) { var block = loadTick == i ? brightBlock : dimBlock; r.RgbaSpriteRenderer.DrawSprite(block, - new float2(res.Width / 2 - 114 - i * 32, barY)); + new float2(Bounds.Width / 2 - 114 - i * 32, barY)); r.RgbaSpriteRenderer.DrawSprite(block, - new float2(res.Width / 2 + 114 + i * 32 - 16, barY)); + new float2(Bounds.Width / 2 + 114 + i * 32 - 16, barY)); } r.EndFrame(nih);