private void ValidateInput(ICollection <GunProperty> properties, int reload, int misfire, ICollection <RollType> damageDice, WeaponTier weaponTier, GunRange range, int gunCost, int ammoCost) { Assert.HasNoNullEntries(properties); foreach (GunProperty property in properties) { Assert.ValidEnum(property); } Assert.IsTrue(reload >= CommonConstants.MinimumReload); Assert.IsTrue(misfire >= CommonConstants.MinimumMisfire); Assert.IsTrue(misfire <= CommonConstants.MaximumMisfire); Assert.HasNoNullEntries(damageDice); Assert.IsNotEmpty(damageDice); foreach (RollType damageDie in damageDice) { Assert.ValidEnum(damageDie); Assert.IsTrue(damageDie != RollType.None); } Assert.ValidEnum(weaponTier); Assert.IsNotNull(range); Assert.IsTrue(gunCost > 0); Assert.IsTrue(ammoCost > 0); }
public Gun(ICollection <GunProperty> properties, int reload, int misfire, ICollection <RollType> damageDice, WeaponTier weaponTier, GunRange range, int gunCost, //value in gold int ammoCost) //value in copper { ValidateInput(properties, reload, misfire, damageDice, weaponTier, range, gunCost, ammoCost); Properties = properties; //TODO: deep copy? DamageModifier = GetDmgMod(weaponTier); HitModifier = GetHitMod(weaponTier); Reload = GetReloadValue(reload, weaponTier); Misfire = misfire; DamageDice = damageDice; Range = range; AmmoCost = ammoCost; GunCost = gunCost; }