Exemple #1
0
 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();
     }
 }
Exemple #2
0
 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!");
             }
         }
     }
 }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        /// <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);
        }
Exemple #6
0
        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());
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
            }
        }
Exemple #9
0
        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);
            }
        }
Exemple #10
0
 private static void AfterAddonLoaded(ScriptExecutionContext context, AddonLoadData data)
 {
     Debug.Log($"AfterAddonLoaded\n{context} (data: {data})");
 }
Exemple #11
0
 public override void OnAddonLoaded(AddonLoadData data)
 {
     FactionModel.LoadFromAddon(data);
     InventoryModel.LoadFromAddon(data);
     QuestModel.LoadFromAddon(data);
 }
Exemple #12
0
 public override void OnAddonLoaded(AddonLoadData data)
 {
     AddCommandsFromAddon(data);
 }