protected UpperStation( StationLocation stationLocation, ThreatController threatController, Gravolift gravolift, Doors bluewardDoors, Doors redwardDoors, SittingDuck sittingDuck) : base(stationLocation, threatController, gravolift, bluewardDoors, redwardDoors, sittingDuck) { }
internal LowerWhiteStation( ThreatController threatController, Gravolift gravolift, Doors bluewardDoors, Doors redwardDoors, SittingDuck sittingDuck) : base(StationLocation.LowerWhite, threatController, gravolift, bluewardDoors, redwardDoors, sittingDuck) { CentralReactor = new CentralReactor(); AlphaComponent = new PulseCannon(CentralReactor); VisualConfirmationComponent = new VisualConfirmationComponent(); }
internal UpperBlueStation( SideReactor redReactor, ThreatController threatController, Gravolift gravolift, Doors bluewardDoors, Doors redwardDoors, SittingDuck sittingDuck) : base(StationLocation.UpperBlue, threatController, gravolift, bluewardDoors, redwardDoors, sittingDuck) { AlphaComponent = new SideHeavyLaserCannon(redReactor, ZoneLocation.Blue); Shield = new SideShield(redReactor); BattleBotsComponent = new BattleBotsComponent(); }
internal UpperWhiteStation( CentralReactor whiteReactor, ThreatController threatController, Gravolift gravolift, Doors bluewardDoors, Doors redwardDoors, SittingDuck sittingDuck) : base(StationLocation.UpperWhite, threatController, gravolift, bluewardDoors, redwardDoors, sittingDuck) { AlphaComponent = new CentralHeavyLaserCannon(whiteReactor, ZoneLocation.White); Shield = new CentralShield(whiteReactor); ComputerComponent = new ComputerComponent(); }
internal LowerRedStation( CentralReactor whiteReactor, ThreatController threatController, Gravolift gravolift, Doors bluewardDoors, Doors redwardDoors, SittingDuck sittingDuck) : base(StationLocation.LowerRed, threatController, gravolift, bluewardDoors, redwardDoors, sittingDuck) { BatteryPack = new BatteryPack(); AlphaComponent = new SideLightLaserCannon(BatteryPack, ZoneLocation.Red); BattleBotsComponent = new BattleBotsComponent(); SideReactor = new SideReactor(whiteReactor); }
public bool TakeDamage(int damage) { var damageDone = DebuffsBySource.Values .Where(debuff => debuff == ZoneDebuff.DoubleDamage) .Aggregate(damage, (current, doubleDamageDebuff) => current * 2); var newDamageTokens = GetNewDamageTokens(damageDone); CurrentDamageTokens.AddRange(newDamageTokens); AllDamageTokensTaken.AddRange(newDamageTokens); TotalDamage += damageDone; var shipDestroyed = TotalDamage >= 7; if (!shipDestroyed) { foreach (var token in newDamageTokens) { switch (token) { case DamageToken.BackCannon: LowerStation.Cannon.SetDamaged(); break; case DamageToken.FrontCannon: UpperStation.Cannon.SetDamaged(); break; case DamageToken.Gravolift: Gravolift.SetDamaged(); break; case DamageToken.Reactor: LowerStation.EnergyContainer.SetDamaged(); break; case DamageToken.Shield: UpperStation.EnergyContainer.SetDamaged(); break; case DamageToken.Structural: break; } } } return(shipDestroyed); }