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();
 }
Beispiel #2
0
 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();
 }
Beispiel #3
0
 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);
 }
Beispiel #4
0
 internal BlueZone(ThreatController threatController, CentralReactor whiteReactor, Doors blueDoors, SittingDuck sittingDuck)
 {
     LowerBlueStation = new LowerBlueStation(
         whiteReactor,
         threatController,
         Gravolift,
         null,
         blueDoors,
         sittingDuck);
     UpperBlueStation = new UpperBlueStation(
         LowerBlueStation.SideReactor,
         threatController,
         Gravolift,
         null,
         blueDoors,
         sittingDuck);
 }
Beispiel #5
0
 internal RedZone(ThreatController threatController, CentralReactor whiteReactor, Doors redDoors, SittingDuck sittingDuck, Interceptors interceptors)
 {
     LowerRedStation = new LowerRedStation(
         whiteReactor,
         threatController,
         Gravolift,
         redDoors,
         null,
         sittingDuck);
     UpperRedStation = new UpperRedStation(
         LowerRedStation.SideReactor,
         interceptors,
         threatController,
         Gravolift,
         redDoors,
         null,
         sittingDuck);
 }
Beispiel #6
0
 internal SideReactor(CentralReactor source) : base(3, 2)
 {
     Source = source;
 }
        //TODO: Wire up all 3 stations if variable range interceptors are allowed
        public SittingDuck()
        {
            CurrentThreatBuffs     = new Dictionary <ExternalThreat, ExternalThreatBuff>();
            CurrentInternalThreats = new List <InternalThreat>();
            CurrentExternalThreats = new List <ExternalThreat>();
            var whiteReactor                = new CentralReactor();
            var redReactor                  = new SideReactor(whiteReactor);
            var blueReactor                 = new SideReactor(whiteReactor);
            var redBatteryPack              = new BatteryPack();
            var blueBatteryPack             = new BatteryPack();
            var computerComponent           = new ComputerComponent();
            var visualConfirmationComponent = new VisualConfirmationComponent();
            var rocketsComponent            = new RocketsComponent();

            Computer = computerComponent;
            VisualConfirmationComponent = visualConfirmationComponent;
            RocketsComponent            = rocketsComponent;
            var interceptorStation = new InterceptorStation
            {
                StationLocation = StationLocation.Interceptor
            };
            var upperRedStation = new StandardStation
            {
                Cannon          = new SideHeavyLaserCannon(redReactor, ZoneLocation.Red),
                EnergyContainer = new SideShield(redReactor),
                StationLocation = StationLocation.UpperRed
            };

            interceptorStation.InterceptorComponent = new InterceptorComponent(null, upperRedStation);
            upperRedStation.CComponent = new InterceptorComponent(interceptorStation, null);
            var upperWhiteStation = new StandardStation
            {
                Cannon          = new CentralHeavyLaserCannon(whiteReactor, ZoneLocation.White),
                EnergyContainer = new CentralShield(whiteReactor),
                StationLocation = StationLocation.UpperWhite,
                CComponent      = computerComponent
            };
            var upperBlueStation = new StandardStation
            {
                Cannon          = new SideHeavyLaserCannon(blueReactor, ZoneLocation.Blue),
                EnergyContainer = new SideShield(blueReactor),
                StationLocation = StationLocation.UpperBlue,
                CComponent      = new BattleBotsComponent()
            };
            var lowerRedStation = new StandardStation
            {
                Cannon          = new SideLightLaserCannon(redBatteryPack, ZoneLocation.Red),
                EnergyContainer = redReactor,
                StationLocation = StationLocation.LowerRed,
                CComponent      = new BattleBotsComponent()
            };

            var lowerWhiteStation = new StandardStation
            {
                Cannon          = new PulseCannon(whiteReactor),
                EnergyContainer = whiteReactor,
                StationLocation = StationLocation.LowerWhite,
                CComponent      = visualConfirmationComponent
            };
            var lowerBlueStation = new StandardStation
            {
                Cannon          = new SideLightLaserCannon(blueBatteryPack, ZoneLocation.Blue),
                EnergyContainer = blueReactor,
                StationLocation = StationLocation.LowerBlue,
                CComponent      = rocketsComponent
            };

            upperRedStation.BluewardStation       = upperWhiteStation;
            upperRedStation.OppositeDeckStation   = lowerRedStation;
            upperWhiteStation.RedwardStation      = upperRedStation;
            upperWhiteStation.BluewardStation     = upperBlueStation;
            upperWhiteStation.OppositeDeckStation = lowerWhiteStation;
            upperBlueStation.RedwardStation       = upperWhiteStation;
            upperBlueStation.OppositeDeckStation  = lowerBlueStation;
            lowerRedStation.BluewardStation       = lowerWhiteStation;
            lowerRedStation.OppositeDeckStation   = upperRedStation;
            lowerWhiteStation.RedwardStation      = lowerRedStation;
            lowerWhiteStation.BluewardStation     = lowerBlueStation;
            lowerWhiteStation.OppositeDeckStation = upperWhiteStation;
            lowerBlueStation.RedwardStation       = lowerWhiteStation;
            lowerBlueStation.OppositeDeckStation  = upperBlueStation;

            RedZone = new Zone {
                LowerStation = lowerRedStation, UpperStation = upperRedStation, ZoneLocation = ZoneLocation.Red, Gravolift = new Gravolift()
            };
            WhiteZone = new Zone {
                LowerStation = lowerWhiteStation, UpperStation = upperWhiteStation, ZoneLocation = ZoneLocation.White, Gravolift = new Gravolift()
            };
            BlueZone = new Zone {
                LowerStation = lowerBlueStation, UpperStation = upperBlueStation, ZoneLocation = ZoneLocation.Blue, Gravolift = new Gravolift()
            };
            ZonesByLocation   = new[] { RedZone, WhiteZone, BlueZone }.ToDictionary(zone => zone.ZoneLocation);
            StationByLocation = Zones
                                .SelectMany(zone => new[] { zone.LowerStation, zone.UpperStation })
                                .Concat(new Station[] { interceptorStation })
                                .ToDictionary(station => station.StationLocation);
            InterceptorStation = interceptorStation;
        }