From 94838bb503e28e18e7885b2bc76669cec45aa147 Mon Sep 17 00:00:00 2001 From: Vultumast <152120810+Vultumast@users.noreply.github.com> Date: Thu, 8 Aug 2024 21:23:51 -0400 Subject: [PATCH] Multiuser support --- RainWorldSaveEditor/Editor Classes/Utils.cs | 61 ++++++++++--------- .../Forms/MainForm.Designer.cs | 32 ++++------ RainWorldSaveEditor/Forms/MainForm.cs | 39 +++++++++++- 3 files changed, 79 insertions(+), 53 deletions(-) diff --git a/RainWorldSaveEditor/Editor Classes/Utils.cs b/RainWorldSaveEditor/Editor Classes/Utils.cs index 959f602..1deda95 100644 --- a/RainWorldSaveEditor/Editor Classes/Utils.cs +++ b/RainWorldSaveEditor/Editor Classes/Utils.cs @@ -8,49 +8,50 @@ using System.Text; using System.Threading.Tasks; -namespace RainWorldSaveEditor +namespace RainWorldSaveEditor; + +public static class Utils { - public static class Utils - { - private static ResourceManager _resourceManager = null!; - private static ResourceSet _resourceSet = null!; + public const string RainworldSaveDirectoryPostFix = "AppData\\LocalLow\\Videocult\\Rain World"; - public static System.Text.Json.JsonSerializerOptions JSONSerializerOptions { get; private set; } = new() { WriteIndented = true }; + private static ResourceManager _resourceManager = null!; + private static ResourceSet _resourceSet = null!; - public static ResourceManager ResourceManager + public static System.Text.Json.JsonSerializerOptions JSONSerializerOptions { get; private set; } = new() { WriteIndented = true }; + + public static ResourceManager ResourceManager + { + get { - get - { - if (_resourceManager is null) - _resourceManager = new ResourceManager("RainWorldSaveEditor.Properties.Resources", Assembly.GetExecutingAssembly()); + if (_resourceManager is null) + _resourceManager = new ResourceManager("RainWorldSaveEditor.Properties.Resources", Assembly.GetExecutingAssembly()); - return _resourceManager; - } + return _resourceManager; } + } - public static ResourceSet ResourceSet + public static ResourceSet ResourceSet + { + get { - get - { - if (_resourceSet is null) - _resourceSet = ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true)!; + if (_resourceSet is null) + _resourceSet = ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true)!; - return _resourceSet; - } + return _resourceSet; } - public static IEnumerable ResourceList() + } + public static IEnumerable ResourceList() + { + foreach (var item in ResourceSet) { - foreach (var item in ResourceSet) + if (item.GetType() != typeof(DictionaryEntry)) { - if (item.GetType() != typeof(DictionaryEntry)) - { - Logger.Warn($"Resource: \"{item}\" was not expected type. It was \"{item.GetType()}\""); - continue; - } - - yield return (DictionaryEntry)item; + Logger.Warn($"Resource: \"{item}\" was not expected type. It was \"{item.GetType()}\""); + continue; } - } + yield return (DictionaryEntry)item; + } } + } diff --git a/RainWorldSaveEditor/Forms/MainForm.Designer.cs b/RainWorldSaveEditor/Forms/MainForm.Designer.cs index 3cbd92c..68fa777 100644 --- a/RainWorldSaveEditor/Forms/MainForm.Designer.cs +++ b/RainWorldSaveEditor/Forms/MainForm.Designer.cs @@ -35,8 +35,7 @@ private void InitializeComponent() openToolStripMenuItem = new ToolStripMenuItem(); openRainWorldSaveDirectoryToolStripMenuItem = new ToolStripMenuItem(); rainworldExecutableDirectoryToolStripMenuItem = new ToolStripMenuItem(); - saveToolStripMenuItem = new ToolStripMenuItem(); - saveAsToolStripMenuItem = new ToolStripMenuItem(); + userProfileToolStripMenuItem = new ToolStripMenuItem(); toolStripSeparator1 = new ToolStripSeparator(); closeAndLaunchGameToolStripMenuItem = new ToolStripMenuItem(); closeToolStripMenuItem = new ToolStripMenuItem(); @@ -78,7 +77,7 @@ private void InitializeComponent() // // fileToolStripMenuItem // - fileToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, toolStripSeparator1, closeAndLaunchGameToolStripMenuItem, closeToolStripMenuItem }); + fileToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { openToolStripMenuItem, userProfileToolStripMenuItem, toolStripSeparator1, closeAndLaunchGameToolStripMenuItem, closeToolStripMenuItem }); fileToolStripMenuItem.Name = "fileToolStripMenuItem"; fileToolStripMenuItem.Size = new Size(37, 20); fileToolStripMenuItem.Text = "File"; @@ -106,19 +105,11 @@ private void InitializeComponent() rainworldExecutableDirectoryToolStripMenuItem.ToolTipText = "Open the Rain World Executable directory"; rainworldExecutableDirectoryToolStripMenuItem.Click += rainworldExecutableDirectoryToolStripMenuItem_Click; // - // saveToolStripMenuItem + // userProfileToolStripMenuItem // - saveToolStripMenuItem.Name = "saveToolStripMenuItem"; - saveToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.S; - saveToolStripMenuItem.Size = new Size(202, 22); - saveToolStripMenuItem.Text = "Save"; - // - // saveAsToolStripMenuItem - // - saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem"; - saveAsToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.Shift | Keys.S; - saveAsToolStripMenuItem.Size = new Size(202, 22); - saveAsToolStripMenuItem.Text = "Save As..."; + userProfileToolStripMenuItem.Name = "userProfileToolStripMenuItem"; + userProfileToolStripMenuItem.Size = new Size(202, 22); + userProfileToolStripMenuItem.Text = "User Profile"; // // toolStripSeparator1 // @@ -151,7 +142,7 @@ private void InitializeComponent() // openToolStripMenuItem1.DropDownItems.AddRange(new ToolStripItem[] { openFile1ToolStripMenuItem, openFile2ToolStripMenuItem, openFile3ToolStripMenuItem, toolStripSeparator3, openFileToolStripMenuItem }); openToolStripMenuItem1.Name = "openToolStripMenuItem1"; - openToolStripMenuItem1.Size = new Size(180, 22); + openToolStripMenuItem1.Size = new Size(123, 22); openToolStripMenuItem1.Text = "Open"; // // openFile1ToolStripMenuItem @@ -194,18 +185,18 @@ private void InitializeComponent() // toolStripSeparator2 // toolStripSeparator2.Name = "toolStripSeparator2"; - toolStripSeparator2.Size = new Size(177, 6); + toolStripSeparator2.Size = new Size(120, 6); // // saveToolStripMenuItem1 // saveToolStripMenuItem1.Name = "saveToolStripMenuItem1"; - saveToolStripMenuItem1.Size = new Size(180, 22); + saveToolStripMenuItem1.Size = new Size(123, 22); saveToolStripMenuItem1.Text = "Save"; // // saveAsToolStripMenuItem1 // saveAsToolStripMenuItem1.Name = "saveAsToolStripMenuItem1"; - saveAsToolStripMenuItem1.Size = new Size(180, 22); + saveAsToolStripMenuItem1.Size = new Size(123, 22); saveAsToolStripMenuItem1.Text = "Save As..."; saveAsToolStripMenuItem1.Click += saveAsToolStripMenuItem1_Click; // @@ -332,8 +323,6 @@ private void InitializeComponent() private ToolStripMenuItem fileToolStripMenuItem; private ToolStripMenuItem closeToolStripMenuItem; private ToolStripMenuItem openToolStripMenuItem; - private ToolStripMenuItem saveToolStripMenuItem; - private ToolStripMenuItem saveAsToolStripMenuItem; private ToolStripSeparator toolStripSeparator1; private ToolStripMenuItem openRainWorldSaveDirectoryToolStripMenuItem; private ToolStripMenuItem closeAndLaunchGameToolStripMenuItem; @@ -361,4 +350,5 @@ private void InitializeComponent() private ToolStripSeparator toolStripSeparator4; private ToolStripMenuItem exportToolStripMenuItem; private ToolStripMenuItem importToolStripMenuItem; + private ToolStripMenuItem userProfileToolStripMenuItem; } diff --git a/RainWorldSaveEditor/Forms/MainForm.cs b/RainWorldSaveEditor/Forms/MainForm.cs index 5fb87f9..1fe264d 100644 --- a/RainWorldSaveEditor/Forms/MainForm.cs +++ b/RainWorldSaveEditor/Forms/MainForm.cs @@ -56,11 +56,31 @@ private void MainForm_Load(object sender, EventArgs e) settings.Save(); } + List userDirs = [ ]; + var dirs = Directory.GetDirectories("C:\\Users\\"); - if (!Directory.Exists(settings.RainWorldSaveDirectory)) + foreach (var dir in dirs) { - Logger.Warn($"RAIN WORLD DIRECTORY DOESNT EXIST WHAT \"{settings.RainWorldSaveDirectory}\""); + if (Directory.Exists(Path.Combine(dir, Utils.RainworldSaveDirectoryPostFix))) + { + userProfileToolStripMenuItem.DropDownItems.Add(Path.GetFileNameWithoutExtension(dir)); + var item = userProfileToolStripMenuItem.DropDownItems[userProfileToolStripMenuItem.DropDownItems.Count - 1]; + item.Click += Item_Click; + item.Tag = dir; + } + } + + + if (userProfileToolStripMenuItem.DropDownItems.Count != 0) + { + var item = ((ToolStripMenuItem)userProfileToolStripMenuItem.DropDownItems[0]); + item.Checked = true; + settings.RainWorldSaveDirectory = $"{item.Tag!.ToString()!}\\{Utils.RainworldSaveDirectoryPostFix}"; } + + + + Logger.Warn(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)); for (var i = 0; i < SlugcatInfo.SlugcatInfos.Length; i++) { @@ -93,6 +113,21 @@ private void MainForm_Load(object sender, EventArgs e) } } + private void Item_Click(object? sender, EventArgs e) + { + foreach (var item in userProfileToolStripMenuItem.DropDownItems) + { + var tItem = ((ToolStripMenuItem)item); + if (sender == item) + { + tItem.Checked = true; + settings.RainWorldSaveDirectory = $"{tItem.Tag!.ToString()!}\\{Utils.RainworldSaveDirectoryPostFix}"; + } + else + tItem.Checked = false; + } + } + private void SlugcatMenuItem_Click(object? sender, EventArgs e) { ToolStripMenuItem menuItem = (ToolStripMenuItem)sender!;