diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj index e63a294bc2..7aec37fb59 100755 --- a/OpenRA.Game/OpenRA.Game.csproj +++ b/OpenRA.Game/OpenRA.Game.csproj @@ -181,6 +181,7 @@ + diff --git a/OpenRA.Game/Widgets/ProgressBarWidget.cs b/OpenRA.Game/Widgets/ProgressBarWidget.cs new file mode 100644 index 0000000000..f2fb407776 --- /dev/null +++ b/OpenRA.Game/Widgets/ProgressBarWidget.cs @@ -0,0 +1,40 @@ +#region Copyright & License Information +/* + * Copyright 2007-2010 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see LICENSE. + */ +#endregion + +using System; +using System.Drawing; +using OpenRA.Graphics; +using System.Collections.Generic; + +namespace OpenRA.Widgets +{ + public class ProgressBarWidget : Widget + { + public int Percentage = 0; + + public ProgressBarWidget() : base() {} + protected ProgressBarWidget(ProgressBarWidget widget) + : base(widget) + { + Percentage = widget.Percentage; + } + + public override void DrawInner() + { + WidgetUtils.DrawPanel("dialog3", RenderBounds); + + var barRect = new Rectangle(RenderBounds.X + 2, RenderBounds.Y + 2, Percentage * (RenderBounds.Width - 4) / 100, RenderBounds.Height - 4); + if (barRect.Width > 0) + WidgetUtils.DrawPanel("dialog2", barRect); + } + + public override Widget Clone() { return new ProgressBarWidget(this); } + } +} \ No newline at end of file diff --git a/OpenRA.Mods.RA/Widgets/Delegates/GameInitDelegate.cs b/OpenRA.Mods.RA/Widgets/Delegates/GameInitDelegate.cs index 63315a036a..84656627e2 100755 --- a/OpenRA.Mods.RA/Widgets/Delegates/GameInitDelegate.cs +++ b/OpenRA.Mods.RA/Widgets/Delegates/GameInitDelegate.cs @@ -81,8 +81,13 @@ namespace OpenRA.Mods.RA.Widgets.Delegates var status = window.GetWidget("STATUS"); status.GetText = () => "Initializing..."; + var progress = window.GetWidget("PROGRESS"); + var dl = DownloadUrl(Info.PackageURL, Info.PackagePath, - (_,i) => status.GetText = () => "{0}% {1}/{2} bytes".F(i.ProgressPercentage, i.BytesReceived, i.TotalBytesToReceive), + (_,i) => { + status.GetText = () => "Downloading {1}/{2} kB ({0}%)".F(i.ProgressPercentage, i.BytesReceived/1024, i.TotalBytesToReceive/1024); + progress.Percentage = i.ProgressPercentage; + }, (_,i) => status.GetText = () => "Download Complete"); window.GetWidget("CANCEL").OnMouseUp = mi => { CancelDownload(dl); ShowInstallMethodDialog(); return true; }; diff --git a/mods/cnc/chrome/gameinit.yaml b/mods/cnc/chrome/gameinit.yaml index ec1aa20d21..ec1bd2a943 100644 --- a/mods/cnc/chrome/gameinit.yaml +++ b/mods/cnc/chrome/gameinit.yaml @@ -75,7 +75,8 @@ Background@INIT_DOWNLOAD: Text:Downloading C&C Content Align:Center Bold:True - TextField@PROGRESS: + ProgressBar@PROGRESS: + Id:PROGRESS X:50 Y:65 Width:PARENT_RIGHT - 100