Beispiel #1
0
        private IDamageableComponent GetDamageableComponent(DamageToken token)
        {
            switch (token)
            {
            case DamageToken.BackCannon:
                return(LowerStation.DamageableAlphaComponent);

            case DamageToken.FrontCannon:
                return(UpperStation.DamageableAlphaComponent);

            case DamageToken.Gravolift:
                return(Gravolift);

            case DamageToken.Reactor:
                return(LowerStation.DamageableBravoComponent);

            case DamageToken.Shield:
                return(UpperStation.DamageableBravoComponent);

            case DamageToken.Structural:
                return(null);

            default:
                throw new InvalidOperationException("Invalid damage token encountered.");
            }
        }
Beispiel #2
0
        public void DamageTokenCorrectlyFormatted()
        {
            var token = new DamageToken(TokenContext.Create(@"{damage:1d8+str:1,2}"));

            var actual   = token.Format(azer);
            var expected = @"7 (1d8 + 3)";

            Assert.AreEqual(expected, actual);
        }
Beispiel #3
0
        public void DamageTokenCorrectlyExtractsInformation()
        {
            var token = new DamageToken(TokenContext.Create(@"{damage:1d8+str:1,2}"));

            Assert.AreEqual(1, token.Count);
            Assert.AreEqual(Die.D8, token.Size);
            Assert.AreEqual(Ability.Strength, token.ModifiedBy);
            Assert.AreEqual(0, token.FlatBonus);
            Assert.IsTrue(new int[] { 1, 2 }.SequenceEqual(token.Context.Groups));
        }
Beispiel #4
0
        public void TakeDamage(DamageToken newDamageToken, bool isCampaignDamage = false)
        {
            CurrentDamageTokens.Add(newDamageToken);
            var damageableComponent = GetDamageableComponent(newDamageToken);

            damageableComponent?.SetDamaged(isCampaignDamage);
            if (newDamageToken == DamageToken.Structural && isCampaignDamage)
            {
                HasStructuralCarryoverDamage = true;
            }
        }
Beispiel #5
0
        public void DamageTokenCorrectlyRetokenizes()
        {
            var token = new DamageToken(TokenContext.Create(@"{damage:1d8+str:1,2}"));

            token.Count      = 2;
            token.Size       = Die.D10;
            token.ModifiedBy = Ability.Intelligence;

            var actual   = token.TokenText;
            var expected = @"{damage:2d10+int:1,2}";

            Assert.AreEqual(expected, actual);
        }