internal static XElement GetConditionSaveElement(SerializableCondition cond)
        {
            if (cond is PathfinderCondition pfCond)
            {
                return(pfCond.GetSaveElement());
            }

            var condType = cond.GetType();
            var saveTag  = condType.Name;

            if (saveTag.StartsWith("Hacknet."))
            {
                saveTag = saveTag.Substring("Hacknet.".Length);
            }
            if (saveTag.StartsWith("SC"))
            {
                saveTag = saveTag.Substring("SC".Length);
            }
            var result = new XElement(saveTag);
            var fields = condType.GetFields();

            foreach (var field in fields)
            {
                var fieldVal = string.Format(CultureInfo.InvariantCulture, "{0}", new object[1] {
                    field.GetValue(cond)
                });
                result.SetAttributeValue(field.Name, fieldVal);
            }

            return(result);
        }
Beispiel #2
0
        internal static bool GetSaveStringOverridePrefix(SerializableCondition __instance, ref string __result)
        {
            if (__instance is PathfinderCondition pfCondition)
            {
                var builder = new StringBuilder();
                using (var writer = XmlWriter.Create(builder))
                    pfCondition.GetSaveElement().WriteTo(writer);
                __result = builder.ToString();
                return(false);
            }

            return(true);
        }