コード例 #1
0
 void UsePreset(AutoSplitList preset)
 {
     Preset = preset.Name;
     cbPreset.SelectedItem = preset;
     AutoSplitList.Clear();
     AutoSplitList.AddRange(preset);
     RefreshSplitsListControl();
 }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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;
            }
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        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;
        }
コード例 #8
0
        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();
                }
            }
        }