diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2023-01-29 12:37:57 -0500 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2023-01-29 12:37:57 -0500 |
commit | 9207d32a2463ec726cfe0cb137ef0321b7cadb66 (patch) | |
tree | e90341ca28b6b72a91a41c7c04c790aa0b22e0e4 /Lingo.asl | |
parent | 3c4ba9806f4f29b5596a1ce689cb6cd55ea9f6a0 (diff) | |
download | autosplitters-9207d32a2463ec726cfe0cb137ef0321b7cadb66.tar.gz autosplitters-9207d32a2463ec726cfe0cb137ef0321b7cadb66.tar.bz2 autosplitters-9207d32a2463ec726cfe0cb137ef0321b7cadb66.zip |
[Lingo] Added splitting using a config file
Diffstat (limited to 'Lingo.asl')
-rw-r--r-- | Lingo.asl | 81 |
1 files changed, 67 insertions, 14 deletions
diff --git a/Lingo.asl b/Lingo.asl index e918857..b448010 100644 --- a/Lingo.asl +++ b/Lingo.asl | |||
@@ -24,6 +24,39 @@ startup | |||
24 | 24 | ||
25 | vars.prevPanel = ""; | 25 | vars.prevPanel = ""; |
26 | 26 | ||
27 | vars.configFiles = null; | ||
28 | vars.settings = settings; | ||
29 | var findConfigFiles = (Action<string>)((string folder) => { | ||
30 | var files = new List<string>(); | ||
31 | if (folder != null) { | ||
32 | vars.log("Searching for config files in '" + folder + "'"); | ||
33 | files.AddRange(System.IO.Directory.GetFiles(folder, "*.lingo_config")); | ||
34 | files.AddRange(System.IO.Directory.GetFiles(folder, "*.lingo_config.txt")); | ||
35 | files.AddRange(System.IO.Directory.GetFiles(folder, "*.lingo_conf")); | ||
36 | files.AddRange(System.IO.Directory.GetFiles(folder, "*.lingo_confi")); | ||
37 | vars.log("Found " + files.Count + " config files"); | ||
38 | } | ||
39 | |||
40 | // Only add the parent setting the first time we call this function | ||
41 | if (vars.configFiles == null) { | ||
42 | vars.configFiles = new Dictionary<string, string>(); | ||
43 | vars.settings.Add("configs", (files.Count > 0), "Split based on configuration file:"); | ||
44 | } | ||
45 | |||
46 | foreach (var file in files) { | ||
47 | string fileName = file.Split('\\').Last(); | ||
48 | if (vars.configFiles.ContainsKey(fileName)) continue; | ||
49 | vars.configFiles[fileName] = file; | ||
50 | vars.settings.Add(fileName, false, null, "configs"); | ||
51 | } | ||
52 | }); | ||
53 | // Search for config files relative to LiveSplit.exe | ||
54 | findConfigFiles(Directory.GetCurrentDirectory()); | ||
55 | // Search for config files relative to the current layout | ||
56 | findConfigFiles(System.IO.Path.GetDirectoryName(timer.Layout.FilePath)); | ||
57 | // Search for config files relative to the current splits | ||
58 | findConfigFiles(System.IO.Path.GetDirectoryName(timer.Run.FilePath)); | ||
59 | |||
27 | vars.log("Autosplitter loaded"); | 60 | vars.log("Autosplitter loaded"); |
28 | 61 | ||
29 | vars.levelOneThePanels = new List<String>{ | 62 | vars.levelOneThePanels = new List<String>{ |
@@ -85,17 +118,7 @@ init | |||
85 | vars.log(String.Format("Magic autosplitter array: {0}", ptr.ToString("X"))); | 118 | vars.log(String.Format("Magic autosplitter array: {0}", ptr.ToString("X"))); |
86 | 119 | ||
87 | vars.updateText = false; | 120 | vars.updateText = false; |
88 | if (settings["showLastPanel"]) { | 121 | vars.configWaypoints = null; |
89 | foreach (LiveSplit.UI.Components.IComponent component in timer.Layout.Components) { | ||
90 | if (component.GetType().Name == "TextComponent") { | ||
91 | vars.tc = component; | ||
92 | vars.tcs = vars.tc.Settings; | ||
93 | vars.updateText = true; | ||
94 | vars.log("Found text component at " + component); | ||
95 | break; | ||
96 | } | ||
97 | } | ||
98 | } | ||
99 | } | 122 | } |
100 | 123 | ||
101 | update | 124 | update |
@@ -117,9 +140,36 @@ onStart | |||
117 | { | 140 | { |
118 | vars.prevPanel = vars.panel.Current; | 141 | vars.prevPanel = vars.panel.Current; |
119 | 142 | ||
120 | if (settings["showLastPanel"] && vars.updateText) { | 143 | vars.updateText = false; |
121 | vars.tcs.Text1 = "Last Panel:"; | 144 | if (settings["showLastPanel"]) { |
122 | vars.tcs.Text2 = ""; | 145 | foreach (LiveSplit.UI.Components.IComponent component in timer.Layout.Components) { |
146 | if (component.GetType().Name == "TextComponent") { | ||
147 | vars.tc = component; | ||
148 | vars.tcs = vars.tc.Settings; | ||
149 | vars.tcs.Text1 = "Last Panel:"; | ||
150 | vars.tcs.Text2 = ""; | ||
151 | vars.updateText = true; | ||
152 | vars.log("Found text component at " + component); | ||
153 | break; | ||
154 | } | ||
155 | } | ||
156 | } | ||
157 | |||
158 | vars.configWaypoints = null; | ||
159 | if (settings["configs"]) { | ||
160 | string[] lines = {""}; | ||
161 | foreach (var configFile in vars.configFiles.Keys) { | ||
162 | if (settings[configFile]) { | ||
163 | // Full path is saved in the dictionary. | ||
164 | var splitlist = System.IO.File.ReadAllLines(vars.configFiles[configFile]); | ||
165 | if (splitlist != null) { | ||
166 | vars.configWaypoints = new List<string>(splitlist); | ||
167 | } | ||
168 | vars.log("Selected config file: " + configFile); | ||
169 | vars.log("Config contains " + splitlist.Length + " lines"); | ||
170 | break; | ||
171 | } | ||
172 | } | ||
123 | } | 173 | } |
124 | } | 174 | } |
125 | 175 | ||
@@ -149,6 +199,9 @@ split | |||
149 | } else if (settings["levelOneOranges"] && vars.levelOneOranges.Contains(vars.panel.Current)) { | 199 | } else if (settings["levelOneOranges"] && vars.levelOneOranges.Contains(vars.panel.Current)) { |
150 | action = "SPLIT"; | 200 | action = "SPLIT"; |
151 | vars.log("Split on LL1 tower orange"); | 201 | vars.log("Split on LL1 tower orange"); |
202 | } else if (settings["configs"] && vars.configWaypoints != null && vars.configWaypoints.Contains(vars.panel.Current)) { | ||
203 | action = "SPLIT"; | ||
204 | vars.log("Split on config file"); | ||
152 | } | 205 | } |
153 | 206 | ||
154 | vars.prevPanel = vars.panel.Current; | 207 | vars.prevPanel = vars.panel.Current; |