Exemple #1
0
        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");
            }
        }
Exemple #5
0
 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);
 }
Exemple #8
0
 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));
 }
Exemple #9
0
 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)));
 }
Exemple #10
0
 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));
 }
Exemple #11
0
 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);
 }
Exemple #12
0
 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);
 }
Exemple #13
0
 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);
        }
Exemple #16
0
 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);
     }
 }
Exemple #17
0
 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));
     }
 }
Exemple #18
0
 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);
     }
 }
Exemple #19
0
 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);
     }
 }
Exemple #21
0
 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;
     }
 }
Exemple #22
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;
     }
 }
Exemple #23
0
        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));
                }
            }
        }
Exemple #25
0
        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,
                };
            }
        }
Exemple #26
0
 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));
        }
Exemple #28
0
            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());
                    }
                }
            }
Exemple #29
0
        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);
            }
        }
Exemple #30
0
 public void LoadDataFromXmlCustom(XmlNode xmlRoot)
 {
     DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, nameof(this.bodyType), xmlRoot.Name);
     this.offset = (Vector2)ParseHelper.FromString(xmlRoot.FirstChild.Value, typeof(Vector2));
 }