public override void OnAddonLoaded(AddonLoadData data) { if (data.LoadedAssemblies != null && data.LoadedAssemblies.Count > 0) { var types = data.LoadedAssemblies.SelectMany(a => a.GetTypes()); LoadMappersFromTypes(types); EnableSelectedMapper(); } }
internal static void LoadFromAddon(AddonLoadData data) { if (data.LoadedResources != null && data.LoadedResources.Count > 0) { if (data.LoadedResources.TryGetValue("Data/RPGDefs/factions", out var rh)) { if (rh.Resource is TextAsset ta) { LoadFactionDataFromAsset(ta); Debug.Log("Loaded faction data from addon!"); } } } }
internal static void LoadFromAddon(AddonLoadData data) { if (data.LoadedResources != null && data.LoadedResources.Count > 0) { var questAssets = data.LoadedResources .Where(kvp => kvp.Key.StartsWith("Data/Quests/")) .Where(kvp => kvp.Value.Resource is TextAsset) .Select(kvp => (TextAsset)kvp.Value.Resource); LoadDefsFromAssets(questAssets, out var defCount, out var loadErrorCount); CDebug.LogEx(string.Format("Loaded quests from addon ({0} defs, {1} errors)", defCount, loadErrorCount), LogLevel.Message, null); } }
private void AddCommandsFromAddon(AddonLoadData data) { if (data == null || data.LoadedAssemblies == null || data.LoadedAssemblies.Count == 0) { return; } IEnumerable <MethodInfo> commands = data.LoadedAssemblies.SelectMany(a => a.GetTypes()) .SelectMany(t => t.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) .Where(m => m.GetCustomAttributes(typeof(CommandAttribute), false).Length > 0) .ToArray(); AddCommands(commands); }
/// <summary> /// Loads inventory models and defs from an addon /// </summary> /// <param name="data"></param> internal static void LoadFromAddon(AddonLoadData data) { LoadErrorCount = 0; LoadItemCount = 0; LoadDefCount = 0; var assets = data.LoadedResources .Where(kvp => kvp.Key.StartsWith("Data/Items/")) .Where(kvp => kvp.Value.Resource is TextAsset) .Select(kvp => (TextAsset)kvp.Value.Resource); LoadInventoryModelsFromAssets(assets); CDebug.LogEx(string.Format("Loaded inventory from addon ({0} items, {1} defs, {2} errors)", LoadItemCount, LoadDefCount, LoadErrorCount), LoadErrorCount > 0 ? LogLevel.Error : LogLevel.Message, null); }
public override void OnAddonLoaded(AddonLoadData data) { StringBuilder sb = new StringBuilder(); sb.AppendLine("Assemblies: "); foreach (var a in data.LoadedAssemblies) { sb.AppendFormat("\t{0}\n", a.FullName); } sb.AppendLine("Resources: "); foreach (var r in data.LoadedResources) { sb.AppendFormat("\t{0} ({1})\n", r.Key, r.Value.GetType().GetGenericArguments()[0]); } Log("Test module: addon loaded\n" + sb.ToString()); }
public override void OnAddonLoaded(AddonLoadData data) { if (data.LoadedAssemblies != null && data.LoadedAssemblies.Count > 0) { System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); IEnumerable <Type> types = data.LoadedAssemblies.SelectMany(a => a.GetTypes()); int loadedScripts = LoadScriptsFromTypes(types); sw.Stop(); Log(string.Format("Loaded {1} scripts from addon in {0:f2} ms ({2} total callable scripts)", sw.ElapsedMilliseconds, loadedScripts, CallableMethods.Count)); } CallHooked(ScriptHook.AfterAddonLoaded, this, data); }
public override void OnAddonLoaded(AddonLoadData data) { //load lists from AddonData if (data.LoadedResources != null && data.LoadedResources.Count > 0) { int numFiles = 0; var stringListKeys = data.LoadedResources.Keys .Where(k => k.StartsWith("Data/Strings/")); foreach (string key in stringListKeys) { var rh = data.LoadedResources[key]; if (rh.Resource is TextAsset ta) { try { LoadListFromTextAsset(ta); numFiles++; } catch (Exception e) { LogError("Error loading string file: " + ta.name); LogException(e); } } } string statusString = string.Format("({0} new files, {1} total lists)", numFiles, Strings.Count); Log("Loaded lists " + statusString); } //load subbers from AddonData if (data.LoadedAssemblies != null && data.LoadedAssemblies.Count > 0) { var subberTypes = data.LoadedAssemblies.SelectMany(a => a.GetTypes()) .Where((type) => type.GetInterfaces().Contains(typeof(IStringSubber))); LoadSubbersFromTypes(subberTypes); } }
public override void OnAddonLoaded(AddonLoadData data) { if (CoreParams.LoadPolicy != DataLoadPolicy.OnStart) { return; } if (data.LoadedResources != null && data.LoadedResources.Count > 0) { var dialogueAssets = data.LoadedResources .Where(kvp => kvp.Key.StartsWith("Data/Dialogue/")) .Where(kvp => kvp.Value.Resource.Ref() != null) .Where(kvp => kvp.Value.Resource is TextAsset) .Select(kvp => (TextAsset)kvp.Value.Resource); var monologueAssets = data.LoadedResources .Where(kvp => kvp.Key.StartsWith("Data/Monologue/")) .Where(kvp => kvp.Value.Resource.Ref() != null) .Where(kvp => kvp.Value.Resource is TextAsset) .Select(kvp => (TextAsset)kvp.Value.Resource); LoadFromTextAssets(dialogueAssets, monologueAssets); } }
private static void AfterAddonLoaded(ScriptExecutionContext context, AddonLoadData data) { Debug.Log($"AfterAddonLoaded\n{context} (data: {data})"); }
public override void OnAddonLoaded(AddonLoadData data) { FactionModel.LoadFromAddon(data); InventoryModel.LoadFromAddon(data); QuestModel.LoadFromAddon(data); }
public override void OnAddonLoaded(AddonLoadData data) { AddCommandsFromAddon(data); }