Skip to content

Commit

Permalink
Remove duplicates that were manually registered
Browse files Browse the repository at this point in the history
Should resolve #62
  • Loading branch information
MaxWasUnavailable committed Mar 23, 2024
1 parent ced9f60 commit 554c3ae
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions LobbyCompatibility/Features/PluginHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,14 +83,23 @@ private static bool HasCompatibilityAttribute(BaseUnityPlugin plugin)
/// Get all plugins in the <see cref="PluginInfoRecord" /> format.
/// </summary>
/// <returns> An IEnumerable of plugins in the <see cref="PluginInfoRecord" /> format. </returns>
/// TODO: We can probably cache the discovered plugins to avoid re-discovering them every time
internal static IEnumerable<PluginInfoRecord> GetAllPluginInfo()
{
var pluginInfos = new List<PluginInfoRecord>();

var compatibilityPlugins = GetCompatibilityPlugins().ToList();
var nonCompatibilityPlugins = Chainloader.PluginInfos.Where(plugin =>
!HasCompatibilityAttribute(plugin.Value.Instance)).Select(plugin => plugin.Value).ToList();

// We remove any plugins that have been registered manually to avoid duplicates
compatibilityPlugins.RemoveAll(plugin =>
RegisteredPluginInfoRecords.Any(record => record.GUID == plugin.Metadata.GUID));

nonCompatibilityPlugins.RemoveAll(plugin =>
RegisteredPluginInfoRecords.Any(record => record.GUID == plugin.Metadata.GUID));

// We create & add PluginInfoRecords for each plugin
pluginInfos.AddRange(compatibilityPlugins.Select(plugin =>
new PluginInfoRecord(plugin.Metadata.GUID, plugin.Metadata.Version,
GetCompatibilityAttribute(plugin.Instance)?.CompatibilityLevel ?? null,
Expand All @@ -99,6 +108,7 @@ internal static IEnumerable<PluginInfoRecord> GetAllPluginInfo()
pluginInfos.AddRange(nonCompatibilityPlugins.Select(plugin =>
new PluginInfoRecord(plugin.Metadata.GUID, plugin.Metadata.Version, null, null)));

// Finally, we concatenate the manually registered plugins and our discovered plugins
return pluginInfos.Concat(RegisteredPluginInfoRecords);
}

Expand Down

0 comments on commit 554c3ae

Please sign in to comment.