public void installSet(Windows.ChangeSetsProgressDialog wnd, int max, Octgn.Data.Game game) { wnd.UpdateProgress(0, max, "Retrieving xml...", false); XmlSetParser xmls = xml_set; wnd.UpdateProgress(1, max, "Parsing retrieved xml...", false); xmls.check(); bool is_spoiler_installed = true; Data.Set set = null; string path = Path.Combine(Prefs.DataDirectory, "Games", game.Id.ToString(), "Sets"); string downloadto = Path.Combine(path) + xmls.name() + ".o8s"; var cli = new WebClient(); wnd.UpdateProgress(2, max, "Downloading new definition...", false); cli.Credentials = new System.Net.NetworkCredential(xmls.user(), xmls.password()); cli.DownloadFile(xmls.link(), downloadto); wnd.UpdateProgress(3, max, "Checking for existence of old definition...", false); try { set = game.Sets.First<Data.Set>(_set => _set.Id.ToString() == xmls.uuid()); } catch { is_spoiler_installed = false; } if (is_spoiler_installed) { wnd.UpdateProgress(4, max, "Removing old definition...", false); game.DeleteSet(set); } wnd.UpdateProgress(5, max, "Installing new definition...", false); game.InstallSet(downloadto); wnd.UpdateProgress(6, max, "Set installed correctly", false); }
private void DeleteGame(Octgn.Data.Game game) { String opath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Octgn"); String masterDbPath = Path.Combine(opath, "master.vdb3"); ; using(var dda = VistaDBEngine.Connections.OpenDDA()) using(var masterDb = dda.OpenDatabase(masterDbPath, VistaDBDatabaseOpenMode.NonexclusiveReadWrite, null)) using(var gamesTable = masterDb.OpenTable("Game", false, false)) { masterDb.BeginTransaction(); try { if(gamesTable.Find("id:'" + game.Id.ToString() + "'", "GamePK", false, false)) { gamesTable.Unlock(gamesTable.CurrentRow.RowId); gamesTable.Delete(); foreach(Set s in game.Sets) { game.DeleteSet(s); } } } catch(VistaDBException e) { String s = e.StackTrace; MessageBox.Show(s); masterDb.RollbackTransaction(); } } }