public static T ItemFromXmlString <T>(string xml, bool resolveCrossRefs = true) where T : new() { if (resolveCrossRefs && DirectXmlCrossRefLoader.LoadingInProgress) { Log.Error("Cannot call ItemFromXmlFile with resolveCrossRefs=true while loading is already in progress.", false); } if (xml.NullOrEmpty()) { return(Activator.CreateInstance <T>()); } T result; try { XmlDocument xmlDocument = new XmlDocument(); // Trim should theoretically also get rid of BOMs xmlDocument.LoadXml(xml.Trim()); T t = DirectXmlToObject.ObjectFromXml <T>(xmlDocument.DocumentElement, false); if (resolveCrossRefs) { DirectXmlCrossRefLoader.ResolveAllWantedCrossReferences(FailMode.LogErrors); } result = t; } catch (Exception ex) { Log.Error($"Exception loading item from string. Loading defaults instead. \nXML: {xml}\n\nException: {ex}"); result = Activator.CreateInstance <T>(); } return(result); }
public static void GenerateImpliedDefs_PreResolve() { IEnumerable <ThingDef> enumerable = ThingDefGenerator_Buildings.ImpliedBlueprintAndFrameDefs().Concat(ThingDefGenerator_Meat.ImpliedMeatDefs()).Concat(ThingDefGenerator_Corpses.ImpliedCorpseDefs()) .Concat(ThingDefGenerator_Leather.ImpliedLeatherDefs()); foreach (ThingDef item in enumerable) { item.PostLoad(); DefDatabase <ThingDef> .Add(item); } DirectXmlCrossRefLoader.ResolveAllWantedCrossReferences(FailMode.Silent); foreach (TerrainDef item2 in TerrainDefGenerator_Stone.ImpliedTerrainDefs()) { item2.PostLoad(); DefDatabase <TerrainDef> .Add(item2); } foreach (RecipeDef item3 in RecipeDefGenerator.ImpliedRecipeDefs()) { item3.PostLoad(); DefDatabase <RecipeDef> .Add(item3); } foreach (PawnColumnDef item4 in PawnColumnDefgenerator.ImpliedPawnColumnDefs()) { item4.PostLoad(); DefDatabase <PawnColumnDef> .Add(item4); } }
public static void GenerateImpliedDefs_PreResolve() { foreach (ThingDef item in ThingDefGenerator_Buildings.ImpliedBlueprintAndFrameDefs().Concat(ThingDefGenerator_Meat.ImpliedMeatDefs()).Concat(ThingDefGenerator_Techprints.ImpliedTechprintDefs()) .Concat(ThingDefGenerator_Corpses.ImpliedCorpseDefs())) { AddImpliedDef(item); } DirectXmlCrossRefLoader.ResolveAllWantedCrossReferences(FailMode.Silent); foreach (TerrainDef item2 in TerrainDefGenerator_Stone.ImpliedTerrainDefs()) { AddImpliedDef(item2); } foreach (RecipeDef item3 in RecipeDefGenerator.ImpliedRecipeDefs()) { AddImpliedDef(item3); } foreach (PawnColumnDef item4 in PawnColumnDefgenerator.ImpliedPawnColumnDefs()) { AddImpliedDef(item4); } foreach (ThingDef item5 in NeurotrainerDefGenerator.ImpliedThingDefs()) { AddImpliedDef(item5); } }
public override void PostLoad() { var mod = ( from m in LoadedModManager.RunningMods where m.Name == requiredMod select m ).FirstOrDefault(); if (mod == null) { #if DEBUG Log.Message("Miniaturisation :: Skipping " + requiredMod); #endif return; } Log.Message("Miniaturisation :: Found " + requiredMod + " (" + targetsDefNames.Count + ")"); var things = ( from m in LoadedModManager.RunningMods from def in m.AllDefs where targetsDefNames.Contains(def.defName) && def.GetType() == typeof(ThingDef) select def ); foreach (Def thing in things) { #if DEBUG Log.Message("> " + thing.defName); #endif DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(thing, thingDef_minifiedDef, "MinifiedFurniture"); } }
public IncidentProperties() { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "category", "ThreatSmall"); DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "letterDef", "NeutralEvent"); DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "raidStrategy", "ImmediateAttack"); DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "faction", "Pirate"); DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "arriveMode", "EdgeWalkIn"); }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.ChildNodes.Count != 1) { Log.Error("Misconfigured PawnKindDefCountClass: " + xmlRoot.OuterXml); return; } DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "thingDef", xmlRoot.Name); count = ParseHelper.FromString <int>(xmlRoot.FirstChild.Value); }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.ChildNodes.Count != 1) { Log.Error("Misconfigured SkillPair: " + xmlRoot.OuterXml); return; } DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "skill", xmlRoot.Name); value = ParseHelper.FromString <float>(xmlRoot.FirstChild.Value); }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.ChildNodes.Count != 1) { Log.Error("Misconfigured MTBByBiome: " + xmlRoot.OuterXml, false); return; } DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "biome", xmlRoot.Name); this.mtbDays = (float)ParseHelper.FromString(xmlRoot.FirstChild.Value, typeof(float)); }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.ChildNodes.Count != 1) { Log.Error("Misconfigured AmmoLink: " + xmlRoot.OuterXml); return; } DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "ammo", xmlRoot.Name); DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "projectile", (string)ParseHelper.FromString(xmlRoot.FirstChild.Value, typeof(string))); }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.ChildNodes.Count != 1) { Log.Error("Misconfigured ThingValue: " + xmlRoot.OuterXml); return; } DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "thingCatDef", xmlRoot.Name); this.value = (float)ParseHelper.FromString(xmlRoot.FirstChild.Value, typeof(float)); }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.ChildNodes.Count != 1) { Log.Error("Misconfigured IngredientAndCostClass: " + xmlRoot.OuterXml, false); return; } DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "thingDef", xmlRoot.Name); this.nutritionCost = ParseHelper.FromString <float>(xmlRoot.FirstChild.Value); }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.ChildNodes.Count != 1) { Log.Error("Misconfigured StuffedSound: " + xmlRoot.OuterXml); return; } DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "stuffCategory", xmlRoot.Name); DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "sound", xmlRoot.FirstChild.Value); }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.ChildNodes.Count != 1) { Log.Error("Misconfigured StartingGoodwillByFaction: " + xmlRoot.OuterXml); return; } DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "factionDef", xmlRoot.Name); startingGoodwill = ParseHelper.FromString <IntRange>(xmlRoot.FirstChild.Value); }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.ChildNodes.Count != 1) { Log.Error("Misconfigured HediffPath: " + xmlRoot.OuterXml, false); return; } DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "hediffDef", xmlRoot.Name); this.path = xmlRoot.FirstChild.Value; }
static bool Prefix() { //return true; Type TPlant = typeof(Plant); IEnumerable <ThingDef> list = DefDatabase <ThingDef> .AllDefsListForReading.Where(x => (x.IsIngestible && !x.IsWithinCategory(ThingCategoryDefOf.Foods) /*(x.thingClass == TPlant || x.thingClass.IsSubclassOf(TPlant) || !x.IsWithinCategory(ThingCategoryDefOf.Foods))*/)); foreach (var i in list) { if (i.plant != null && i.ingestible.foodType == FoodTypeFlags.Tree) { if (i.thingCategories == null) { i.thingCategories = new List <ThingCategoryDef>(); DirectXmlCrossRefLoader.RegisterListWantsCrossRef(i.thingCategories, AnimalControlsDefOf.Trees.defName, i, null); } else if (i.thingCategories.Replace(AnimalControlsDefOf.Plants, AnimalControlsDefOf.Trees) == 0) { i.thingCategories.Add(AnimalControlsDefOf.Trees); } } else if (i.plant != null && i.plant.Sowable) { if (i.thingCategories == null) { i.thingCategories = new List <ThingCategoryDef>(); DirectXmlCrossRefLoader.RegisterListWantsCrossRef(i.thingCategories, AnimalControlsDefOf.Crops.defName, i, null); } else if (i.thingCategories.Replace(AnimalControlsDefOf.Plants, AnimalControlsDefOf.Crops) == 0) { i.thingCategories.Add(AnimalControlsDefOf.Crops); } } else if (i.plant != null && i.ingestible.foodType == FoodTypeFlags.Plant) { if (i.thingCategories == null) { i.thingCategories = new List <ThingCategoryDef>(); DirectXmlCrossRefLoader.RegisterListWantsCrossRef(i.thingCategories, AnimalControlsDefOf.Plants.defName, i, null); } } //else //{ // if (i.thingCategories == null) // { // i.thingCategories = new List<ThingCategoryDef>(); // DirectXmlCrossRefLoader.RegisterListWantsCrossRef(i.thingCategories, AnimalControlsDefOf.OtherEdible.defName, i, null); // } // else // i.thingCategories.Add(AnimalControlsDefOf.OtherEdible); //} } return(true); }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "def", xmlRoot.Name, null, null); if (xmlRoot.Attributes["Weight"] != null) { float.TryParse(xmlRoot.Attributes["Weight"].Value, out this.weight); } if (xmlRoot.Attributes["Count"] != null) { int.TryParse(xmlRoot.Attributes["Count"].Value, out this.count); } }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.ChildNodes.Count != 1) { Log.Error("Misconfigured StuffCategoryCountClass: " + xmlRoot.OuterXml, false); } else { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "stuffCatDef", xmlRoot.Name); this.count = (int)ParseHelper.FromString(xmlRoot.FirstChild.Value, typeof(int)); } }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.ChildNodes.Count != 1) { Log.Error("Misconfigured BodyPartGroupMultiplier: " + xmlRoot.OuterXml, false); //TODO: rewrite ULog and call it here } else { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "bpgd", xmlRoot.Name, null, null); multiplier = ParseHelper.FromString <float>(xmlRoot.FirstChild.Value); } }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "recipe", xmlRoot.Name, null, null); if (xmlRoot.Attributes["Effecter"] != null) { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "effecter", xmlRoot.Attributes["Effecter"].Value, null, null); } if (xmlRoot.Attributes["Sound"] != null) { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "sound", xmlRoot.Attributes["Sound"].Value, null, null); } }
private static void GenerateImpliedDefs_PreResolve_Postfix() { foreach (ThingDef def in ThingDefGenerator_Blood.ImpliedBloodDefs()) { DefGenerator.AddImpliedDef(def); } DirectXmlCrossRefLoader.ResolveAllWantedCrossReferences(FailMode.Silent); foreach (RecipeDef op in RecipeDefGenerator_BloodSurgeries.ImpliedOperationDefs()) { DefGenerator.AddImpliedDef(op); } }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "trait", xmlRoot.Name); if (xmlRoot.HasChildNodes) { this.degree = (int)ParseHelper.FromString(xmlRoot.FirstChild.Value, typeof(int)); } else { this.degree = 0; } }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.Name != "li") { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "building", xmlRoot); offset = ParseHelper.FromString <float>(xmlRoot.FirstChild.Value); } else { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "building", xmlRoot.InnerText); offset = float.MinValue; } }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "def", xmlRoot.Name); string Child = Regex.Replace(xmlRoot.FirstChild.Value, @"\s+", ""); string[] array = Child.Split(new char[] { ',' }); DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "skyfaller", array[0]); if (array.Count() == 2) { chance = (float)ParseHelper.FromString(array[1], typeof(float)); } }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "thingDef", xmlRoot.Name); XmlNodeList childNodes = xmlRoot.ChildNodes; if (childNodes.Count >= 1) { foreach (XmlNode node in childNodes) { #if DEBUG Log.Message(xmlRoot.Name + "HybridInfo: " + node.Name + " " + node.InnerText); #endif hybridInfo.Add(node.Name, ParseHelper.FromString <float>(node.InnerText)); } } }
public override void PostLoad() { base.PostLoad(); if (this.products == null) { var thingCountClass = new ThingDefCountClass(); DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(thingCountClass, "thingDef", "Mizu_NormalWater"); thingCountClass.count = 1; this.products = new List <ThingDefCountClass>() { thingCountClass, }; } }
private void ReadThingCondition(string s, out string defName) { defName = null; if (s.Contains(",")) { string[] array = s.Split(','); defName = array[0]; QualityCategory = (QualityCategory)ParseHelper.FromString(array[1], typeof(QualityCategory)); CustomQuality = true; if (s.Where(c => c == ',').Count() == 2) { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "Stuff", array[2]); } return; } defName = s; }
// Token: 0x06000012 RID: 18 RVA: 0x00002354 File Offset: 0x00000554 public void LoadDataFromXmlCustom(XmlNode xmlRoot) { if (xmlRoot.ChildNodes.Count != 1) { Log.Error("Misconfigured ThingOrderRequest: " + xmlRoot.OuterXml); return; } if (xmlRoot.Name.ToLower() == "nutrition") { nutrition = true; } else { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, "thingDef", xmlRoot.Name); } amount = (float)ParseHelper.FromString(xmlRoot.FirstChild.Value, typeof(float)); }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { XmlAttribute mayRequire = xmlRoot.Attributes[name : "MayRequire"]; int index = mayRequire != null?xmlRoot.Name.LastIndexOf(value : '\"') + 1 : 0; DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, nameof(this.hediff), xmlRoot.Name.Substring(index, xmlRoot.Name.Length - index), mayRequire?.Value.ToLower()); this.path = xmlRoot.FirstChild.Value?.Trim(); Traverse traverse = Traverse.Create(this); foreach (XmlNode xmlRootChildNode in xmlRoot.ChildNodes) { Traverse field = traverse.Field(xmlRootChildNode.Name); if (field.FieldExists()) { field.SetValue(field.GetValueType().IsGenericType ? DirectXmlToObject.GetObjectFromXmlMethod(field.GetValueType())(xmlRootChildNode, arg2: false) : xmlRootChildNode.InnerXml.Trim()); } } }
public static void GenerateImpliedDefs_PreResolve() { IEnumerable <ThingDef> enumerable = ThingDefGenerator_Buildings.ImpliedBlueprintAndFrameDefs().Concat(ThingDefGenerator_Meat.ImpliedMeatDefs()).Concat(ThingDefGenerator_Corpses.ImpliedCorpseDefs()); foreach (ThingDef current in enumerable) { DefGenerator.AddImpliedDef <ThingDef>(current); } DirectXmlCrossRefLoader.ResolveAllWantedCrossReferences(FailMode.Silent); foreach (TerrainDef current2 in TerrainDefGenerator_Stone.ImpliedTerrainDefs()) { DefGenerator.AddImpliedDef <TerrainDef>(current2); } foreach (RecipeDef current3 in RecipeDefGenerator.ImpliedRecipeDefs()) { DefGenerator.AddImpliedDef <RecipeDef>(current3); } foreach (PawnColumnDef current4 in PawnColumnDefgenerator.ImpliedPawnColumnDefs()) { DefGenerator.AddImpliedDef <PawnColumnDef>(current4); } }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, nameof(this.bodyType), xmlRoot.Name); this.offset = (Vector2)ParseHelper.FromString(xmlRoot.FirstChild.Value, typeof(Vector2)); }