48 lines
1.5 KiB
C#
48 lines
1.5 KiB
C#
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
|
|
{
|
|
public static List<BusinessBase> Businesses { get; private set; }
|
|
|
|
public static void LoadBusinesses()
|
|
{
|
|
Businesses = new List<BusinessBase>();
|
|
|
|
IEnumerable<Type> 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<T>() 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);
|
|
}
|
|
}
|
|
}
|