void UsePreset(AutoSplitList preset) { Preset = preset.Name; cbPreset.SelectedItem = preset; AutoSplitList.Clear(); AutoSplitList.AddRange(preset); RefreshSplitsListControl(); }
public SkyrimSettings(SkyrimComponent component, LiveSplitState state) { InitializeComponent(); _component = component; _state = state; _uiThread = SynchronizationContext.Current; PRESETS_FILE_PATH = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + PRESETS_FILE_NAME; // defaults AutoStart = DEFAULT_AUTOSTART; AutoReset = DEFAULT_AUTORESET; AutoUpdatePresets = DEFAULT_AUTOUPDATEPRESETS; CustomAutosplits = new AutoSplitList(DEFAULT_PRESET_NAME); AutoSplitList = new AutoSplitList(); Presets = new BindingList <AutoSplitList>() { CustomAutosplits }; var addr = new SkyrimData(); _hiddenAddresses = new HashSet <string>() { addr.IsQuickSaving.Name, addr.Location.Name, addr.WorldID.Name, addr.CellX.Name, addr.CellY.Name }; _autoSplitEnv = new AutoSplitEnv() { Addresses = addr.Where(w => !_hiddenAddresses.Contains(w.Name)), Events = GameEvent.GetValues(typeof(SkyrimEvent)), Presets = Presets.Except(new AutoSplitList[] { CustomAutosplits }), DefaultVariableType = typeof(AutoSplitData.Variables.LoadScreen) }; if (File.Exists(PRESETS_FILE_PATH)) { LoadPresets(); } Preset = DEFAULT_PRESET_NAME; BearCartPBNotification = DEFAULT_BEARCARTPBNOTIFICATION; PlayBearCartSound = DEFAULT_PLAYBEARCARTSOUND; BearCartSoundPath = string.Empty; IsBearCartSecret = true; PlayBearCartSoundOnlyOnPB = DEFAULT_PLAYBEARCARTSOUNDONLYONPB; LoadBearCartConfig(); InitializeFormLogic(); InitializeToolTab(); }
bool LoadPresets(bool silentErrors = true) { var loadedPresets = new List <AutoSplitList>(); var corruptedPresets = new List <string>(); var success = true; try { var doc = new XmlDocument(); doc.Load(PRESETS_FILE_PATH); foreach (XmlElement listElem in doc.DocumentElement) { AutoSplitList preset; try { preset = AutoSplitList.FromXml(listElem, _autoSplitEnv); } catch { corruptedPresets.Add(listElem["Name"]?.InnerText); continue; } loadedPresets.Add(preset); } if (!silentErrors && corruptedPresets.Count != 0) { var errorMessage = new System.Text.StringBuilder(); errorMessage.AppendLine("The following presets could not be loaded:"); foreach (var preset in corruptedPresets) { string name = preset != null ? $"\"{preset}\"" : "(could not retrieve the name)"; errorMessage.AppendLine($"\t{name}"); } MessageBox.Show(errorMessage.ToString(), "Preset import error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch { success = false; if (!silentErrors) { MessageBox.Show("Update failed.", "Presets update failed", MessageBoxButtons.OK, MessageBoxIcon.Error); } } Presets.Clear(); Presets.Add(CustomAutosplits); foreach (var item in loadedPresets.OrderBy(x => x.Name)) { Presets.Add(item); } return(success); }
public void SetSettings(XmlNode settings) { ConvertOldSettings(settings); var element = (XmlElement)settings; disableNbrSplitCheck = true; AutoStart = SettingsHelper.ParseBool(settings["AutoStart"], DEFAULT_AUTOSTART); AutoReset = SettingsHelper.ParseBool(settings["AutoReset"], DEFAULT_AUTORESET); AutoUpdatePresets = SettingsHelper.ParseBool(settings["AutoUpdatePresets"], DEFAULT_AUTOUPDATEPRESETS); if (settings["AutoSplitList"] != null) { CustomAutosplits.Clear(); AutoSplitList customList = null; try { customList = AutoSplitList.FromXml(settings["AutoSplitList"], _autoSplitEnv); } catch { } if (customList != null) { CustomAutosplits.AddRange(customList); } } Preset = SettingsHelper.ParseString(settings["Preset"], DEFAULT_PRESET_NAME); if (!updatedPresets) { if ((AutoUpdatePresets || !File.Exists(PRESETS_FILE_PATH)) && !CheckForComponentUpdate()) { if (DownloadPresetsFile()) { LoadPresets(); } } updatedPresets = true; } UsePreset(Presets.FirstOrDefault(p => p.Name == Preset) ?? CustomAutosplits); LoadBearCartConfig(); BearCartPBNotification = SettingsHelper.ParseBool(settings["BearCartPBNotification"], DEFAULT_BEARCARTPBNOTIFICATION); PlayBearCartSound = SettingsHelper.ParseBool(settings["PlayBearCartSound"], DEFAULT_PLAYBEARCARTSOUND); BearCartSoundPath = SettingsHelper.ParseString(settings["BearCartSoundPath"], String.Empty); PlayBearCartSoundOnlyOnPB = SettingsHelper.ParseBool(settings["PlayBearCartSoundOnlyOnPB"], DEFAULT_PLAYBEARCARTSOUNDONLYONPB); if (_component.MediaPlayer != null) { _component.MediaPlayer.GeneralVolume = SettingsHelper.ParseInt(settings["Volume"], 100); } disableNbrSplitCheck = false; CheckNbrAutoSplits(); }
void CheckNbrAutoSplits() { var enabledSplitsCount = AutoSplitList.Count(s => s.Enabled); if (enabledSplitsCount != 0 && enabledSplitsCount != _state.Run.Count) { lWarningNbrAutoSplit.Text = $"Segment count: {_state.Run.Count} Enabled autosplit count: {enabledSplitsCount}"; lWarningNbrAutoSplit.Visible = true; } else { lWarningNbrAutoSplit.Visible = false; } }
public static AutoSplitList ShowEditor(AutoSplitEnv env, AutoSplitList list = null) { using (var form = new AutoSplitListEditor(env, list)) { if (form.ShowDialog() != DialogResult.Cancel) { if (list == null) { return(form.EditedList); } list.Clear(); list.AddRange(form.EditedList); } return(list); } }
public AutoSplitListEditor(AutoSplitEnv env, AutoSplitList list = null) { InitializeComponent(); FormClosing += (s, e) => { if (e.CloseReason != CloseReason.None) { DialogResult = DialogResult.OK; } }; _env = env; EditedList = list?.Clone(env) ?? new AutoSplitList(); dgvList.AutoGenerateColumns = false; dgvList.DataBindingComplete += DgvList_DataBindingComplete; dgvList.CellMouseDown += DgvList_CellMouseDown; dgvList.DataSource = new BindingList <AutoSplit>(EditedList); _cmsSplitRow = new ContextMenuStrip(); _cmsSplitRow.Items.Add("Edit...", null, (s, e) => EditSelectedRow()); _cmsSplitRow.Items.Add("-"); _cmsSplitRow.Items.Add("Move up", null, (s, e) => DgvList_SelectRow(DgvList_MoveRow(dgvList.SelectedRows[0], -1))); _cmsSplitRow.Items.Add("Move down", null, (s, e) => DgvList_SelectRow(DgvList_MoveRow(dgvList.SelectedRows[0], 1))); _cmsSplitRow.Items.Add("-"); _cmsSplitRow.Items.Add("Remove", null, (s, e) => DgvList_RemoveSelectedRow()); btnEdit.Click += (s, e) => EditSelectedRow(); btnMoveUp.Click += (s, e) => DgvList_SelectRow(DgvList_MoveRow(dgvList.SelectedRows[0], -1)); btnMoveDown.Click += (s, e) => DgvList_SelectRow(DgvList_MoveRow(dgvList.SelectedRows[0], 1)); btnRemove.Click += (s, e) => DgvList_RemoveSelectedRow(); _cmsAddFromPreset = new ContextMenuStrip(); PopulateAddFromPresetCM(_env.Presets); btnAddFromPreset.Click += BtnAddFromPreset_Click; }
void btnImport_Click(object sender, EventArgs e) { var path = ShowOpenFileDialog(); if (string.IsNullOrEmpty(path)) { return; } var doc = new XmlDocument(); doc.Load(path); var root = doc.DocumentElement; XmlElement splitsListElem = null; if (System.IO.Path.GetExtension(path).ToLower() == ".lss") { splitsListElem = root["AutoSplitterSettings"]?["AutoSplitList"]; } else { if (root.HasChildNodes) { splitsListElem = (XmlElement)root.FirstChild; } } if (splitsListElem == null || !AutoSplitList.IsValidXml(splitsListElem)) { MessageBox.Show("Invalid autosplit list file.", "Import failed", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } AutoSplitList importedList = null; try { importedList = AutoSplitList.FromXml(splitsListElem, _env); } catch { MessageBox.Show("Import error.", "Import failed", MessageBoxButtons.OK, MessageBoxIcon.Error); } if (importedList != null) { var dialogResult = DialogResult.None; if (EditedList.Count > 0) { dialogResult = MessageBox.Show("Keep current list and append imported autosplits?\nChoose No to replace the list.", "Import autosplits", MessageBoxButtons.YesNoCancel); } if (dialogResult != DialogResult.Cancel) { if (dialogResult == DialogResult.No) { EditedList.Clear(); } EditedList.AddRange(importedList); DgvList_ResetBindings(); } } }