internal void DownloadMod(UIMouseEvent evt, UIElement listeningElement)
{
Main.PlaySound(12, -1, -1, 1);
try
{
using (WebClient client = new WebClient())
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return true; });
Interface.modBrowser.selectedItem = this;
Interface.downloadMod.SetDownloading(displayname);
Interface.downloadMod.SetCancel(client.CancelAsync);
client.DownloadProgressChanged += (s, e) =>
{
Interface.downloadMod.SetProgress(e);
};
client.DownloadFileCompleted += (s, e) =>
{
Main.menuMode = Interface.modBrowserID;
if (e.Error != null)
{
if (e.Cancelled)
{
}
else
{
HttpStatusCode httpStatusCode = GetHttpStatusCode(e.Error);
if (httpStatusCode == HttpStatusCode.ServiceUnavailable)
{
Interface.errorMessage.SetMessage("The Mod Browser server is under heavy load. Try again later.");
Interface.errorMessage.SetGotoMenu(0);
Interface.errorMessage.SetFile(ErrorLogger.LogPath);
Main.gameMenu = true;
Main.menuMode = Interface.errorMessageID;
}
else
{
Interface.errorMessage.SetMessage("Unknown Mod Browser Error. Try again later.");
Interface.errorMessage.SetGotoMenu(0);
Interface.errorMessage.SetFile(ErrorLogger.LogPath);
Main.gameMenu = true;
Main.menuMode = Interface.errorMessageID;
}
}
}
else if (!e.Cancelled)
{
// Downloaded OK
File.Copy(ModLoader.ModPath + Path.DirectorySeparatorChar + "temporaryDownload.tmod", ModLoader.ModPath + Path.DirectorySeparatorChar + mod + ".tmod", true);
if (!update)
{
Interface.modBrowser.aNewModDownloaded = true;
string path = ModLoader.ModPath + Path.DirectorySeparatorChar + mod + ".enabled";
using (StreamWriter writer = File.CreateText(path))
{
writer.Write("false");
}
}
else
{
Interface.modBrowser.aModUpdated = true;
}
RemoveChild(button2);
}
// Clean up: Delete temp
File.Delete(ModLoader.ModPath + Path.DirectorySeparatorChar + "temporaryDownload.tmod");
};
client.DownloadFileAsync(new Uri(download), ModLoader.ModPath + Path.DirectorySeparatorChar + "temporaryDownload.tmod");
//client.DownloadFileAsync(new Uri(download), ModLoader.ModPath + Path.DirectorySeparatorChar + mod + ".tmod");
}
Main.menuMode = Interface.downloadModID;
}
catch (WebException e)
{
ErrorLogger.LogModBrowserException(e);
}
}