예제 #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 MagicBonusAppliedEventArgs(MagicStatType magicStatType, MagicType magicType, int bonusAmount, bool isSecretStatBonus)
 {
     MagicStatType     = magicStatType;
     MagicType         = magicType;
     BonusAmount       = bonusAmount;
     IsSecretStatBonus = isSecretStatBonus;
 }
        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);
        }
예제 #4
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);
        }
예제 #5
0
 public MagicDecisionBonus(int bonusAmount, MagicStatType magicStatType, MagicType magicType) : base(bonusAmount)
 {
     _magicType     = magicType;
     _magicStatType = magicStatType;
 }