Пример #1
0
        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);
        }
Пример #2
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;
        }