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."); } }
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); }
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)); }
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; } }
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); }