private static void Awake_Postfix(LookupDirector @this, Dictionary <Identifiable.Id, GameObject> p_identifiablePrefabDict, Dictionary <Gadget.Id, GadgetDefinition> p_gadgetDefinitionDict, Dictionary <Identifiable.Id, VacItemDefinition> p_vacItemDict) { //& Injects main game content IdentifiableRegistry.InjectPrefabs(p_identifiablePrefabDict); GadgetRegistry.InjectGadgets(p_gadgetDefinitionDict); IdentifiableRegistry.InjectVacEntries(p_vacItemDict); }
/// <summary> /// Called before GameContext.Awake() /// </summary> internal static void PreLoad() { if (isPreInitialized) { return; } isPreInitialized = true; Debug.Log("SRML has successfully invaded the game!"); prefabParent = new GameObject("PrefabParent").transform; prefabParent.gameObject.SetActive(false); GameObject.DontDestroyOnLoad(prefabParent.gameObject); foreach (var v in Assembly.GetExecutingAssembly().GetTypes()) { System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(v.TypeHandle); } HarmonyPatcher.PatchAll(); try { SRModLoader.InitializeMods(); } catch (Exception e) { Debug.LogError(e); ErrorGUI.CreateError($"{e.GetType().Name}: {e.Message}"); return; } FileLogger.Init(); Console.Console.Init(); HarmonyOverrideHandler.PatchAll(); try { SRModLoader.PreLoadMods(); } catch (Exception e) { Debug.LogError(e); ErrorGUI.CreateError($"{e.Message}"); return; } IdentifiableRegistry.CategorizeAllIds(); GadgetRegistry.CategorizeAllIds(); ReplacerCache.ClearCache(); HarmonyPatcher.Instance.Patch(typeof(GameContext).GetMethod("Start"), prefix: new HarmonyMethod(typeof(Main).GetMethod("Load", BindingFlags.NonPublic | BindingFlags.Static))); }
internal static void PreLoadMods() { CurrentLoadingStep = LoadingStep.PRELOAD; Console.Console.Reload += Main.Reload; foreach (var modid in loadOrder) { var mod = Mods[modid]; try { EnumHolderResolver.RegisterAllEnums(mod.EntryType.Module); ConfigManager.PopulateConfigs(mod); mod.PreLoad(); } catch (Exception e) { throw new Exception($"Error pre-loading mod '{modid}'!\n{e.GetType().Name}: {e}"); } } IdentifiableRegistry.CategorizeAllIds(); GadgetRegistry.CategorizeAllIds(); }
/// <summary>Registers the item into it's registry</summary> public override GadgetItem Register() { Definition = ScriptableObject.CreateInstance <GadgetDefinition>(); Definition.id = ID; Definition.prefab = Prefab; Definition.icon = Icon; Definition.pediaLink = PediaID; Definition.blueprintCost = BlueprintCost; Definition.craftCosts = CraftCosts; Definition.buyCountLimit = BuyLimit; Definition.countLimit = CountLimit; Definition.countOtherIds = CountIDs; Definition.destroyOnRemoval = DestroyOnRemoval; Definition.buyInPairs = BuyInPairs; Build(); if (IsDefault) { GadgetRegistry.RegisterDefaultBlueprint(ID); } if (StartAvailable) { GadgetRegistry.RegisterDefaultAvailableBlueprint(ID); } else { GadgetRegistry.RegisterBlueprintLock(ID, CreateBlueprintLocker); } GadgetRegistry.ClassifyGadget(ID, Classification); LookupRegistry.RegisterGadget(Definition); return(this); }
private static bool IsGuuGadget(Gadget.Id id) => GadgetRegistry.IsGadgetRegistered(id);
private static bool IsGuuGadget <V>(KeyValuePair <Gadget.Id, V> pair) => GadgetRegistry.IsGadgetRegistered(pair.Key);