using GTANetworkAPI; using reallife_gamemode.Server.Business; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; namespace reallife_gamemode.Server.Managers { class BusinessManager : Script { private static List businesses; public static List Businesses { get => businesses; } public static void LoadBusinesses() { businesses = new List(); IEnumerable allTypes = Assembly.GetExecutingAssembly().GetTypes().Where(type => type.IsClass && !type.IsAbstract && type.IsSubclassOf(typeof(BusinessBase))); foreach (Type item in allTypes) { NAPI.Util.ConsoleOutput($"Loading Business {item.Name}"); if (Activator.CreateInstance(item) is BusinessBase o) { if (businesses.Any(x => x.Id == o.Id)) { throw new InvalidOperationException($"Double Business ID found: {o.Id} | {o.Name}"); } businesses.Add(o); o.Setup(); o.Load(); o.Update(); } } } public static T GetBusiness() where T : BusinessBase { return (T)businesses.Find(b => b.GetType() == typeof(T)); } public static BusinessBase GetBusiness(int? id) { return businesses.Find(b => b.Id == id); } } }