diff --git a/LightPerms/Config.cs b/LightPerms/Config.cs index 818a2fa..dc30ceb 100644 --- a/LightPerms/Config.cs +++ b/LightPerms/Config.cs @@ -1,8 +1,10 @@ using Torch; +using Torch.Views; namespace LightPerms; public class Config : ViewModel { - + [Display(Name = "Default Group Name", Description = "All new players will join this group.")] + public string DefaultGroupName { get; set; } = "player"; } diff --git a/LightPerms/MultiplayerMembersManager.cs b/LightPerms/MultiplayerMembersManager.cs index 2eb631b..156acb4 100644 --- a/LightPerms/MultiplayerMembersManager.cs +++ b/LightPerms/MultiplayerMembersManager.cs @@ -5,13 +5,16 @@ namespace LightPerms; public class MultiplayerMembersManager : Manager { + private readonly Config _config; + [Dependency] private readonly IPermissionsManager _permissionsManager = null!; [Dependency] private readonly IMultiplayerManagerServer _multiplayerManager = null!; - public MultiplayerMembersManager(ITorchBase torchInstance) : base(torchInstance) + public MultiplayerMembersManager(ITorchBase torchInstance, Config config) : base(torchInstance) { + _config = config; } public override void Attach() @@ -24,12 +27,14 @@ public class MultiplayerMembersManager : Manager { if (_permissionsManager.Db.Exists("client_id = @0", player.SteamId)) return; + + var defaultGroup = _permissionsManager.GetGroup(_config.DefaultGroupName) ?? throw new ArgumentException("Default group does not exist or name was supplied incorrectly"); var groupMember = new GroupMember { Name = player.Name, ClientId = player.SteamId.ToString(), - GroupUid = 0 + GroupUid = defaultGroup.Uid }; _permissionsManager.Db.Insert(groupMember); diff --git a/LightPerms/Plugin.cs b/LightPerms/Plugin.cs index 45424cc..90ff5b3 100644 --- a/LightPerms/Plugin.cs +++ b/LightPerms/Plugin.cs @@ -21,7 +21,7 @@ public class Plugin : TorchPluginBase, IWpfPlugin _config = new(Path.Combine(StoragePath, "LightPerms.cfg")); Torch.Managers.AddManager(DbManager.Static); Torch.Managers.AddManager(new PermissionsManager(Torch)); - Torch.Managers.GetManager().AddFactory(s => new MultiplayerMembersManager(s.Torch)); + Torch.Managers.GetManager().AddFactory(s => new MultiplayerMembersManager(s.Torch, _config.Data)); } public UserControl GetControl() => new PropertyGrid