[FEATURE]-Build Room Factory Mechanism to Allow Rooms to be Loaded from Plugins
Is your feature request related to a problem? Please describe.
Currently, only room types specified in the LoadRooms() method in ControlSystem can be instantiated. In order to facilitate custom room logic loaded from plugins, a Room Factory mechanism is needed.
Describe the solution you'd like
Create a RoomFactory class that emulates the mechanism used by the existing DeviceFactory class. Modify LoadRooms() to use the RoomFactory to instantiate rooms based on the types populated at runtime from both the supplied room classes already in the framework, as well as any plugins loaded.
The existing IEssentialsRoom interface is probably what should be used as the common type when referencing rooms. It should be reviewed for suitability. Optionally EssentialsRoomBase is currently the abstract base class all rooms inherit from.
Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.