public static void Save(string filename, Scenario scenario) { using (StreamWriter file = File.CreateText(filename)) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, scenario); } }
private void btnSaveScenario_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Thalamus Scenario |*.thalscn"; saveFileDialog.Title = "Save Scenario"; saveFileDialog.InitialDirectory = Path.GetFullPath(Directory.GetCurrentDirectory() + "\\" + thalamus.ScenariosDirectory); if (saveFileDialog.ShowDialog() == DialogResult.OK) { Scenario newScenario = new Scenario(); newScenario.Name = Path.GetFileNameWithoutExtension(saveFileDialog.FileName); foreach(Character c in thalamus.Characters.Values) { CharacterDefinition cd = new CharacterDefinition(); cd.Name = c.Name; newScenario.Characters.Add(cd); foreach (KeyValuePair<string, ThalamusClientProxy> client in c.Clients.RemoteClients) { CharacterDefinition.Client clientCommand = new CharacterDefinition.Client(); clientCommand.CommandLine = client.Value.ExecutionCommand(); if (clientCommand.CommandLine.EndsWith("vshost.exe")) clientCommand.CommandLine = clientCommand.CommandLine.Replace(".vshost.exe", ".exe"); clientCommand.Arguments = client.Value.ExecutionParameters(); Console.WriteLine(String.Format("Execution command for '{0}': '{1}'.", client.Key, clientCommand.ToString())); cd.Clients.Add(clientCommand); } } if (thalamus.GetScenario(newScenario.Name) != Thalamus.Scenario.Null) { thalamus.Scenarios.Remove(newScenario.Name); } thalamus.Scenarios[newScenario.Name] = newScenario; Scenario.Save(saveFileDialog.FileName, newScenario); lstScenario.Items.Clear(); foreach (string s in thalamus.Scenarios.Keys) { lstScenario.Items.Add(s); } } }
private void lstPresets_SelectedIndexChanged(object sender, EventArgs e) { selectedScenario = thalamus.GetScenario((string)lstScenario.SelectedItem); RefreshInfo(); }