private void butRDLAsset_Click(object sender, RoutedEventArgs e)
{
TaskListBar task = new TaskListBar() { ImgSrc = new BitmapImage(new Uri("pack://application:,,,/Resources/download-banner.jpg")) };
var thGet = new Thread(new ThreadStart(delegate
{
WebClient _downer = new WebClient();
VersionJson _version = mcversion;
string indexpath = MeCore.Config.MCPath + "\\assets\\indexes\\" + _version.assets + ".json";
if (MeCore.IsServerDedicated)
{
if (!string.IsNullOrWhiteSpace(MeCore.Config.Server.ClientPath))
{
indexpath = indexpath.Replace(MeCore.Config.MCPath, Path.Combine(MeCore.BaseDirectory, MeCore.Config.Server.ClientPath));
}
}
if (!File.Exists(indexpath))
{
task.log(Logger.HelpLog("Assets Index is missing, try downloading"));
FileHelper.CreateDirectoryForFile(indexpath);
string result = new WebClient().DownloadString(new Uri(MTMCL.Resources.UrlReplacer.getDownloadUrl() + "indexes/" + _version.assets + ".json"));
StreamWriter sw = new StreamWriter(indexpath);
sw.Write(result);
sw.Close();
}
var sr = new StreamReader(indexpath);
AssetIndex assets = JsonConvert.DeserializeObject<AssetIndex>(sr.ReadToEnd());
int i = 0;
foreach (KeyValuePair<string, AssetsEntity> entity in assets.objects)
{
i++;
Dispatcher.Invoke(new System.Windows.Forms.MethodInvoker(delegate
{
task.setTaskStatus((float)i / assets.objects.Count * 100 + "%");
}));
string url = MTMCL.Resources.UrlReplacer.getResourceUrl() + entity.Value.hash.Substring(0, 2) + "/" + entity.Value.hash;
string file = MeCore.Config.MCPath + @"\assets\objects\" + entity.Value.hash.Substring(0, 2) + "\\" + entity.Value.hash;
if (MeCore.IsServerDedicated)
{
if (!string.IsNullOrWhiteSpace(MeCore.Config.Server.ClientPath))
{
file = file.Replace(MeCore.Config.MCPath, Path.Combine(MeCore.BaseDirectory, MeCore.Config.Server.ClientPath));
}
}
FileHelper.CreateDirectoryForFile(file);
try
{
if (FileHelper.IfFileVaild(file, entity.Value.size))
{
task.log(Logger.HelpLog(string.Format("{0} exists, delete it", entity.Key)));
File.Delete(file);
}
task.log(Logger.HelpLog(string.Format("Start downloading {0}", entity.Key)));
_downer.DownloadFile(new Uri(url), file);
task.log(Logger.HelpLog(string.Format("Finish downloading {0}, Progress {1}", entity.Key, i.ToString(CultureInfo.InvariantCulture) + "/" + assets.objects.Count.ToString(CultureInfo.InvariantCulture))));
//Logger.log(i.ToString(CultureInfo.InvariantCulture), "/", assets.objects.Count.ToString(CultureInfo.InvariantCulture), file.Substring(MeCore.Config.MCPath.Length), "下载完毕");
if (i == assets.objects.Count)
{
Dispatcher.Invoke(new System.Windows.Forms.MethodInvoker(delegate
{
task.log(Logger.HelpLog("Finish redownloading assets"));
//Logger.log("assets重新下载完毕");
}));
}
}
catch (WebException ex)
{
Dispatcher.Invoke(new System.Windows.Forms.MethodInvoker(delegate
{
Logger.log(ex.Response.ResponseUri.ToString());
Logger.error(ex);
}));
}
}
}));
MeCore.MainWindow.addTask("dl-assets", task.setThread(thGet).setTask(LangManager.GetLangFromResource("TaskRDLAssets")));
}
private async void butRDLAI_Click(object sender, RoutedEventArgs e)