Пример #1
0
        public void Run()
        {
            ICollection <ISolder> solders = new List <ISolder>();
            ISolder solder = null;

            string command;

            while ((command = Console.ReadLine()) != "End")
            {
                string[] cmdArgs = command.Split();

                string type      = cmdArgs[0];
                string id        = cmdArgs[1];
                string firstName = cmdArgs[2];
                string lastName  = cmdArgs[3];

                if (type == "Private")
                {
                    decimal salary = decimal.Parse(cmdArgs[4]);
                    solder = new Private(id, firstName, lastName, salary);
                }
                else if (type == "LieutenantGeneral")
                {
                    decimal salary = decimal.Parse(cmdArgs[4]);

                    ILieutenantGeneral currentLieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < cmdArgs.Length; i++)
                    {
                        var currentPrivate = (IPrivate)solders.FirstOrDefault(x => x.Id == cmdArgs[i]);
                        currentLieutenantGeneral.Privates.Add(currentPrivate);
                    }
                    solder = currentLieutenantGeneral;
                }
                else if (type == "Engineer")
                {
                    decimal salary        = decimal.Parse(cmdArgs[4]);
                    string  corpsAsString = cmdArgs[5];

                    if (!Enum.TryParse(corpsAsString, out Corps corps))
                    {
                        continue;
                    }

                    IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < cmdArgs.Length; i += 2)
                    {
                        string partName    = cmdArgs[i];
                        int    hoursWorked = int.Parse(cmdArgs[i + 1]);

                        IRepair repair = new Repair(partName, hoursWorked);

                        engineer.Repairs.Add(repair);
                    }

                    solder = engineer;
                }
                else if (type == "Commando")
                {
                    decimal salary        = decimal.Parse(cmdArgs[4]);
                    string  corpsAsString = cmdArgs[5];

                    if (!Enum.TryParse(corpsAsString, out Corps corps))
                    {
                        continue;
                    }

                    ICommando commando = new Commando(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < cmdArgs.Length; i += 2)
                    {
                        string codeName      = cmdArgs[i];
                        string stateAsString = cmdArgs[i + 1];

                        if (!Enum.TryParse(stateAsString, out State state))
                        {
                            continue;
                        }

                        IMission mission = new Mission(codeName, state);

                        commando.Missions.Add(mission);
                    }
                    solder = commando;
                }
                else if (type == "Spy")
                {
                    int  codeNumber = int.Parse(cmdArgs[4]);
                    ISpy spy        = new Spy(id, firstName, lastName, codeNumber);
                    solder = spy;
                }

                if (solder != null)
                {
                    solders.Add(solder);
                }
            }

            foreach (var soldier in solders)
            {
                Console.WriteLine(soldier);
            }
        }
Пример #2
0
 public void addSolder(ISolder s)
 {
     solders.Add(s);
 }