// Copyright Epic Games, Inc. All Rights Reserved. using System; using System.Collections.Generic; namespace HordeServer.Plugins { /// /// Information about a Horde plugin /// public interface IPluginMetadata { /// /// Name of the plugin /// PluginName Name { get; } /// /// Description of the plugin /// string Description { get; } /// /// Other plugins that this plugin depends on /// IReadOnlyList DependsOn { get; } /// /// Unique implementations of singleton features which this plugin provides /// IReadOnlyList? ImplementsSingletons { get; } } /// /// Information about a Horde plugin /// public class PluginMetadata : IPluginMetadata { /// public PluginName Name { get; set; } /// public string Description { get; set; } = String.Empty; /// public List DependsOn { get; set; } = new List(); IReadOnlyList IPluginMetadata.DependsOn => DependsOn; /// public List? ImplementsSingletons { get; set; } IReadOnlyList? IPluginMetadata.ImplementsSingletons => ImplementsSingletons; } }