Exemplo n.º 1
0
        public int RaiseStat(StatType statType, int amount)
        {
            switch (statType)
            {
            case StatType.Strength:
                Strength += amount;
                break;

            case StatType.Defense:
                Defense += amount;
                break;

            case StatType.Speed:
                Speed += amount;
                break;

            case StatType.Evade:
                Evade += amount;
                break;

            case StatType.Luck:
                Luck += amount;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(statType), statType, "Unrecognized statType value given to Fighter.RaiseStat()");
            }

            StatRaisedEventArgs e = new StatRaisedEventArgs(statType, amount);

            OnStatRaised(e);

            return(GetStatValue(statType));
        }
        public void MessageDisplayed_OnStatIncrease([Values] StatType raisedStat, [Range(1, 5)] int boostAmount)
        {
            //arrange
            _humanPlayer1.SetMove(_doNothingMove);
            _humanPlayer2.SetMove(_doNothingMove);

            _humanTeam.SetDeathsOnRoundEndEvent();

            _enemyPlayer1.SetMove(_doNothingMove);
            _enemyPlayer2.SetMove(_doNothingMove);

            StatRaisedEventArgs e = new StatRaisedEventArgs(raisedStat, boostAmount);

            _humanPlayer1.TurnEnded += delegate { _humanPlayer1.OnStatRaised(e); };

            //Act
            _battleManager.Battle(_humanTeam, _enemyTeam);

            //Assert
            MockOutputMessage[] outputs = _output.GetOutputs();

            string statTypeString = raisedStat == StatType.Evade ? "evasion" : raisedStat.ToString().ToLower();

            string            expectedMessage = $"{_humanPlayer1.DisplayName}'s {statTypeString} was raised by {boostAmount}!\n";
            MockOutputMessage output          = outputs.FirstOrDefault(o => o.Message == expectedMessage);

            Assert.NotNull(output);
        }
        protected void PrintStatRaisedMessage(object sender, StatRaisedEventArgs e)
        {
            IFighter senderAsFighter = sender as IFighter;

            if (senderAsFighter == null)
            {
                throw new ArgumentException("BattleManagerScreenOutputs.PrintStatRaisedMessage should subscribe to IFighters and nothing else");
            }

            StatType raisedStat = e.RaisedStat;

            string statTypeString = raisedStat == StatType.Evade ? "evasion" : raisedStat.ToString().ToLower();

            string expectedMessage = $"{senderAsFighter.DisplayName}'s {statTypeString} was raised by {e.BoostAmount}!";

            _output.WriteLine(expectedMessage);
        }
Exemplo n.º 4
0
 private void _logStatRaised(object sender, StatRaisedEventArgs e)
 {
     Logs.Add(new EventLog(EventType.StatRaised, sender, e));
 }
Exemplo n.º 5
0
 public void OnStatRaised(StatRaisedEventArgs e)
 {
     StatRaised?.Invoke(this, e);
 }