Ejemplo n.º 1
0
        internal static int CollectElements(string dir, List <ElementLoader.ElementEntry> results)
        {
            if (!Directory.Exists(dir))
            {
                return(0);
            }

            var foundElements = new List <string>();
            var files         = Array.FindAll(Directory.GetFiles(dir), f => PLUtil.PATTERN_YAML.IsMatch(f));

            foreach (var file in files)
            {
                PipLib.Logger.Debug("loading elements from: {0}", file);
                var elementCollection = YamlIO.Parse <ElementEntryExtended.Collection>(File.ReadAllText(file), Klei.FileSystem.FindFileHandle(Path.GetFileName(file)));
                if (elementCollection != null && elementCollection.elements != null)
                {
                    results.AddRange(elementCollection.elements);
                    loadedElements.AddRange(elementCollection.elements);
                    foundElements.AddRange(Array.ConvertAll(elementCollection.elements, e => e.elementId));
                }
            }

            if (foundElements.Count > 0)
            {
                Logger.Info("Loaded {0} element(s) from '{1}': {2}", foundElements.Count, Path.GetDirectoryName(dir), string.Join(",", foundElements.ToArray()));
            }
            return(foundElements.Count);
        }
 public static void Load()
 {
     try
     {
         if (_instance == null)
         {
             _instance = new KPrivacyPrefs();
         }
         string path = GetPath();
         if (File.Exists(path))
         {
             string readText = File.ReadAllText(path);
             _instance = YamlIO.Parse <KPrivacyPrefs>(readText, path, null, null);
             if (_instance == null)
             {
                 LogError("Exception while loading privacy prefs:" + path);
                 _instance = new KPrivacyPrefs();
             }
         }
     }
     catch (Exception ex)
     {
         LogError(ex.ToString());
     }
 }
Ejemplo n.º 3
0
            private static void Postfix(ref List <ElementLoader.ElementEntry> __result)
            {
                Strings.Add($"STRINGS.ELEMENTS.{CorundumElement.Id.ToUpper()}.NAME", CorundumElement.Name);
                Strings.Add($"STRINGS.ELEMENTS.{CorundumElement.Id.ToUpper()}.DESC", CorundumElement.Description);
                Strings.Add($"STRINGS.ELEMENTS.{KyaniteElement.Id.ToUpper()}.NAME", KyaniteElement.Name);
                Strings.Add($"STRINGS.ELEMENTS.{KyaniteElement.Id.ToUpper()}.DESC", KyaniteElement.Description);
                Strings.Add($"STRINGS.ELEMENTS.{SodaliteElement.Id.ToUpper()}.NAME", SodaliteElement.Name);
                Strings.Add($"STRINGS.ELEMENTS.{SodaliteElement.Id.ToUpper()}.DESC", SodaliteElement.Description);
                Strings.Add($"STRINGS.ELEMENTS.{PolishedCorundumElement.Id.ToUpper()}.NAME", PolishedCorundumElement.Name);
                Strings.Add($"STRINGS.ELEMENTS.{PolishedCorundumElement.Id.ToUpper()}.DESC", PolishedCorundumElement.Description);
                Strings.Add($"STRINGS.ELEMENTS.{PolishedKyaniteElement.Id.ToUpper()}.NAME", PolishedKyaniteElement.Name);
                Strings.Add($"STRINGS.ELEMENTS.{PolishedKyaniteElement.Id.ToUpper()}.DESC", PolishedKyaniteElement.Description);
                Strings.Add($"STRINGS.ELEMENTS.{PolishedSodaliteElement.Id.ToUpper()}.NAME", PolishedSodaliteElement.Name);
                Strings.Add($"STRINGS.ELEMENTS.{PolishedSodaliteElement.Id.ToUpper()}.DESC", PolishedSodaliteElement.Description);
                Strings.Add($"STRINGS.ELEMENTS.{AluminumSaltElement.Id.ToUpper()}.NAME", AluminumSaltElement.Name);
                Strings.Add($"STRINGS.ELEMENTS.{AluminumSaltElement.Id.ToUpper()}.DESC", AluminumSaltElement.Description);
                Strings.Add($"STRINGS.ELEMENTS.{MineralWaterElement.Id.ToUpper()}.NAME", MineralWaterElement.Name);
                Strings.Add($"STRINGS.ELEMENTS.{MineralWaterElement.Id.ToUpper()}.DESC", MineralWaterElement.Description);
                Strings.Add($"STRINGS.ELEMENTS.{MineralIceElement.Id.ToUpper()}.NAME", MineralIceElement.Name);
                Strings.Add($"STRINGS.ELEMENTS.{MineralIceElement.Id.ToUpper()}.DESC", MineralIceElement.Description);
                Strings.Add($"STRINGS.ELEMENTS.{CrystalElement.Id.ToUpper()}.NAME", CrystalElement.Name);
                Strings.Add($"STRINGS.ELEMENTS.{CrystalElement.Id.ToUpper()}.DESC", CrystalElement.Description);

                __result.AddRange(YamlIO.Parse <ElementLoader.ElementEntryCollection>(CorundumElement.Data, null).elements);
                __result.AddRange(YamlIO.Parse <ElementLoader.ElementEntryCollection>(KyaniteElement.Data, null).elements);
                __result.AddRange(YamlIO.Parse <ElementLoader.ElementEntryCollection>(SodaliteElement.Data, null).elements);
                __result.AddRange(YamlIO.Parse <ElementLoader.ElementEntryCollection>(PolishedCorundumElement.Data, null).elements);
                __result.AddRange(YamlIO.Parse <ElementLoader.ElementEntryCollection>(PolishedKyaniteElement.Data, null).elements);
                __result.AddRange(YamlIO.Parse <ElementLoader.ElementEntryCollection>(PolishedSodaliteElement.Data, null).elements);
                __result.AddRange(YamlIO.Parse <ElementLoader.ElementEntryCollection>(AluminumSaltElement.Data, null).elements);
                __result.AddRange(YamlIO.Parse <ElementLoader.ElementEntryCollection>(MineralWaterElement.Data, null).elements);
                __result.AddRange(YamlIO.Parse <ElementLoader.ElementEntryCollection>(MineralIceElement.Data, null).elements);
                __result.AddRange(YamlIO.Parse <ElementLoader.ElementEntryCollection>(CrystalElement.Data, null).elements);
            }
