public static void HandleUserPreset(object sender, EventArgs e) { MainInterface.CurrentProgram.presetsToolStripMenuItem.DropDownItems.Clear(); MainInterface.CurrentProgram.changeLogicToolStripMenuItem.DropDownItems.Clear(); if (LogicEditor.EditorForm != null) { LogicEditor.EditorForm.templatesToolStripMenuItem.DropDownItems.Clear(); } List <ToolStripMenuItem> NewPresets = new List <ToolStripMenuItem>(); List <ToolStripMenuItem> RecreatePresets = new List <ToolStripMenuItem>(); List <ToolStripMenuItem> LogicEditorPresets = new List <ToolStripMenuItem>(); int counter = 0; ImportPresetFiles(); AddDevPresets(); ImportWebPresets(); ApplyPresetsToMenuItems(); void ImportPresetFiles() { if (!Directory.Exists(@"Recources\Other Files\Custom Logic Presets")) { try { Directory.CreateDirectory((@"Recources\Other Files\Custom Logic Presets")); } catch { } } else { foreach (var i in Directory.GetFiles(@"Recources\Other Files\Custom Logic Presets").Where(x => x.EndsWith(".txt") && !x.Contains("Web Presets.txt"))) { ToolStripMenuItem CustomLogicPreset = new ToolStripMenuItem { Name = $"PresetNewLogic{counter}", Size = new System.Drawing.Size(180, 22), Text = Path.GetFileName(i).Replace(".txt", "") }; counter++; CustomLogicPreset.Click += (s, ee) => LoadMainLogicPreset(i, "", s, ee, ""); NewPresets.Add(CustomLogicPreset); ToolStripMenuItem CustomLogicPresetRecreate = new ToolStripMenuItem { Name = $"PresetChangeLogic{counter}", Size = new System.Drawing.Size(180, 22), Text = Path.GetFileName(i).Replace(".txt", "") }; counter++; CustomLogicPresetRecreate.Click += (s, ee) => LoadMainLogicPreset(i, "", s, ee, "", false); RecreatePresets.Add(CustomLogicPresetRecreate); ToolStripMenuItem CustomLogicPresetLogicEditor = new ToolStripMenuItem { Name = $"PresetLogicEditor{counter}", Size = new System.Drawing.Size(180, 22), Text = Path.GetFileName(i).Replace(".txt", "") }; counter++; CustomLogicPresetLogicEditor.Click += (s, ee) => LoadEditorLogicPreset(i, "", s, ee); LogicEditorPresets.Add(CustomLogicPresetLogicEditor); } } } void ImportWebPresets() { if (File.Exists(@"Recources\Other Files\Custom Logic Presets\Web Presets.txt")) { var TextFile = File.ReadAllLines(@"Recources\Other Files\Custom Logic Presets\Web Presets.txt"); AddPersonalPresets(TextFile); WebPresetData WebEntry = null; foreach (var i in TextFile) { if (i.StartsWith("Name:")) { AddWebEntry(); WebEntry = new WebPresetData(); WebEntry.Name = Regex.Replace(i, "Name:", "", RegexOptions.IgnoreCase).Trim(); } if (i.StartsWith("Dictionary:")) { WebEntry.Dictionary = Regex.Replace(i, "Dictionary:", "", RegexOptions.IgnoreCase).Trim(); } if (i.StartsWith("Address:")) { WebEntry.Logic = Regex.Replace(i, "Address:", "", RegexOptions.IgnoreCase).Trim(); } counter++; } AddWebEntry(); void AddWebEntry() { if (WebEntry != null) { WebPresetData ClickData = new WebPresetData { Logic = WebEntry.Logic, Dictionary = WebEntry.Dictionary }; ToolStripMenuItem CustomLogicPreset = new ToolStripMenuItem(); CustomLogicPreset.Name = $"PresetNewLogic{counter}"; CustomLogicPreset.Text = WebEntry.Name; CustomLogicPreset.Click += (s, ee) => LoadMainLogicPreset("", ClickData.Logic, s, ee, ClickData.Dictionary); NewPresets.Add(CustomLogicPreset); ToolStripMenuItem CustomLogicPresetRecreate = new ToolStripMenuItem(); CustomLogicPresetRecreate.Name = $"PresetChangeLogic{counter}"; CustomLogicPresetRecreate.Text = WebEntry.Name; CustomLogicPresetRecreate.Click += (s, ee) => LoadMainLogicPreset("", ClickData.Logic, s, ee, ClickData.Dictionary, false); RecreatePresets.Add(CustomLogicPresetRecreate); ToolStripMenuItem CustomLogicPresetEditor = new ToolStripMenuItem(); CustomLogicPresetEditor.Name = $"PresetEditorLogic{counter}"; CustomLogicPresetEditor.Text = WebEntry.Name; CustomLogicPresetEditor.Click += (s, ee) => LoadEditorLogicPreset("", ClickData.Logic, s, ee, ClickData.Dictionary); LogicEditorPresets.Add(CustomLogicPresetEditor); //Console.WriteLine($"Adding Web Entry \nName: {CustomLogicPreset.Text}\nDic: {WebEntry.Dictionary}\nLogic: {WebEntry.Logic}"); } } } } void ApplyPresetsToMenuItems() { if (NewPresets.Count() < 1) { ToolStripMenuItem CustomLogicPreset = new ToolStripMenuItem { Name = "newToolStripMenuItem", Size = new System.Drawing.Size(180, 22), Text = "No Presets Found (Open Folder)" }; CustomLogicPreset.Click += (s, ee) => MainInterface.CurrentProgram.presetsToolStripMenuItem_Click(s, ee); MainInterface.CurrentProgram.presetsToolStripMenuItem.DropDownItems.Add(CustomLogicPreset); } else { foreach (var i in NewPresets.OrderBy(x => x.Text)) { MainInterface.CurrentProgram.presetsToolStripMenuItem.DropDownItems.Add(i); } foreach (var i in RecreatePresets.OrderBy(x => x.Text)) { MainInterface.CurrentProgram.changeLogicToolStripMenuItem.DropDownItems.Add(i); } if (LogicEditor.EditorForm != null) { foreach (var i in LogicEditorPresets.OrderBy(x => x.Text)) { LogicEditor.EditorForm.templatesToolStripMenuItem.DropDownItems.Add(i); } } ToolStripMenuItem newRecreatePreset = new ToolStripMenuItem { Name = $"PresetChangeLogic{counter + 1}", Size = new System.Drawing.Size(180, 22), Text = "Browse" }; newRecreatePreset.Click += (s, ee) => LogicEditing.RecreateLogic(LogicObjects.MainTrackerInstance); MainInterface.CurrentProgram.changeLogicToolStripMenuItem.DropDownItems.Add(newRecreatePreset); } } void AddPersonalPresets(string[] TextFile) { if (Debugging.ISDebugging || Environment.MachineName == "DESKTOP-HBDL7AN") { if (!TextFile.Contains("Name: Thedrummonger Glitched Logic")) { File.AppendAllText(@"Recources\Other Files\Custom Logic Presets\Web Presets.txt", "\nName: Thedrummonger Glitched Logic"); File.AppendAllText(@"Recources\Other Files\Custom Logic Presets\Web Presets.txt", "\nAddress: https://raw.githubusercontent.com/Thedrummonger/MMR-Logic/master/Logic%20File.txt"); } if (!TextFile.Contains("Name: Thedrummonger Entrance Rando")) { File.AppendAllText(@"Recources\Other Files\Custom Logic Presets\Web Presets.txt", "\nName: Thedrummonger Entrance Rando"); File.AppendAllText(@"Recources\Other Files\Custom Logic Presets\Web Presets.txt", "\nAddress: https://raw.githubusercontent.com/Thedrummonger/MMR-Logic/Entrance-Radno-Logic/Logic%20File.txt"); } } } void AddDevPresets() { if (!Debugging.ISDebugging || !Directory.Exists(@"Recources\Other Files\Other Game Premade Logic")) { return; } foreach (var i in Directory.GetFiles(@"Recources\Other Files\Other Game Premade Logic").Where(x => x.EndsWith(".txt") && !x.Contains("Web Presets.txt"))) { ToolStripMenuItem CustomLogicPreset = new ToolStripMenuItem { Name = $"PresetNewLogic{counter}", Size = new System.Drawing.Size(180, 22), Text = Path.GetFileName(i).Replace(".txt", "") + " DEV" }; counter++; CustomLogicPreset.Click += (s, ee) => LoadMainLogicPreset(i, "", s, ee, ""); NewPresets.Add(CustomLogicPreset); ToolStripMenuItem CustomLogicPresetRecreate = new ToolStripMenuItem { Name = $"PresetChangeLogic{counter}", Size = new System.Drawing.Size(180, 22), Text = Path.GetFileName(i).Replace(".txt", "") + " DEV" }; counter++; CustomLogicPresetRecreate.Click += (s, ee) => LoadMainLogicPreset(i, "", s, ee, "", false); RecreatePresets.Add(CustomLogicPresetRecreate); ToolStripMenuItem CustomLogicPresetEditor = new ToolStripMenuItem { Name = $"PresetChangeLogic{counter}", Size = new System.Drawing.Size(180, 22), Text = Path.GetFileName(i).Replace(".txt", "") + " DEV" }; counter++; CustomLogicPresetEditor.Click += (s, ee) => LoadEditorLogicPreset(i, "", s, ee); LogicEditorPresets.Add(CustomLogicPresetEditor); } } }