/// <summary> /// Get instanced bundles save data. /// </summary> public EffectBundleSaveData_v1[] GetInstancedBundlesSaveData() { List <EffectBundleSaveData_v1> bundlesSaveData = new List <EffectBundleSaveData_v1>(); foreach (InstancedBundle bundle in instancedBundles) { EffectBundleSaveData_v1 bundleData = new EffectBundleSaveData_v1(); bundleData.version = bundle.version; bundleData.bundleType = bundle.bundleType; bundleData.targetType = bundle.targetType; bundleData.elementType = bundle.elementType; bundleData.name = bundle.name; bundleData.iconIndex = bundle.iconIndex; bundleData.casterEntityType = bundle.casterEntityType; bundleData.casterLoadID = bundle.casterLoadID; List <EffectSaveData_v1> liveEffectsSaveData = new List <EffectSaveData_v1>(); foreach (IEntityEffect effect in bundle.liveEffects) { EffectSaveData_v1 effectData = GetEffectSaveData(effect); liveEffectsSaveData.Add(effectData); } bundleData.liveEffects = liveEffectsSaveData.ToArray(); bundlesSaveData.Add(bundleData); } return(bundlesSaveData.ToArray()); }
/// <summary> /// Get full effect save data including effect specific data. /// </summary> public EffectSaveData_v1 GetEffectSaveData(IEntityEffect effect) { EffectSaveData_v1 effectData = new EffectSaveData_v1(); effectData.key = effect.Key; effectData.effectSettings = effect.Settings; effectData.roundsRemaining = effect.RoundsRemaining; effectData.chanceSuccess = effect.ChanceSuccess; effectData.statMods = effect.StatMods; effectData.skillMods = effect.SkillMods; effectData.isIncumbent = (effect is IncumbentEffect) ? (effect as IncumbentEffect).IsIncumbent : false; effectData.effectSpecific = effect.GetSaveData(); return(effectData); }