public BasicResult SaveProgress(SaveProgressRequest request) { string jsonFile = request.JsonFile; try { if (!Path.IsPathRooted(jsonFile)) { jsonFile = Path.Combine(ExePath, jsonFile); } SavedProgress progress = new SavedProgress(); progress.DiscoveredElements = _ElementsDiscovered; progress.WorkbenchState = request.WorkbenchState; using (JsonTextWriter jsonWriter = new JsonTextWriter(new StreamWriter(jsonFile))) { new JsonSerializer().Serialize(jsonWriter, progress); } ProgressDirty = false; return new BasicResult { Success = true, Exception = null }; } catch (Exception ex) { return new BasicResult { Success = false, Exception = ex }; } }
public LoadProgressResult LoadProgress(string jsonFile) { try { if (!Path.IsPathRooted(jsonFile)) { jsonFile = Path.Combine(ExePath, jsonFile); } SavedProgress progress = null; if (File.Exists(jsonFile)) { // Existing progress file using (JsonTextReader jsonReader = new JsonTextReader(new StreamReader(jsonFile))) { progress = new JsonSerializer().Deserialize<SavedProgress>(jsonReader); _ElementsDiscovered = progress.DiscoveredElements; } } else { // New game progress = new SavedProgress(); SaveProgress(new SaveProgressRequest { JsonFile = jsonFile, WorkbenchState = progress.WorkbenchState }); } ProgressDirty = false; return new LoadProgressResult { Success = true, Exception = null, WorkbenchState = progress.WorkbenchState }; } catch (Exception ex) { return new LoadProgressResult { Success = false, Exception = ex, WorkbenchState = null }; } }