protected int?GetStatAfterSkillModifiers(SkillModifierType type, int?baseValue) { float?value = baseValue; List <SkillModifier> modifiers = GetSkillModifiers(type); foreach (SkillModifier mod in modifiers) { if (mod.Application == SkillModifierApplication.Add) { value = mod.Apply(value, type); } } foreach (SkillModifier mod in modifiers) { if (mod.Application == SkillModifierApplication.Mult) { value = mod.Apply(value, type); } } foreach (SkillModifier mod in modifiers) { // not really applying the addnomult if (mod.Application == SkillModifierApplication.AddNoMult) { value = mod.Apply(value, type); } } return((int?)value); }
public float?Apply(float?value, SkillModifierType type) { // just double checking this modifier is being used on the right skill type if (type == this.Type) { switch (Application) { case SkillModifierApplication.Add: return(value + this.value); case SkillModifierApplication.AddNoMult: return(value + this.value); case SkillModifierApplication.Mult: return(value * this.value); default: return(0); } } else { return(value); } }
protected List <SkillModifier> GetSkillModifiers(SkillModifierType type) { List <SkillModifier> returnModifiers = new List <SkillModifier>(); List <SkillModifier> modifiers = boardEntity.GetSkillModifier(this); modifiers.AddRange(skillModifiers); foreach (SkillModifier mod in modifiers) { if (mod.Type == type) { returnModifiers.Add(mod); } } return(returnModifiers); }
public SkillModifier(SkillModifierType type, SkillModifierApplication application, float value) { skillModifierType = type; skillModifierApplication = application; this.value = value; }