コード例 #1
0
ファイル: Shade.cs プロジェクト: Jsweeney1000/SimpleRPG
        public void AbsorbShade(Shade shade)
        {
            ShadeAbsorbedEventArgs e = new ShadeAbsorbedEventArgs(shade);

            OnShadeAbsorbed(e);
            FullyHeal();

            IncrementMalevolenceCounter(shade._malevolenceCounter);

            StatType statBonus = ChanceService.WhichEventOccurs(AbsorptionBonuses);

            //TODO: move into a method
            int increaseAmount;

            switch (statBonus)
            {
            case StatType.Speed:
            case StatType.Defense:
                increaseAmount = shade.ShadeExperience;
                break;

            case StatType.Evade:
                increaseAmount = shade.ShadeExperience * 5;
                break;

            default:
                throw new Exception($"Shade.AbsorbShade() does not know how to handle a boost to the '{statBonus}' stat");
            }

            RaiseStat(statBonus, increaseAmount);
            ShadeExperience    += shade.ShadeExperience;
            shade.CurrentHealth = 0;
        }
コード例 #2
0
        protected void PrintShadeAbsorbedMessage(object sender, ShadeAbsorbedEventArgs e)
        {
            Shade senderAsShade = sender as Shade;

            if (senderAsShade == null)
            {
                throw new InvalidCastException("BattleManagerScreenoutputs.PrintShadeAbsorbedMessage was expecting the sender argument to be castable to type Shade");
            }
            _output.WriteLine($"{e.AbsorbedShade.DisplayName}'s essence was absorbed by {senderAsShade.DisplayName}!");
        }
コード例 #3
0
ファイル: EventLogger.cs プロジェクト: Jsweeney1000/SimpleRPG
 private void _logShadeAbsorbed(object sender, ShadeAbsorbedEventArgs e)
 {
     Logs.Add(new EventLog(EventType.ShadeAbsorbed, sender, e));
 }
コード例 #4
0
ファイル: Shade.cs プロジェクト: Jsweeney1000/SimpleRPG
 public void OnShadeAbsorbed(ShadeAbsorbedEventArgs e)
 {
     ShadeAbsorbed?.Invoke(this, e);
 }