public void LoadService(Type service) // Load the service using the type { if (!service.IsClass || !typeof(PointBlankService).IsAssignableFrom(service)) // If it isn't a service then return { return; } if (service == typeof(PointBlankService)) // Prevents the actual service API from being loaded { return; } PointBlankService ser = (PointBlankService)Activator.CreateInstance(service); if (ServicesData.CheckKey(ser.Name)) { ser.AutoStart = ((string)ServicesData.Document[ser.Name]["AutoStart"]).ToLower() == "true"; ser.Replace = ((string)ServicesData.Document[ser.Name]["Replace"]).ToLower() == "true"; } else { JObject jObj = new JObject { { "AutoStart", (ser.AutoStart ? "true" : "false") }, { "Replace", (ser.Replace ? "true" : "false") } }; ServicesData.Document.Add(ser.Name, jObj); UniServicesData.Save(); } _tempServices.Add(ser); }
public void Shutdown() // The service manager is getting shut down { if (!Initialized) // Don't bother shutting down if the service manager isn't initialized { return; } UniServicesData.Save(); // Save the services data foreach (ServiceWrapper wrapper in Enviroment.services.Select(a => a.Value)) // Stop the services { _tempWrappers.Add(wrapper); } foreach (ServiceWrapper wrapper in _tempWrappers.OrderByDescending(a => a.ServiceClass.LaunchIndex)) { StopService(wrapper); } _tempWrappers.Clear(); // Set the variables Initialized = false; }