private void LoadScript() { Log.Info("[ASL] Loading new script: " + _settings.ScriptPath); _fs_watcher.Path = Path.GetDirectoryName(_settings.ScriptPath); _fs_watcher.Filter = Path.GetFileName(_settings.ScriptPath); _fs_watcher.EnableRaisingEvents = true; // New script Script = ASLParser.Parse(File.ReadAllText(_settings.ScriptPath)); Script.RefreshRateChanged += (sender, rate) => _update_timer.Interval = (int)Math.Round(1000 / rate); _update_timer.Interval = (int)Math.Round(1000 / Script.RefreshRate); Script.GameVersionChanged += (sender, version) => _settings.SetGameVersion(version); _settings.SetGameVersion(null); // Give custom ASL settings to GUI, which populates the list and // stores the ASLSetting objects which are shared between the GUI // and ASLScript try { ASLSettings settings = Script.RunStartup(_state); _settings.SetASLSettings(settings); } catch (Exception ex) { // Script already created, but startup failed, so clean up again Log.Error(ex); ScriptCleanup(); } }
private void SetSplitList() { var aslSettings = new ASLSettings(); aslSettings.AddBasicSetting("resethardware"); aslSettings.AddBasicSetting("debug"); if (_autostart != null) { aslSettings.AddBasicSetting("start"); } if (_game.Splits.Count > 0) { aslSettings.AddBasicSetting("split"); } _splits.Clear(); foreach (Split split in _game.Splits) { aslSettings.AddSetting(split.Name, split.Active || split.IsCategory(), split.Description, null); if (!split.IsCategory()) { _splits.AddRange(Enumerable.Repeat(split, split.Repeat + 1).ToList()); } else { foreach (Split s in split.Splits) { _splits.AddRange(Enumerable.Repeat(s, s.Repeat + 1).ToList()); aslSettings.AddSetting(s.Name, s.Active, s.Description, split.Name); } } } _aslSettings = aslSettings; _settings.SetASLSettings(aslSettings); }