Ejemplo n.º 4
0
        private void Subscribe(string id, long timestamp, IFileSource file_source)
        {
            string text   = file_source.Read("mod.yaml");
            Header header = (!string.IsNullOrEmpty(text)) ? YamlIO.Parse <Header>(text, file_source.GetRoot() + "\\mod.yaml", null, null) : null;

            if (header == null)
            {
                Header header2 = new Header();
                header2.title       = id;
                header2.description = id;
                header = header2;
            }
            Label label = default(Label);

            label.id = id;
            label.distribution_platform = distribution_platform;
            label.version = id.GetHashCode();
            label.title   = header.title;
            Label label2 = label;
            Mod   mod    = new Mod(label2, header.description, file_source, UI.FRONTEND.MODS.TOOLTIPS.MANAGE_LOCAL_MOD, delegate
            {
                Application.OpenURL("file://" + file_source.GetRoot());
            });

            if (file_source.GetType() == typeof(Directory))
            {
                mod.status = Mod.Status.Installed;
            }
            Global.Instance.modManager.Subscribe(mod, this);
        }
Ejemplo n.º 5
0
            public static void Postfix(ref List <ElementLoader.ElementEntry> __result)
            {
                Strings.Add($"STRINGS.ELEMENTS.{ToUpperSnakeCase(Antigel.Id)}.NAME", Antigel.Name);
                Strings.Add($"STRINGS.ELEMENTS.{ToUpperSnakeCase(Antigel.Id)}.DESC", Antigel.Description);

                FileHandle nullFile = new FileHandle();

                nullFile.full_path = null;
                nullFile.source    = null;
                __result.AddRange(YamlIO.Parse <ElementLoader.ElementEntryCollection>(Antigel.Data, nullFile).elements);
            }
Ejemplo n.º 6
0
        static void Postfix(ref List <ElementLoader.ElementEntry> __result)
        {
            var containsIron = $"Contains traces of {STRINGS.UI.FormatAsLink("iron", "IRON")}.";

            Strings.Add("STRINGS.ELEMENTS.BLOOD.NAME", STRINGS.UI.FormatAsLink("Blood", "BLOOD"));
            Strings.Add("STRINGS.ELEMENTS.BLOOD.DESC", $"Bathe in the blood of your enemies! {containsIron}");
            Strings.Add("STRINGS.ELEMENTS.FROZENBLOOD.NAME", STRINGS.UI.FormatAsLink("Frozen Blood", "FROZENBLOOD"));
            Strings.Add("STRINGS.ELEMENTS.FROZENBLOOD.DESC", $"Blood that has been frozen. {containsIron}");

            var elementCollection = YamlIO.Parse <ElementLoader.ElementEntryCollection>(BloodElement.CONFIG, new FileHandle());

            __result.AddRange(elementCollection.elements);
        }
