private static void LoadRafCombatStyle(XElement elem, ref RafCombatStyle value) { switch (elem.Value.ToLower()) { case "auto": value = RafCombatStyle.Auto; break; case "combatonly": value = RafCombatStyle.CombatOnly; break; case "healingovercombat": value = RafCombatStyle.HealingOverCombat; break; case "healingonly": value = RafCombatStyle.HealingOnly; break; default: Shaman.Slog( "config: setting '{0}' invalid - expected Raf combat style but read '{1}' - defaulting to '{2}'", elem.Name, elem.Value, value ); break; } }
public bool FileLoad(string sFilename, out bool didUpgrade) { XElement toplvl = XElement.Load(sFilename); XElement[] elements = toplvl.Elements().ToArray(); didUpgrade = false; foreach (XElement elem in elements) { switch (elem.Name.ToString()) { case "version": LoadStr(elem, ref CreatedByVersion); break; case "debug": LoadBool(elem, ref Debug); break; case "useghostwolf": LoadBool(elem, ref UseGhostWolfForm); break; case "safedistanceforghostwolf": LoadInt(elem, ref DistanceForGhostWolf); break; case "restminmana": LoadInt(elem, ref RestManaPercent); break; case "restminhealth": LoadInt(elem, ref RestHealthPercent); break; case "needheal": LoadInt(elem, ref NeedHealHealthPercent); break; case "emergencyhealth": LoadInt(elem, ref EmergencyHealthPercent); break; case "emergencymana": LoadInt(elem, ref EmergencyManaPercent); break; case "needlifeblood": LoadInt(elem, ref LifebloodPercent); break; case "needshamanisticrage": LoadInt(elem, ref ShamanisticRagePercent); break; case "needthunderstorm": LoadInt(elem, ref ThunderstormPercent); break; case "needmanatide": LoadInt(elem, ref ManaTidePercent); break; case "trinkathealth": LoadInt(elem, ref TrinkAtHealth); break; case "trinkatmana": LoadInt(elem, ref TrinkAtMana); break; case "usebandages": LoadBool(elem, ref UseBandages); break; case "totemrecalldistance": LoadInt(elem, ref DistanceForTotemRecall); break; case "twistwatershield": LoadInt(elem, ref TwistManaPercent); break; case "twistlightningshield": LoadInt(elem, ref TwistDamagePercent); break; case "disablemovement": LoadBool(elem, ref DisableMovement); break; case "disabletargeting": LoadBool(elem, ref DisableTargeting); break; case "meleecombatbeforelevel10": LoadBool(elem, ref MeleeCombatBeforeLevel10); break; case "interruptstyle": LoadSpellInterruptStyle(elem, ref InterruptStyle); break; case "detectimmunities": LoadBool(elem, ref DetectImmunities); break; case "waterwalking": LoadBool(elem, ref WaterWalking); break; case "pve_combatstyle": LoadPveCombatStyle(elem, ref PVE_CombatStyle); break; case "pve_typeofpull": LoadTypeOfPull(elem, ref PVE_PullType); break; case "pve_stressonly_feralspirit": LoadBool(elem, ref PVE_SaveForStress_FeralSpirit); break; case "pve_stressonly_elementaltotems": LoadBool(elem, ref PVE_SaveForStress_ElementalTotems); break; case "pve_stressonly_dps_racials": LoadBool(elem, ref PVE_SaveForStress_DPS_Racials); break; case "pve_stressonly_bloodlust": LoadBool(elem, ref PVE_SaveForStress_Bloodlust); break; case "pve_stressonly_totembar": LoadBool(elem, ref PVE_SaveForStress_TotemsSelected); break; case "pve_stresslevelsabove": LoadInt(elem, ref PVE_LevelsAboveAsElite); break; case "pve_stressfulmobcount": LoadInt(elem, ref PVE_StressfulMobCount); break; case "pve_totemearth": LoadStr(elem, ref PVE_TotemEarth); break; case "pve_totemfire": LoadStr(elem, ref PVE_TotemFire); break; case "pve_totemwater": LoadStr(elem, ref PVE_TotemWater); break; case "pve_totemair": LoadStr(elem, ref PVE_TotemAir); break; case "pve_mainhand": LoadStr(elem, ref PVE_MainhandImbue); break; case "pve_offhand": LoadStr(elem, ref PVE_OffhandImbue); break; case "pvp_combatstyle": LoadPvpCombatStyle(elem, ref PVP_CombatStyle); break; case "pvp_totemearth": LoadStr(elem, ref PVP_TotemEarth); break; case "pvp_totemfire": LoadStr(elem, ref PVP_TotemFire); break; case "pvp_totemwater": LoadStr(elem, ref PVP_TotemWater); break; case "pvp_totemair": LoadStr(elem, ref PVP_TotemAir); break; case "pvp_mainhand": LoadStr(elem, ref PVP_MainhandImbue); break; case "pvp_offhand": LoadStr(elem, ref PVP_OffhandImbue); break; case "pvp_cleansepriority": LoadSpellPriority(elem, ref PVP_CleansePriority); break; case "pvp_purgepriority": LoadSpellPriority(elem, ref PVP_PurgePriority); break; case "pvp_hexicon": LoadRaidIcon(elem, ref PVP_HexIcon); break; case "pvp_prepwaterbreathing": LoadBool(elem, ref PVP_PrepWaterBreathing); break; case "pvp_prepwaterwalking": LoadBool(elem, ref PVP_PrepWaterWalking); break; case "pvp_heal_healingwave": LoadInt(elem, ref PVP_Heal.HealingWave); break; case "pvp_heal_riptide": LoadInt(elem, ref PVP_Heal.Riptide); break; case "pvp_heal_unleashelements": LoadInt(elem, ref PVP_Heal.UnleashElements); break; case "pvp_heal_chainheal": LoadInt(elem, ref PVP_Heal.ChainHeal); break; case "pvp_heal_healingrain": LoadInt(elem, ref PVP_Heal.HealingRain); break; case "pvp_heal_greaterhealingwave": LoadInt(elem, ref PVP_Heal.GreaterHealingWave); break; case "pvp_heal_healingsurge": LoadInt(elem, ref PVP_Heal.HealingSurge); break; case "pvp_heal_ohshoot": LoadInt(elem, ref PVP_Heal.OhShoot); break; case "pvp_heal_tidalwaves": LoadBool(elem, ref PVP_Heal.TidalWaves); break; case "pvp_heal_cleanse": LoadBool(elem, ref PVP_Heal.Cleanse); break; case "pvp_heal_pets": LoadBool(elem, ref PVP_Heal.Pets); break; case "pvp_heal_searchrange": LoadDouble(elem, ref PVP_Heal.SearchRange); break; case "raf_combatstyle": LoadRafCombatStyle(elem, ref RAF_CombatStyle); break; case "raf_groupoffheal": LoadInt(elem, ref RAF_GroupOffHeal); break; case "raf_usethunderstorm": LoadBool(elem, ref RAF_UseThunderstorm); break; case "raf_usebloodlustonbosses": LoadBool(elem, ref RAF_UseBloodlustOnBosses); break; case "raf_saveferalspiritforbosses": LoadBool(elem, ref RAF_SaveFeralSpiritForBosses); break; case "raf_totemearth": LoadStr(elem, ref RAF_TotemEarth); break; case "raf_totemfire": LoadStr(elem, ref RAF_TotemFire); break; case "raf_totemwater": LoadStr(elem, ref RAF_TotemWater); break; case "raf_totemair": LoadStr(elem, ref RAF_TotemAir); break; case "raf_saveelementaltotemsforbosses": LoadBool(elem, ref RAF_SaveElementalTotemsForBosses); break; case "raf_followclosely": LoadBool(elem, ref RAF_FollowClosely); break; case "raf_cleansepriority": LoadSpellPriority(elem, ref RAF_CleansePriority); break; case "raf_purgepriority": LoadSpellPriority(elem, ref RAF_PurgePriority); break; case "raf_hexicon": LoadRaidIcon(elem, ref RAF_HexIcon); break; case "raf_bindicon": LoadRaidIcon(elem, ref RAF_BindIcon); break; case "raf_heal_healingwave": LoadInt(elem, ref RAF_Heal.HealingWave); break; case "raf_heal_riptide": LoadInt(elem, ref RAF_Heal.Riptide); break; case "raf_heal_unleashelements": LoadInt(elem, ref RAF_Heal.UnleashElements); break; case "raf_heal_chainheal": LoadInt(elem, ref RAF_Heal.ChainHeal); break; case "raf_heal_healingrain": LoadInt(elem, ref RAF_Heal.HealingRain); break; case "raf_heal_greaterhealingwave": LoadInt(elem, ref RAF_Heal.GreaterHealingWave); break; case "raf_heal_healingsurge": LoadInt(elem, ref RAF_Heal.HealingSurge); break; case "raf_heal_ohshoot": LoadInt(elem, ref RAF_Heal.OhShoot); break; case "raf_heal_tidalwaves": LoadBool(elem, ref RAF_Heal.TidalWaves); break; case "raf_heal_cleanse": LoadBool(elem, ref RAF_Heal.Cleanse); break; case "raf_heal_pets": LoadBool(elem, ref RAF_Heal.Pets); break; case "raf_heal_searchrange": LoadDouble(elem, ref RAF_Heal.SearchRange); break; case "raf_followatrange": LoadInt(elem, ref RAF_FollowAtRange); break; case "raf_healstyle": LoadHealStyle(elem, ref RAF_HealStyle); break; default: Shaman.Dlog("error: unknown config setting: {0}={1}", elem.Name, elem.Value.ToString()); break; } } if (String.Compare(CreatedByVersion, Shaman.Version) < 0) { didUpgrade = true; Shaman.Dlog("ConfigValue.FileLoad: detected config file created by a different version"); // UPGRADE TO 4.2.05 if (string.Compare(CreatedByVersion, "4.2.05") < 0) { Shaman.Slog(""); Shaman.Slog(Color.Orange, "ConfigUpgrade: upgrading older config file version to {0}", Shaman.Version); Shaman.Slog(Color.Orange, "ConfigUpgrade: Shamanistic Rage % changed from {0} to {1}", ShamanisticRagePercent, 100); ShamanisticRagePercent = 100; Shaman.Slog(Color.Orange, "ConfigUpgrade: RAF Combat Style changed from '{0}' to '{1}'", RAF_CombatStyle, "Auto"); RAF_CombatStyle = RafCombatStyle.Auto; Shaman.Slog(Color.Orange, "ConfigUpgrade: Shield Twist Mana % changed from '{0}' to '{1}'", TwistManaPercent, 25); TwistManaPercent = 25; Shaman.Slog(Color.Orange, "ConfigUpgrade: Shield Twist Damage % changed from '{0}' to '{1}'", TwistDamagePercent, 50); TwistDamagePercent = 50; Shaman.Slog(""); } CreatedByVersion = Shaman.Version; Save(sFilename); } return(true); }
public bool FileLoad(string sFilename, out bool didUpgrade ) { XElement toplvl = XElement.Load( sFilename); XElement[] elements = toplvl.Elements().ToArray(); didUpgrade = false; foreach (XElement elem in elements) { switch (elem.Name.ToString()) { case "version": LoadStr(elem, ref CreatedByVersion); break; case "debug": LoadBool(elem, ref Debug); break; case "useghostwolf": LoadBool(elem, ref UseGhostWolfForm); break; case "safedistanceforghostwolf": LoadInt(elem, ref DistanceForGhostWolf); break; case "restminmana": LoadInt(elem, ref RestManaPercent); break; case "restminhealth": LoadInt(elem, ref RestHealthPercent); break; case "needheal": LoadInt(elem, ref NeedHealHealthPercent); break; case "emergencyhealth": LoadInt(elem, ref EmergencyHealthPercent); break; case "emergencymana": LoadInt(elem, ref EmergencyManaPercent); break; case "needlifeblood": LoadInt(elem, ref LifebloodPercent); break; case "needshamanisticrage": LoadInt(elem, ref ShamanisticRagePercent); break; case "needthunderstorm": LoadInt(elem, ref ThunderstormPercent); break; case "needmanatide": LoadInt(elem, ref ManaTidePercent); break; case "trinkathealth": LoadInt(elem, ref TrinkAtHealth); break; case "trinkatmana": LoadInt(elem, ref TrinkAtMana); break; case "usebandages": LoadBool(elem, ref UseBandages); break; case "totemrecalldistance": LoadInt(elem, ref DistanceForTotemRecall); break; case "twistwatershield": LoadInt(elem, ref TwistManaPercent); break; case "twistlightningshield": LoadInt(elem, ref TwistDamagePercent); break; case "disablemovement": LoadBool(elem, ref DisableMovement); break; case "disabletargeting": LoadBool(elem, ref DisableTargeting); break; case "meleecombatbeforelevel10": LoadBool(elem, ref MeleeCombatBeforeLevel10 ); break; case "interruptstyle": LoadSpellInterruptStyle(elem, ref InterruptStyle ); break; case "detectimmunities": LoadBool(elem, ref DetectImmunities ); break; case "waterwalking": LoadBool(elem, ref WaterWalking ); break; case "pve_combatstyle": LoadPveCombatStyle(elem, ref PVE_CombatStyle); break; case "pve_typeofpull": LoadTypeOfPull(elem, ref PVE_PullType); break; case "pve_stressonly_feralspirit": LoadBool(elem, ref PVE_SaveForStress_FeralSpirit); break; case "pve_stressonly_elementaltotems": LoadBool(elem, ref PVE_SaveForStress_ElementalTotems); break; case "pve_stressonly_dps_racials": LoadBool(elem, ref PVE_SaveForStress_DPS_Racials); break; case "pve_stressonly_bloodlust": LoadBool(elem, ref PVE_SaveForStress_Bloodlust); break; case "pve_stressonly_totembar": LoadBool(elem, ref PVE_SaveForStress_TotemsSelected); break; case "pve_stresslevelsabove": LoadInt(elem, ref PVE_LevelsAboveAsElite); break; case "pve_stressfulmobcount": LoadInt(elem, ref PVE_StressfulMobCount); break; case "pve_totemearth": LoadStr(elem, ref PVE_TotemEarth); break; case "pve_totemfire": LoadStr(elem, ref PVE_TotemFire); break; case "pve_totemwater": LoadStr(elem, ref PVE_TotemWater); break; case "pve_totemair": LoadStr(elem, ref PVE_TotemAir); break; case "pve_mainhand": LoadStr(elem, ref PVE_MainhandImbue); break; case "pve_offhand": LoadStr(elem, ref PVE_OffhandImbue); break; case "pvp_combatstyle": LoadPvpCombatStyle(elem, ref PVP_CombatStyle); break; case "pvp_totemearth": LoadStr(elem, ref PVP_TotemEarth); break; case "pvp_totemfire": LoadStr(elem, ref PVP_TotemFire); break; case "pvp_totemwater": LoadStr(elem, ref PVP_TotemWater); break; case "pvp_totemair": LoadStr(elem, ref PVP_TotemAir); break; case "pvp_mainhand": LoadStr(elem, ref PVP_MainhandImbue); break; case "pvp_offhand": LoadStr(elem, ref PVP_OffhandImbue); break; case "pvp_cleansepriority": LoadSpellPriority(elem, ref PVP_CleansePriority); break; case "pvp_purgepriority": LoadSpellPriority(elem, ref PVP_PurgePriority); break; case "pvp_hexicon": LoadRaidIcon(elem, ref PVP_HexIcon ); break; case "pvp_prepwaterbreathing": LoadBool(elem, ref PVP_PrepWaterBreathing ); break; case "pvp_prepwaterwalking": LoadBool(elem, ref PVP_PrepWaterWalking ); break; case "pvp_heal_healingwave": LoadInt(elem, ref PVP_Heal.HealingWave); break; case "pvp_heal_riptide": LoadInt(elem, ref PVP_Heal.Riptide); break; case "pvp_heal_unleashelements": LoadInt(elem, ref PVP_Heal.UnleashElements); break; case "pvp_heal_chainheal": LoadInt(elem, ref PVP_Heal.ChainHeal); break; case "pvp_heal_healingrain": LoadInt(elem, ref PVP_Heal.HealingRain); break; case "pvp_heal_greaterhealingwave": LoadInt(elem, ref PVP_Heal.GreaterHealingWave); break; case "pvp_heal_healingsurge": LoadInt(elem, ref PVP_Heal.HealingSurge); break; case "pvp_heal_ohshoot": LoadInt(elem, ref PVP_Heal.OhShoot); break; case "pvp_heal_tidalwaves": LoadBool(elem, ref PVP_Heal.TidalWaves); break; case "pvp_heal_cleanse": LoadBool(elem, ref PVP_Heal.Cleanse); break; case "pvp_heal_pets": LoadBool(elem, ref PVP_Heal.Pets ); break; case "pvp_heal_searchrange": LoadDouble(elem, ref PVP_Heal.SearchRange); break; case "raf_combatstyle": LoadRafCombatStyle(elem, ref RAF_CombatStyle); break; case "raf_groupoffheal": LoadInt(elem, ref RAF_GroupOffHeal ); break; case "raf_usethunderstorm": LoadBool(elem, ref RAF_UseThunderstorm); break; case "raf_usebloodlustonbosses": LoadBool(elem, ref RAF_UseBloodlustOnBosses); break; case "raf_saveferalspiritforbosses": LoadBool(elem, ref RAF_SaveFeralSpiritForBosses); break; case "raf_totemearth": LoadStr(elem, ref RAF_TotemEarth); break; case "raf_totemfire": LoadStr(elem, ref RAF_TotemFire); break; case "raf_totemwater": LoadStr(elem, ref RAF_TotemWater); break; case "raf_totemair": LoadStr(elem, ref RAF_TotemAir); break; case "raf_saveelementaltotemsforbosses": LoadBool(elem, ref RAF_SaveElementalTotemsForBosses ); break; case "raf_followclosely": LoadBool(elem, ref RAF_FollowClosely ); break; case "raf_cleansepriority": LoadSpellPriority(elem, ref RAF_CleansePriority); break; case "raf_purgepriority": LoadSpellPriority(elem, ref RAF_PurgePriority); break; case "raf_hexicon": LoadRaidIcon(elem, ref RAF_HexIcon); break; case "raf_bindicon": LoadRaidIcon(elem, ref RAF_BindIcon); break; case "raf_heal_healingwave": LoadInt(elem, ref RAF_Heal.HealingWave); break; case "raf_heal_riptide": LoadInt(elem, ref RAF_Heal.Riptide); break; case "raf_heal_unleashelements": LoadInt(elem, ref RAF_Heal.UnleashElements); break; case "raf_heal_chainheal": LoadInt(elem, ref RAF_Heal.ChainHeal); break; case "raf_heal_healingrain": LoadInt(elem, ref RAF_Heal.HealingRain); break; case "raf_heal_greaterhealingwave": LoadInt(elem, ref RAF_Heal.GreaterHealingWave); break; case "raf_heal_healingsurge": LoadInt(elem, ref RAF_Heal.HealingSurge); break; case "raf_heal_ohshoot": LoadInt(elem, ref RAF_Heal.OhShoot); break; case "raf_heal_tidalwaves": LoadBool(elem, ref RAF_Heal.TidalWaves); break; case "raf_heal_cleanse": LoadBool(elem, ref RAF_Heal.Cleanse); break; case "raf_heal_pets": LoadBool(elem, ref RAF_Heal.Pets); break; case "raf_heal_searchrange": LoadDouble(elem, ref RAF_Heal.SearchRange); break; case "raf_followatrange": LoadInt(elem, ref RAF_FollowAtRange ); break; case "raf_healstyle": LoadHealStyle(elem, ref RAF_HealStyle); break; default: Shaman.Dlog("error: unknown config setting: {0}={1}", elem.Name, elem.Value.ToString()); break; } } if ( String.Compare( CreatedByVersion, Shaman.Version) < 0) { didUpgrade = true; Shaman.Dlog("ConfigValue.FileLoad: detected config file created by a different version"); // UPGRADE TO 4.2.05 if (string.Compare(CreatedByVersion, "4.2.05") < 0) { Shaman.Slog( "" ); Shaman.Slog(Color.Orange, "ConfigUpgrade: upgrading older config file version to {0}", Shaman.Version); Shaman.Slog(Color.Orange, "ConfigUpgrade: Shamanistic Rage % changed from {0} to {1}", ShamanisticRagePercent, 100); ShamanisticRagePercent = 100; Shaman.Slog(Color.Orange, "ConfigUpgrade: RAF Combat Style changed from '{0}' to '{1}'", RAF_CombatStyle, "Auto"); RAF_CombatStyle = RafCombatStyle.Auto; Shaman.Slog(Color.Orange, "ConfigUpgrade: Shield Twist Mana % changed from '{0}' to '{1}'", TwistManaPercent, 25); TwistManaPercent = 25; Shaman.Slog(Color.Orange, "ConfigUpgrade: Shield Twist Damage % changed from '{0}' to '{1}'", TwistDamagePercent, 50); TwistDamagePercent = 50; Shaman.Slog(""); } CreatedByVersion = Shaman.Version; Save(sFilename); } return true; }