2using System.Collections.Generic;
10 internal static List<WKLibAPI> internalAPIs =
new List<WKLibAPI>();
12 public string DisplayName {
get;
internal set; } =
string.Empty;
13 public string GUID {
get;
internal set; } =
string.Empty;
15 public List<WKLibWindow>
Windows {
get;
internal set; } =
new List<WKLibWindow>();
20 private WKLibAPI(
string displayName,
string guid,
string defaultConfigFileName)
36 return Create_Internal(displayName, guid);
46 public static WKLibAPI Create(
string displayName,
string guid,
string defaultConfigFileName)
48 return Create_Internal(displayName, guid, defaultConfigFileName);
51 private static WKLibAPI Create_Internal(
string displayName,
string guid,
string defaultConfigFileName =
"DefaultConfig")
53 foreach(
WKLibAPI API
in internalAPIs)
55 if (
string.Equals(guid, API.GUID))
56 throw new Exception($
"{displayName} collides with {API.DisplayName}, they both have the same guid, {guid}");
60 internalAPIs.Add(newAPI);
61 internalAPIs.Sort((a, b) =>
string.Compare(a.DisplayName, b.DisplayName, StringComparison.OrdinalIgnoreCase));
76 throw new Exception($
"Mod tab already exists, cant add new one");
83 if (internalAPIs.Contains(
this))
84 internalAPIs.Remove(
this);
Loads and caches AssetBundles and assets, scoped by ModContext to avoid collisions.
void AddWindow(WKLibWindow window)
static WKLibAPI Create(string displayName, string guid, string defaultConfigFileName)
Creates and registers a new API instance.
void AddToModList(ModTab modTab)
static WKLibAPI Create(string displayName, string guid)
Creates and registers a new API instance.
AssetService AssetService
List< WKLibWindow > Windows