Ejemplo n.º 7
0
            static void Postfix(ref List <ElementLoader.ElementEntry> __result)
            {
                var containsIron = $"Contains traces of {STRINGS.UI.FormatAsLink("cyanide", "IRON")}.";//to add cyanide later

                Strings.Add("STRINGS.ELEMENTS." + ToxicWaterElement.ID.ToUpper() + ".NAME", STRINGS.UI.FormatAsLink("Toxic water", ToxicWaterElement.ID.ToUpper()));
                Strings.Add("STRINGS.ELEMENTS." + ToxicWaterElement.ID.ToUpper() + ".DESC", $"Water preserved from a long time. {containsIron}");
                Strings.Add("STRINGS.ELEMENTS." + ToxicWaterElement.IDFrozen.ToUpper() + ".NAME", STRINGS.UI.FormatAsLink("Toxic ice", ToxicWaterElement.IDFrozen.ToUpper()));
                Strings.Add("STRINGS.ELEMENTS." + ToxicWaterElement.IDFrozen.ToUpper() + ".DESC", $"Frozen toxic water. {containsIron}");

                var elementCollection = YamlIO.Parse <ElementLoader.ElementEntryCollection>(ToxicWaterElement.CONFIG, "ElementLoader.cs");

                __result.AddRange(elementCollection.elements);
            }
        private static T MergeLoad <T>(string filename, List <YamlIO.Error> errors) where T : class, IMerge <T>, new()
        {
            ListPool <FileHandle, WorldGenSettings> .PooledList pooledList = ListPool <FileHandle, WorldGenSettings> .Allocate();

            FileSystem.GetFiles(filename, pooledList);
            if (((List <FileHandle>)pooledList).Count == 0)
            {
                pooledList.Recycle();
                throw new Exception($"File not found in any file system: {filename}");
            }
            ((List <FileHandle>)pooledList).Reverse();
            ListPool <T, WorldGenSettings> .PooledList pooledList2 = ListPool <T, WorldGenSettings> .Allocate();

            ((List <T>)pooledList2).Add(new T());
            foreach (FileHandle item in (List <FileHandle>)pooledList)
            {
                FileHandle file = item;
                T          val  = YamlIO.Parse <T>(FileSystem.ConvertToText(file.source.ReadBytes(file.full_path)), file.full_path, delegate(YamlIO.Error error, bool force_log_as_warning)
                {
                    error.file = file;
                    errors.Add(error);
                }, null);
                if (val != null)
                {
                    ((List <T>)pooledList2).Add(val);
                }
            }
            pooledList.Recycle();
            T result = ((List <T>)pooledList2)[0];

            for (int i = 1; i != ((List <T>)pooledList2).Count; i++)
            {
                ((IMerge <T>)result).Merge(((List <T>)pooledList2)[i]);
            }
            pooledList2.Recycle();
            return(result);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// When a web request completes, triggers the handler for the next updater.
        /// </summary>
        /// <param name="request">The YAML web request data.</param>
        /// <param name="mod">The mod that needs to be checked.</param>
        private void OnRequestFinished(UnityWebRequest request, Mod mod)
        {
            ModVersionCheckResults result = null;

            if (request.result == UnityWebRequest.Result.Success)
            {
                // Parse the text
                var modInfo = YamlIO.Parse <Mod.PackagedModInfo>(request.downloadHandler.
                                                                 text, default);
                string newVersion = modInfo?.version;
                if (modInfo != null && !string.IsNullOrEmpty(newVersion))
                {
                    string curVersion = PVersionCheck.GetCurrentVersion(mod);
#if DEBUG
                    PUtil.LogDebug("Current version: {0} New YAML version: {1}".F(
                                       curVersion, newVersion));
#endif
                    result = new ModVersionCheckResults(mod.staticID, newVersion !=
                                                        curVersion, newVersion);
                }
            }
            request.Dispose();
            OnVersionCheckCompleted?.Invoke(result);
        }