From 4c77425dc56ec8a6804738992ffcd01fe8f71804 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Thu, 13 Feb 2025 13:20:38 -0500 Subject: [Lingo 2] Added config files --- Lingo 2.asl | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 118 insertions(+), 6 deletions(-) (limited to 'Lingo 2.asl') diff --git a/Lingo 2.asl b/Lingo 2.asl index 2b8be1a..6a9e22a 100644 --- a/Lingo 2.asl +++ b/Lingo 2.asl @@ -33,6 +33,48 @@ startup vars.visitedMaps = new HashSet(); vars.collectedKeys = new HashSet(); vars.latestKeyKey = null; + vars.importantPanels = new HashSet(); + vars.importantMultiPanels = new HashSet(); + vars.importantMaps = new HashSet(); + vars.importantMultiMaps = new HashSet(); + vars.importantKeys = new HashSet(); + vars.importantCollectibles = new HashSet(); + + vars.configFiles = null; + vars.settings = settings; + var findConfigFiles = (Action)((string folder) => { + var files = new List(); + if (folder != null) + { + vars.log("Searching for config files in '" + folder + "'"); + files.AddRange(System.IO.Directory.GetFiles(folder, "*.lingo2_config")); + files.AddRange(System.IO.Directory.GetFiles(folder, "*.lingo2_config.txt")); + files.AddRange(System.IO.Directory.GetFiles(folder, "*.lingo2_conf")); + files.AddRange(System.IO.Directory.GetFiles(folder, "*.lingo2_confi")); + vars.log("Found " + files.Count + " config files"); + } + + // Only add the parent setting the first time we call this function + if (vars.configFiles == null) + { + vars.configFiles = new Dictionary(); + vars.settings.Add("configs", (files.Count > 0), "Split based on configuration file:"); + } + + foreach (var file in files) + { + string fileName = file.Split('\\').Last(); + if (vars.configFiles.ContainsKey(fileName)) continue; + vars.configFiles[fileName] = file; + vars.settings.Add(fileName, false, null, "configs"); + } + }); + // Search for config files relative to LiveSplit.exe + findConfigFiles(Directory.GetCurrentDirectory()); + // Search for config files relative to the current layout + findConfigFiles(System.IO.Path.GetDirectoryName(timer.Layout.FilePath)); + // Search for config files relative to the current splits + findConfigFiles(System.IO.Path.GetDirectoryName(timer.Run.FilePath)); vars.log("Autosplitter loaded"); } @@ -73,6 +115,71 @@ init vars.lastPanelPath = new StringWatcher(ptr + 135, 101); vars.log(String.Format("Magic autosplitter array: {0}", ptr.ToString("X"))); + + if (settings["configs"]) + { + string[] lines = {""}; + foreach (var configFile in vars.configFiles.Keys) + { + if (settings[configFile]) + { + // Full path is saved in the dictionary. + lines = System.IO.File.ReadAllLines(vars.configFiles[configFile]); + vars.log("Selected config file: " + configFile); + break; + } + } + if (lines.Length == 0) + { + vars.log("Config file empty or no config file selected!"); + } + else + { + string mode = ""; + for (int i=0; i