diff --git a/Dalamud/Configuration/DalamudConfiguration.cs b/Dalamud/Configuration/DalamudConfiguration.cs index e71f36b2d..6bbce4d8a 100644 --- a/Dalamud/Configuration/DalamudConfiguration.cs +++ b/Dalamud/Configuration/DalamudConfiguration.cs @@ -18,14 +18,16 @@ namespace Dalamud public List BadWords { get; set; } - public List> PreferredRoleReminders { get; set; } - - public class FateInfo { - public string Name { get; set; } - public int Id { get; set; } + public enum PreferredRole + { + None, + All, + Tank, + Dps, + Healer } - public List Fates; + public Dictionary PreferredRoleReminders { get; set; } public string LastVersion { get; set; } diff --git a/Dalamud/Dalamud.cs b/Dalamud/Dalamud.cs index 6061acdaa..10b25ff45 100644 --- a/Dalamud/Dalamud.cs +++ b/Dalamud/Dalamud.cs @@ -434,8 +434,38 @@ namespace Dalamud { Framework.Gui.Chat.PrintError("You have not set up a discord channel for these notifications - you will only receive them in chat. To do this, please use the XIVLauncher in-game settings."); if (string.IsNullOrEmpty(arguments)) - Framework.Gui.Chat.Print("Possible values for roulette: leveling, 506070, msq, guildhests, expert, trials, mentor, alliance, normal, all\n" + - "Possible values for role: tank, dps, healer"); + goto InvalidArgs; + + var argParts = arguments.Split(); + if (argParts.Length < 2) + goto InvalidArgs; + + + if (this.Configuration.PreferredRoleReminders == null) + this.Configuration.PreferredRoleReminders = new Dictionary(); + + var rouletteIndex = RouletteSlugToKey(argParts[0]); + + if (rouletteIndex == 0) + goto InvalidArgs; + + if (!Enum.TryParse(argParts[1].First().ToString().ToUpper() + argParts[1].ToLower().Substring(1), out DalamudConfiguration.PreferredRole role)) + goto InvalidArgs; + + if (this.Configuration.PreferredRoleReminders.ContainsKey(rouletteIndex)) + this.Configuration.PreferredRoleReminders[rouletteIndex] = role; + else + this.Configuration.PreferredRoleReminders.Add(rouletteIndex, role); + + Framework.Gui.Chat.Print($"Set bonus notifications for {argParts[0]}({rouletteIndex}) to {role}"); + this.Configuration.Save(this.StartInfo.ConfigurationPath); + + return; + + InvalidArgs: + Framework.Gui.Chat.PrintError("Unrecognized arguments."); + Framework.Gui.Chat.Print("Possible values for roulette: leveling, 506070, msq, guildhests, expert, trials, mentor, alliance, normal\n" + + "Possible values for role: tank, dps, healer, all"); } private int RouletteSlugToKey(string slug) => slug.ToLower() switch { @@ -451,11 +481,13 @@ namespace Dalamud { _ => 0 }; - private int RoleNameToKey(string name) => name.ToLower() switch + private DalamudConfiguration.PreferredRole RoleNameToPreferredRole(string name) => name.ToLower() switch { - "Tank" => 1, - "Healer" => 4, - _ => 0 + "Tank" => DalamudConfiguration.PreferredRole.Tank, + "Healer" => DalamudConfiguration.PreferredRole.Healer, + "Dps" => DalamudConfiguration.PreferredRole.Dps, + "All" => DalamudConfiguration.PreferredRole.All, + _ => DalamudConfiguration.PreferredRole.None }; } }