Exemple #1
0
        public Spaceship CreateSpaceship(string name, SpaceshipType type)
        {
            ISpaceshipBuilder builder = new SpaceshipBuilder(name);

            switch (type)
            {
            case SpaceshipType.Combat:
                builder.BuildFuselage(Fuselage.SemiMonocoque);
                builder.BuildEngines(Engines.Photonic);
                builder.BuildAvionics(Avionics.Rockwell);
                builder.BuildWeaponry(Weaponry.Missile);
                builder.BuildType(SpaceshipType.Combat);
                return(builder.BuildSpaceship());

            case SpaceshipType.Defense:
                builder.BuildFuselage(Fuselage.Monocoque);
                builder.BuildEngines(Engines.Quantum);
                builder.BuildAvionics(Avionics.Bendix);
                builder.BuildWeaponry(Weaponry.Kinetic);
                builder.BuildType(SpaceshipType.Defense);
                return(builder.BuildSpaceship());

            case SpaceshipType.Transport:
                builder.BuildFuselage(Fuselage.Framework);
                builder.BuildEngines(Engines.FTL);
                builder.BuildAvionics(Avionics.Proline);
                builder.BuildWeaponry(Weaponry.Beam);
                builder.BuildType(SpaceshipType.Transport);
                return(builder.BuildSpaceship());
            }
            return(null);
        }
        static void Main(string[] args)
        {
            try
            {
                //if the '_' in the miles and the currency in the document is not just for formatting then we will
                //go thru every element in the string and then select all that are not '_' and try to parse them
                //Example: milesTraveled.Select(x=>x!='_').ToString()

                IBuilder       spaceshipBuilder = new SpaceshipBuilder();
                var            spaceship        = (Spaceship)spaceshipBuilder.Build();
                ITaxCalculator spaceshipTax     = new SpaceshipTax(spaceship);


                //really don't like the validation here but for now i don't have any clue where to put it :\
                Console.WriteLine("Year of tax calculation: ");
                if (!int.TryParse(Console.ReadLine(), out var yearOfTaxCalc))
                {
                    throw new ArgumentException("Invalid type!");
                }
                if (yearOfTaxCalc < spaceship.YearOfPurchase)
                {
                    throw new ArgumentException("It can only calculate present taxes :|");
                }

                decimal taxes = spaceshipTax.Calculate(yearOfTaxCalc);

                Console.WriteLine($"You have to pay {taxes:f2} DVS to the Big Sister.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Exemple #3
0
        private static List <Spaceship> GetArmada()
        {
            var ships = new List <Spaceship>();

            var shipBuilder = new SpaceshipBuilder();
            var shipYard    = new ShipYard(shipBuilder);

            shipYard.BuildStartedShip();
            ships.Add(shipBuilder.GetShip());

            shipYard.BuildAttackCruiser();
            ships.Add(shipBuilder.GetShip());

            shipYard.BuildBattleship();
            ships.Add(shipBuilder.GetShip());

            shipYard.BuildMiner();
            ships.Add(shipBuilder.GetShip());

            shipYard.BuildFriendShip();
            ships.Add(shipBuilder.GetShip());

            return(ships);
        }