public static DM_ImbueEffect ParseImbueEffect(ImbueEffectPreset imbue) { var template = new DM_ImbueEffect { StatusID = imbue.PresetID, Name = imbue.Name, Description = imbue.Description }; template.Effects = new List <DM_EffectTransform>(); foreach (Transform child in imbue.transform) { var effectsChild = DM_EffectTransform.ParseTransform(child); if (effectsChild.ChildEffects.Count > 0 || effectsChild.Effects.Count > 0) // || effectsChild.EffectConditions.Count > 0) { template.Effects.Add(effectsChild); } } return(template); }
public static void ParseAllEffects() { var parsedIdentifiers = new List <string>(); string dir = Serializer.Folders.Effects; if (References.RPM_EFFECT_PRESETS is Dictionary <int, EffectPreset> dict) { SL.Log("Parsing " + dict.Count + " EffectPresets!"); foreach (EffectPreset preset in dict.Values) { if (preset is ImbueEffectPreset imbuePreset) { var name = imbuePreset.Name?.Trim(); var template = DM_ImbueEffect.ParseImbueEffect(imbuePreset); ListManager.ImbueEffects.Add(template.StatusID.ToString(), template); Serializer.SaveToXml(dir, name, template); } else if (preset.GetComponent <StatusEffect>() is StatusEffect status) { if (string.IsNullOrEmpty(status.IdentifierName) || parsedIdentifiers.Contains(status.IdentifierName)) { continue; } var name = status.IdentifierName; parsedIdentifiers.Add(status.IdentifierName); var template = ParseStatusEffect(status); ListManager.Effects.Add(template.PresetID.ToString(), template); Serializer.SaveToXml(dir, name, template); } } } else { SL.LogError("Could not find Effect Prefabs!"); } int manualID = 1000; if (References.RPM_STATUS_EFFECTS is Dictionary <string, StatusEffect> statusDict) { SL.Log("Parsing " + statusDict.Count + " StatusEffect Prefabs! (before dupe check)"); foreach (var status in statusDict.Values) { //SL.Log(status.name); if (string.IsNullOrEmpty(status.IdentifierName) || parsedIdentifiers.Contains(status.IdentifierName)) { continue; } var template = ParseStatusEffect(status); if (!string.IsNullOrEmpty(template.Name?.Trim())) { if (template.PresetID == -1) { manualID++; template.PresetID = manualID; } ListManager.Effects.Add(template.PresetID.ToString(), template); Serializer.SaveToXml(dir, status.IdentifierName, template); } } } }