Пример #1
0
        public static ISoldier ProduceSoldier(string input)
        {
            var command   = input.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            var solder    = command[0];
            var id        = int.Parse(command[1]);
            var firstName = command[2];
            var lastName  = command[3];

            switch (solder)
            {
            case "Private":
                var     salary      = double.Parse(command[4]);
                Private soldPrivate = new Private(id, firstName, lastName, salary);
                lstPrivate.Add(soldPrivate);
                return(soldPrivate);

                break;

            case "LeutenantGeneral":
                var salaryGeneral         = double.Parse(command[4]);
                LeutenantGeneral LGeneral = new LeutenantGeneral(id, firstName, lastName, salaryGeneral);
                try
                {
                    for (int i = 5; i < command.Length; i++)
                    {
                        int idPrivate   = int.Parse(command[i]);
                        var currPrivate = lstPrivate.First(x => x.Id == idPrivate);
                        if (currPrivate != null)
                        {
                            LGeneral.Privates.Add(currPrivate);
                        }
                    }
                }
                catch (Exception)
                {
                }
                lstPrivate.Add(LGeneral);
                return(LGeneral);

                break;

            case "Engineer":
                var      engSalary = double.Parse(command[4]);
                var      engCorp   = command[5];
                Engineer Engineer  = new Engineer(id, firstName, lastName, engSalary, engCorp);

                List <IRepair> repairs = new List <IRepair>();
                for (int i = 6; i < command.Length - 1; i += 2)
                {
                    string partName  = command[i];
                    int    workHours = int.Parse(command[i + 1]);
                    Engineer.AddRepair(new Repair(partName, workHours));
                }
                lstPrivate.Add(Engineer);
                return(Engineer);

                break;

            case "Commando":
                var commandoSalary = double.Parse(command[4]);
                var commandoCopr   = command[5];

                Commando        Commando = new Commando(id, firstName, lastName, commandoSalary, commandoCopr);
                List <IMission> Missions = new List <IMission>();
                for (int i = 6; i < command.Length - 1; i += 2)
                {
                    string codeName = command[i];
                    string state    = command[i + 1];
                    try
                    {
                        Commando.AddMisions(new Mission(codeName, state));
                    }
                    catch (Exception)
                    {
                    }
                }
                lstPrivate.Add(Commando);
                return(Commando);

                break;

            case "Spy":
                int codeNumber = int.Parse(command[3]);
                Spy Spy        = new Spy(id, firstName, lastName, codeNumber);
                return(Spy);

                break;

            default: return(null);
            }
        }