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()); } }
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); }
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); }
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); }
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); }
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); }
/// <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); }