Exemple #1
0
        public static ISoldier GetSoldier(string[] args, List <ISoldier> soldiers)
        {
            string  type      = args[0];
            int     id        = int.Parse(args[1]);
            string  firstName = args[2];
            string  lastName  = args[3];
            decimal salary    = decimal.Parse(args[4]);

            switch (type)
            {
            case "Private":
                return(new Private(id, firstName, lastName, salary));

            case "Spy":
                int codeNumber = (int)salary;
                return(new Spy(id, firstName, lastName, codeNumber));

            case "LieutenantGeneral":
                var tempSoldier = new LieutenantGeneral(id, firstName, lastName, salary);
                tempSoldier.AddPrivates(args, soldiers);
                return(tempSoldier);

            case "Engineer":
                var tempEngineer = new Engineer(id, firstName, lastName, salary, args[5]);
                tempEngineer.Add(args);
                return(tempEngineer);

            case "Commando":
                var tempCommando = new Commando(id, firstName, lastName, salary, args[5]);
                tempCommando.Add(args);
                return(tempCommando);

            default:
                throw new ArgumentException("Invalid input");
            }
        }
Exemple #2
0
        public void Run()
        {
            string command = Console.ReadLine();

            while (command != "End")
            {
                string[] commandArgs = command
                                       .Split(" ");
                string  type      = commandArgs[0];
                string  id        = commandArgs[1];
                string  firstName = commandArgs[2];
                string  lastName  = commandArgs[3];
                decimal salary    = decimal.Parse(commandArgs[4]);


                if (type == "Private")
                {
                    Private soldier = new Private(id, firstName, lastName, salary);
                    this.army.Add(soldier);
                }
                else if (type == "LieutenantGeneral")
                {
                    LieutenantGeneral general = new LieutenantGeneral(id, firstName, lastName, salary);

                    string[] privatesToAddArg = commandArgs
                                                .Skip(5)
                                                .ToArray();

                    foreach (var privateId in privatesToAddArg)
                    {
                        ISoldier soldierToAdd = this.army
                                                .First(sol => sol.Id == privateId);
                        general.AddPrivate(soldierToAdd);
                    }
                    this.army.Add(general);
                }
                else if (type == "Engineer")
                {
                    try
                    {
                        string    corps      = commandArgs[5];
                        IEngineer engineer   = new Engineer(id, firstName, lastName, salary, corps);
                        string[]  repairArgs = commandArgs
                                               .Skip(6)
                                               .ToArray();
                        AddRepairs(engineer, repairArgs);
                        this.army.Add(engineer);
                    }
                    catch (InvalidCorpException ex)
                    {
                    }
                }
                else if (type == "Commando")
                {
                    try
                    {
                        string    corps       = commandArgs[5];
                        ICommando commando    = new Commando(id, firstName, lastName, salary, corps);
                        string[]  missionArgs = commandArgs
                                                .Skip(6)
                                                .ToArray();
                        for (int i = 0; i < missionArgs.Length; i += 2)
                        {
                            try
                            {
                                string    codeName = missionArgs[i];
                                string    state    = missionArgs[i + 1];
                                IMissions mission  = new Mission(codeName, state);
                                commando.Add(mission);
                            }
                            catch (InvalidStateException ex)
                            {
                                continue;
                            }
                        }
                        this.army.Add(commando);
                    }
                    catch (InvalidCorpException ex)
                    {
                    }
                }
                else if (type == "Spy")
                {
                    int  codeNumber = (int)salary;
                    ISpy spy        = new Spy(id, firstName, lastName, codeNumber);
                    this.army.Add(spy);
                }
                command = Console.ReadLine();
            }
            PrintOutput();
        }