Exemple #1
0
        /// <summary>
        /// Used to add bonuses specific to a fighter (e.g. influenced by a decision during gameplay).
        /// This will increase either one of MagicStrengthBonus's fields or MagicResistanceBonus's fields (if magic type is a simple element),
        /// or the basic MagicStrength/MagicResistance value if magicType "none" or "all" is specified
        /// </summary>
        /// <param name="magicStatType">Determines whther it's magic attack or magic resistance being boosted</param>
        /// <param name="magicType"></param>
        /// <param name="bonus"></param>
        /// <param name="isSecretStatBoost"></param>
        public void AddMagicBonus(MagicStatType magicStatType, MagicType magicType, int bonus, bool isSecretStatBoost = false)
        {
            if (magicType == MagicType.All || magicType == MagicType.None)
            {
                if (magicStatType == MagicStatType.Power)
                {
                    MagicStrength += bonus;
                }
                else
                {
                    MagicResistance += bonus;
                }
            }
            else
            {
                MagicSet <int> bonusesSet = magicStatType == MagicStatType.Power
                    ? MagicStrengthBonuses
                    : MagicResistanceBonuses;

                bonusesSet[magicType] += bonus;
            }

            MagicBonusAppliedEventArgs e = new MagicBonusAppliedEventArgs(magicStatType, magicType, bonus, isSecretStatBoost);

            OnMagicBonusApplied(e);
        }
        public void CorrectlySuppressesMessage_MagicBonusAdded_SecretStatBonus()
        {
            MagicBonusAppliedEventArgs e = new MagicBonusAppliedEventArgs(MagicStatType.Power, MagicType.Lightning, 4, true);

            _fighter.OnMagicBonusApplied(e);

            MockOutputMessage[] outputs = _output.GetOutputs();

            Assert.AreEqual(0, outputs.Length);
        }
        private void PrintMagicBoostMessage(object sender, MagicBonusAppliedEventArgs e)
        {
            if (!e.IsSecretStatBonus)
            {
                IFighter senderAsFighter = sender as IFighter;

                if (senderAsFighter == null)
                {
                    return;
                }

                _output.WriteLine($"{senderAsFighter.DisplayName} gained +{e.BonusAmount} {e.MagicType.ToString().ToLower()} magic {e.MagicStatType.ToString().ToLower()}");
            }
        }
        public void CorrectlyPrintsMessage_MagicBonusAdded([Values(MagicType.Fire, MagicType.Ice, MagicType.Water)] MagicType magicType,
                                                           [Values(1, 3)] int bonusAmount,
                                                           [Values] MagicStatType magicStatType)
        {
            MagicBonusAppliedEventArgs e = new MagicBonusAppliedEventArgs(magicStatType, magicType, bonusAmount, false);

            _fighter.OnMagicBonusApplied(e);

            MockOutputMessage[] outputs = _output.GetOutputs();

            Assert.AreEqual(1, outputs.Length);

            MockOutputMessage output = outputs[0];

            Assert.AreEqual($"{_fighter.DisplayName} gained +{bonusAmount} {magicType.ToString().ToLower()} magic {magicStatType.ToString().ToLower()}\n", output.Message);
        }
Exemple #5
0
        public void AddMagicBonus_AppropriatelyRasiesEvent([Values] MagicStatType magicStatType, [Values] MagicType magicType, [Values(1, 5)] int bonusAmount, [Values] bool isSecret)
        {
            _fighter.AddMagicBonus(magicStatType, magicType, bonusAmount, isSecret);

            List <EventLog> logs = _logger.Logs;

            Assert.AreEqual(1, logs.Count);

            EventLog log = logs[0];

            Assert.AreEqual(EventType.MagicBonusApplied, log.Type);

            MagicBonusAppliedEventArgs e = log.E as MagicBonusAppliedEventArgs;

            Assert.NotNull(e);
            Assert.AreEqual(magicStatType, e.MagicStatType);
            Assert.AreEqual(magicType, e.MagicType);
            Assert.AreEqual(bonusAmount, e.BonusAmount);
            Assert.AreEqual(isSecret, e.IsSecretStatBonus);
        }
 private void _logMagicBonusApplied(object sender, MagicBonusAppliedEventArgs e)
 {
     Logs.Add(new EventLog(EventType.MagicBonusApplied, sender, e));
 }
Exemple #7
0
 public void OnMagicBonusApplied(MagicBonusAppliedEventArgs e)
 {
     MagicBonusApplied?.Invoke(this, e);
 }