public static Defense FromAttributes(Dictionary <AttributeName, float> attributes) { var result = new Defense(); foreach (var attr in attributes) { switch (attr.Key) { case AttributeName.Defense: result.DefenseAttribute = (int)attr.Value; break; case AttributeName.PhysicalDamageReduction: result.AddDefense(DamageTypeName.Physical, attr.Value); break; case AttributeName.ColdResistance: result.AddDefense(DamageTypeName.Cold, attr.Value); break; case AttributeName.LightningResistance: result.AddDefense(DamageTypeName.Lightning, attr.Value); break; case AttributeName.FireResistance: result.AddDefense(DamageTypeName.Fire, attr.Value); break; case AttributeName.NonPhysicalDamageReduction: result.AddDefense(DamageTypeName.Cold, attr.Value); result.AddDefense(DamageTypeName.Lightning, attr.Value); result.AddDefense(DamageTypeName.Fire, attr.Value); break; } } return(result); }