From 9822afcdb822a545b68457bdf97c950bfd1ad89f Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 19 May 2011 17:59:09 +1200 Subject: [PATCH] New loadscreen --- OpenRA.Mods.Cnc/CncLoadScreen.cs | 89 ++++++++++++------ OpenRA.Mods.Cnc/Missions/CncShellmapScript.cs | 14 ++- mods/cnc/uibits/loadscreen.png | Bin 27258 -> 0 bytes 3 files changed, 72 insertions(+), 31 deletions(-) delete mode 100644 mods/cnc/uibits/loadscreen.png diff --git a/OpenRA.Mods.Cnc/CncLoadScreen.cs b/OpenRA.Mods.Cnc/CncLoadScreen.cs index 0cfef18d05..b171805e8b 100644 --- a/OpenRA.Mods.Cnc/CncLoadScreen.cs +++ b/OpenRA.Mods.Cnc/CncLoadScreen.cs @@ -18,20 +18,14 @@ using OpenRA.Widgets; namespace OpenRA.Mods.Cnc { public class CncLoadScreen : ILoadScreen - { - static string[] Comments = new[] { "Filling Crates...", "Charging Capacitors...", "Reticulating Splines...", - "Planting Trees...", "Building Bridges...", "Aging Empires...", - "Compiling EVA...", "Constructing Pylons...", "Activating Skynet...", - "Splitting Atoms..." - }; - + { Dictionary Info; Stopwatch lastLoadScreen = new Stopwatch(); - Rectangle StripeRect, BgRect; - Sprite Stripe, Logo, Bg; - float2 LogoPos; - + Sprite[] ss; + Rectangle Bounds; Renderer r; + NullInputHandler nih = new NullInputHandler(); + public void Init(Dictionary info) { Info = info; @@ -40,15 +34,20 @@ namespace OpenRA.Mods.Cnc r = Game.Renderer; if (r == null) return; - var s = new Sheet("mods/cnc/uibits/loadscreen.png"); - Logo = new Sprite(s, new Rectangle(0,0,256,256), TextureChannel.Alpha); - Bg = new Sprite(s, new Rectangle(0,256,512,256), TextureChannel.Alpha); - BgRect = new Rectangle(0, 0, Renderer.Resolution.Width, Renderer.Resolution.Height); - Stripe = new Sprite(s, new Rectangle(256,0,256,256), TextureChannel.Alpha); - StripeRect = new Rectangle(0, Renderer.Resolution.Height/2 - 128, Renderer.Resolution.Width, 256); - LogoPos = new float2(Renderer.Resolution.Width/2 - 128, Renderer.Resolution.Height/2 - 128); + var s = new Sheet("mods/cnc/uibits/chrome.png"); + Bounds = new Rectangle(0,0,Renderer.Resolution.Width, Renderer.Resolution.Height); + ss = new Sprite[] + { + new Sprite(s, new Rectangle(161,128,62,33), TextureChannel.Alpha), + new Sprite(s, new Rectangle(161,223,62,33), TextureChannel.Alpha), + new Sprite(s, new Rectangle(128,161,33,62), TextureChannel.Alpha), + new Sprite(s, new Rectangle(223,161,33,62), TextureChannel.Alpha), + new Sprite(s, new Rectangle(128,128,33,33), TextureChannel.Alpha), + new Sprite(s, new Rectangle(223,128,33,33), TextureChannel.Alpha), + new Sprite(s, new Rectangle(128,223,33,33), TextureChannel.Alpha), + new Sprite(s, new Rectangle(223,223,33,33), TextureChannel.Alpha) + }; } - public void Display() { @@ -58,17 +57,53 @@ namespace OpenRA.Mods.Cnc // Update text at most every 0.5 seconds if (lastLoadScreen.ElapsedTime() < 0.5) return; - + var font = r.Fonts["BigBold"]; + var text = "Connecting to EVA..."; lastLoadScreen.Reset(); - var text = Comments.Random(Game.CosmeticRandom); - var textSize = r.Fonts["Bold"].Measure(text); + var textSize = font.Measure(text); r.BeginFrame(float2.Zero); - WidgetUtils.FillRectWithSprite(BgRect, Bg); - WidgetUtils.FillRectWithSprite(StripeRect, Stripe); - r.RgbaSpriteRenderer.DrawSprite(Logo, LogoPos); - r.Fonts["Bold"].DrawText(text, new float2(Renderer.Resolution.Width - textSize.X - 20, Renderer.Resolution.Height - textSize.Y - 20), Color.Black); - r.EndFrame( new NullInputHandler() ); + DrawBorder(); + font.DrawText(text, new float2((Renderer.Resolution.Width - textSize.X) / 2, (Renderer.Resolution.Height - textSize.Y) / 2), Color.White); + r.EndFrame( nih ); + } + + + void DrawBorder() + { + // Left border + WidgetUtils.FillRectWithSprite(new Rectangle(Bounds.Left, + Bounds.Top + (int)ss[0].size.Y, + (int)ss[2].size.X, + Bounds.Bottom - (int)ss[1].size.Y - Bounds.Top - (int)ss[0].size.Y), + ss[2]); + + // Right border + WidgetUtils.FillRectWithSprite(new Rectangle(Bounds.Right - (int)ss[3].size.X, + Bounds.Top + (int)ss[0].size.Y, + (int)ss[2].size.X, + Bounds.Bottom - (int)ss[1].size.Y - Bounds.Top - (int)ss[0].size.Y), + ss[3]); + + // Top border + WidgetUtils.FillRectWithSprite(new Rectangle(Bounds.Left + (int)ss[2].size.X, + Bounds.Top, + Bounds.Right - (int)ss[3].size.X - Bounds.Left - (int)ss[2].size.X, + (int)ss[0].size.Y), + ss[0]); + + // Bottom border + WidgetUtils.FillRectWithSprite(new Rectangle(Bounds.Left + (int)ss[2].size.X, + Bounds.Bottom - (int)ss[1].size.Y, + Bounds.Right - (int)ss[3].size.X - Bounds.Left - (int)ss[2].size.X, + (int)ss[0].size.Y), + ss[1]); + + + WidgetUtils.DrawRGBA(ss[4], new float2(Bounds.Left, Bounds.Top)); + WidgetUtils.DrawRGBA(ss[5], new float2(Bounds.Right - ss[5].size.X, Bounds.Top)); + WidgetUtils.DrawRGBA(ss[6], new float2(Bounds.Left, Bounds.Bottom - ss[6].size.Y)); + WidgetUtils.DrawRGBA(ss[7], new float2(Bounds.Right - ss[7].size.X, Bounds.Bottom - ss[7].size.Y)); } public void StartGame() diff --git a/OpenRA.Mods.Cnc/Missions/CncShellmapScript.cs b/OpenRA.Mods.Cnc/Missions/CncShellmapScript.cs index 8ac1f78d30..c8a93c2d4b 100755 --- a/OpenRA.Mods.Cnc/Missions/CncShellmapScript.cs +++ b/OpenRA.Mods.Cnc/Missions/CncShellmapScript.cs @@ -45,6 +45,8 @@ namespace OpenRA.Mods.RA Sound.SoundVolumeModifier = 0f; LoopMusic(); + + SetViewport(); } void LoopMusic() @@ -57,14 +59,18 @@ namespace OpenRA.Mods.RA Sound.PlayMusicThen(Rules.Music[Info.Music], () => LoopMusic()); } + void SetViewport() + { + var t = (ticks + 45) % (360f * speed) * (Math.PI / 180) * 1f / speed; + var loc = ViewportOrigin + new float2(-15,4) * float2.FromAngle( (float)t ); + Game.viewport.Center(loc); + } + int ticks = 0; float speed = 4f; public void Tick(Actor self) { - var loc = new float2( - (float)(-System.Math.Sin((ticks + 45) % (360f * speed) * (Math.PI / 180) * 1f / speed) * 15f + ViewportOrigin.X), - (float)(0.4f*System.Math.Cos((ticks + 45) % (360f * speed) * (Math.PI / 180) * 1f / speed) * 10f + ViewportOrigin.Y)); - Game.MoveViewport(loc); + SetViewport(); if (ticks == 0) { diff --git a/mods/cnc/uibits/loadscreen.png b/mods/cnc/uibits/loadscreen.png deleted file mode 100644 index 85e73515c367d6487c8f16fbe15a3afc07474d0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27258 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 Jpzb@x{11o`&gB3A