Closed orbitusii closed 4 months ago
Design change: data source should be an abstract class within the LOKI-BMS project proper. Implementation-level data source objects should be separate class libraries that get loaded at runtime using C#'s Reflection capabilities, allowing for simpler plug-and-play functionality for unique data sources.
Specific steps to take:
Created loki-plugin-base subproject within the solution. Key classes and functions:
LOKI won't care about anything that goes on within the plugins besides these three classes. Plugins should reference loki-plugin-base and not loki-bms-csharp proper when being developed... unless they're specialized for deeper behavior within LOKI.
Functioning for now, needs some refinement and logic for custom menus implemented, but we'll get there eventually
Looks like Xaml content for LokiCustomMenu types will have to be loaded by the PluginLoader class in loki-bms-csharp proper. loki-bms-common does not have the required references and I can't find them, nor do I feel like it's strictly necessary to have that behavior implemented in common. Will work on that more tomorrow.
CustomMenu class can utilize TemplateWindow functionality, though that behavior will have to be implemented before it can be added to the plugins.
DataSource should be an abstract or generic class that handles the connection process and maintenance DataSource will not do any of its own interpretation, but will feed into a subclass (maybe the target class of the Generic) that does the interpretation and allows for polymorphic, factory-built conversion from raw server data to a TrackDatum
LOKI should load plugin .dlls from ./Plugins/ at runtime using C# Reflection