Saner load code for cnc. Installing not yet implemented.

This commit is contained in:
Paul Chote
2011-05-09 20:39:26 +12:00
parent 3d347848f3
commit 372d2f5426
11 changed files with 170 additions and 97 deletions

View File

@@ -15,7 +15,7 @@ namespace OpenRA.Mods.RA
{
public class NullLoadScreen : ILoadScreen
{
public void Init() {}
public void Init(Dictionary<string, string> info) {}
public void Display()
{
if (Game.Renderer == null)

View File

@@ -32,7 +32,7 @@ namespace OpenRA.Mods.RA
Renderer r;
SpriteFont Font;
public void Init()
public void Init(Dictionary<string, string> info)
{
// Avoid standard loading mechanisms so we
// can display loadscreen as early as possible

View File

@@ -179,34 +179,6 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
}
}
// General support methods
public class Download
{
WebClient wc;
bool cancelled;
public Download(string url, string path, Action<DownloadProgressChangedEventArgs> onProgress, Action<AsyncCompletedEventArgs, bool> onComplete)
{
wc = new WebClient();
wc.Proxy = null;
wc.DownloadProgressChanged += (_,a) => onProgress(a);
wc.DownloadFileCompleted += (_,a) => onComplete(a, cancelled);
Game.OnQuit += () => Cancel();
wc.DownloadFileCompleted += (_,a) => {Game.OnQuit -= () => Cancel();};
wc.DownloadFileAsync(new Uri(url), path);
}
public void Cancel()
{
Game.OnQuit -= () => Cancel();
wc.CancelAsync();
cancelled = true;
}
}
bool ExtractZip(Widget window, string zipFile, string dest)
{
if (!File.Exists(zipFile))
@@ -299,6 +271,33 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
}
}
public class Download
{
WebClient wc;
bool cancelled;
public Download(string url, string path, Action<DownloadProgressChangedEventArgs> onProgress, Action<AsyncCompletedEventArgs, bool> onComplete)
{
wc = new WebClient();
wc.Proxy = null;
wc.DownloadProgressChanged += (_,a) => onProgress(a);
wc.DownloadFileCompleted += (_,a) => onComplete(a, cancelled);
Game.OnQuit += () => Cancel();
wc.DownloadFileCompleted += (_,a) => {Game.OnQuit -= () => Cancel();};
wc.DownloadFileAsync(new Uri(url), path);
}
public void Cancel()
{
Game.OnQuit -= () => Cancel();
wc.CancelAsync();
cancelled = true;
}
}
static class InstallUtils
{
static IEnumerable<ZipEntry> GetEntries(this ZipInputStream z)