private async void CheckWorker_DoWork(object sender, DoWorkEventArgs e) {
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate () {
//Добавляем задачу обновления
TaskManager.AquireLock(UpdateTask);
ProfileManager.OnProfileLocked(true);
EnvironmentManager.OnFileSystemLocked(true);
EnvironmentManager.OnClosingLocked(true);
UpdateRequired = false;
StartButton.IsEnabled = false;
StartButton.SetBinding(Button.ContentProperty, WaitingButtonBinding);
}));
GameModel model = ProfileManager.CurrentProfile.GameModel;
//Проверяем наличие необходимых файлов игры
if (!ConfigurationManager.CheckGame(model)) {
SetStartEnabled(false); //Если необходимых файлов нет, просто вызываю этот метод. он при вышеуказанном условии покажет неактивную кнопку и сообщение о неправильном пути
return; //Далее идти нет смысла
}
//Проверяем наличие обновления Pack01 файлами. Возвражающее значение говорит, можно ли проходить далее по алгоритму
if (!await ImportPackages()) {
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate () {
RemoveTask();
ProfileManager.OnProfileLocked(false);
EnvironmentManager.OnFileSystemLocked(false);
EnvironmentManager.OnClosingLocked(false);
}));
return;
}
//Проверяем наличие новых обновлений
VersionPair pair = UpdateManager.CheckUpdates(ProfileManager.CurrentProfile.GameModel);
if (pair == null) {
SetStartEnabled(false);
DialogManager.ShowMessageDialog(LanguageManager.Model.ErrorOccured, LanguageManager.Model.ConnectionError);
return;
}
//Если обновление требуется
if (pair.IsUpdateRequired) {
//Если включен интегрированных движок обновления, пытаемся обновиться
if (ProfileManager.CurrentProfile.UpdateEngineEnabled) {
ShowProgressBar();
SetStartEnabled(await BeginUpdate(pair));
} else { //Если интегрированный движок отключен - показываем кнопку "Обновить игру"
SetUpdateEnabled(true);
}
} else { //Если обновление не требуется, показываем кнопку "Начать игру".
SetStartEnabled(true);
}
}