예제 #1
0
        public static void AddCommandoToArmy(string[] args, string id, string firstName, string lastName, decimal salary)
        {
            try
            {
                string corpsC = args[0];

                Commando commando = CommandoFactory.CreateCommando(id, firstName, lastName, salary, corpsC);

                string[] missionArgs = args.Skip(1).ToArray();
                for (int i = 0; i < missionArgs.Length; i += 2)
                {
                    Mission mission;

                    try
                    {
                        string codeName = missionArgs[i];
                        string state    = missionArgs[i + 1];

                        mission = MissionFactory.CreateMission(codeName, state);

                        commando.AddMission(mission);
                    }
                    catch (InvalidStateExceprion ise)
                    {
                        continue;
                    }
                }

                Engine.army.Add(commando);
            }
            catch (InvalidCorpseException ice)
            {
            }
        }
예제 #2
0
    private static void AddCommando(string[] tokens)
    {
        try
        {
            Commando commando = new Commando(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]), tokens[5]);

            for(int i=6; i<tokens.Length; i += 2)
            {
                try
                {
                    Mission mission = new Mission(tokens[i], tokens[i + 1]);
                    commando.AddMission(mission);
                }
                catch(ArgumentException)
                {

                }
            }

            soldiers.Add(commando);
        }
        catch (ArgumentException)
        {

        }
    }
예제 #3
0
        private static void CreateCommando(List <ISoldier> soldiers, List <string> splittedInput, int id, string firstName, string lastName)
        {
            decimal salary = ParseSalary(splittedInput);
            var     corp   = splittedInput[5];

            if (!Enum.IsDefined(typeof(Corps), corp))
            {
                return;
            }

            ICommando commando = new Commando(id, firstName, lastName, salary, (Corps)Enum.Parse(typeof(Corps), corp));

            splittedInput = Skipping(splittedInput, 6);

            for (int i = 0; i < splittedInput.Count; i += 2)
            {
                var codeName = splittedInput[i];
                var state    = splittedInput[i + 1];

                if (!Enum.IsDefined(typeof(MissionStates), state))
                {
                    continue;
                }

                IMission mission = new Mission(codeName, (MissionStates)Enum.Parse(typeof(MissionStates), state));

                commando.AddMission(mission);
            }

            soldiers.Add(commando);
        }
예제 #4
0
        private ISoldier CreateCommando(string[] arguments)
        {
            var id        = int.Parse(arguments[0]);
            var firstName = arguments[1];
            var lastName  = arguments[2];
            var salary    = decimal.Parse(arguments[3]);
            var corps     = arguments[4];

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

            var missions = arguments
                           .Skip(5)
                           .ToList();

            for (int i = 0; i < missions.Count; i += 2)
            {
                try
                {
                    var missionCodeName = missions[i];
                    var missionState    = missions[i + 1];

                    IMission mission = new Mission(missionCodeName, missionState);
                    commando.AddMission(mission);
                }
                catch (InvalidStateException)
                {
                    continue;
                }
            }

            return(commando);
        }
    private static Soldier CreateCommando(int id, string firstName, string lastName, double salary, string corps, string[] cmdArgs)
    {
        Commando commando = null;

        try
        {
            commando = new Commando(id, firstName, lastName, salary, corps);
        }
        catch (ArgumentException)
        {
            return(null);
        }

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

                string state = cmdArgs[i + 1];

                commando.AddMission(new Mission(codeName, state));
            }
            catch (Exception)
            {
                continue;
            }
        }

        return(commando);
    }
예제 #6
0
        private static ICommando CreateComando(string[] cmdArg, int id, string firstName, string lastName, decimal salary, string corps)
        {
            ICommando commando = new Commando(firstName, lastName, id, salary, corps);

            string[] missions = cmdArg.Skip(6).ToArray();

            for (int i = 0; i < missions.Length; i += 2)
            {
                try
                {
                    string codeName = missions[i];
                    string state    = missions[i + 1];

                    IMission mission = new Mission(codeName, state);

                    commando.AddMission(mission);
                }
                catch (InvalidMissionStateException)
                {
                    continue;
                }
            }

            return(commando);
        }
예제 #7
0
        private ISoldier GetCommandoType(int id, string firstName, string lastName, decimal salary, string[] newArgs)
        {
            ICommando commando = null;

            Corp corp;
            bool isCastToCorp = Enum.TryParse <Corp>(newArgs[0], out corp);

            if (isCastToCorp)
            {
                commando = new Commando(id, firstName, lastName, salary, corp);
                string codeName;
                string state;

                for (int i = 1; i < newArgs.Length; i += 2)
                {
                    codeName = newArgs[i];
                    state    = newArgs[i + 1];

                    //“Commando <id> <firstName> <lastName> <salary> <corps>
                    //<mission1CodeName>  <mission1state> … <missionNCodeName> <missionNstate>”
                    //a missions cde name, description and state will always come together
                    //bool validMissionName = Enum.TryParse<State>(missionName, out newMission.State)
                    if (Enum.TryParse <State>(state, out State newState))
                    {
                        IMission validMissionName = new Mission(codeName, newState);
                        commando.AddMission(validMissionName);
                    }
                }
            }

            return(commando);
        }
        public ICommando CreateCommando(string[] args)
        {
            string  id        = args[1];
            string  firstName = args[2];
            string  lastName  = args[3];
            decimal salary    = decimal.Parse(args[4]);
            string  corpsStr  = args[5];

            string[]  missionInfo = args.Skip(6).ToArray();
            ICommando commando    = new Commando(id, firstName, lastName, salary, corpsStr);

            if (missionInfo.Length != 0)
            {
                for (int i = 0; i < missionInfo.Length; i += 2)
                {
                    string codeName = missionInfo[i];
                    string status   = missionInfo[i + 1];
                    try
                    {
                        Mission mission = new Mission(codeName, status);
                        commando.AddMission(mission);
                    }
                    catch (Exception)
                    {
                    }
                }
            }

            return(commando);
        }
예제 #9
0
        private static ICommando GetCommando(string[] command, int id, string firstName, string lastName, decimal salary, string corps)
        {
            ICommando commando = new Commando(id, firstName, lastName, salary, corps);

            string[] missionArgs = command.Skip(6).ToArray();

            for (int i = 0; i < missionArgs.Length; i += 2)
            {
                try
                {
                    string missionCodeName = missionArgs[i];
                    string missionState    = missionArgs[1];

                    IMission mission = new Mission(missionCodeName, missionState);

                    commando.AddMission(mission);
                }
                catch (InvalidMissionCompletionException imce)
                {
                    continue;
                }
            }

            return(commando);
        }
        private static ISoldier CreateCommando(string[] arguments, int id, string firstName, string lastName, decimal salary, string corps)
        {
            ISoldier soldier;
            Commando commando = new Commando(id, firstName, lastName, salary, corps);

            string[] missionArguments = arguments.Skip(6).ToArray();

            for (int i = 0; i < missionArguments.Length; i += 2)
            {
                try
                {
                    string  codeName     = missionArguments[i];
                    string  state        = missionArguments[i + 1];
                    Mission missionToAdd = new Mission(codeName, state);
                    commando.AddMission(missionToAdd);
                }
                catch
                {
                    continue;
                }
            }

            soldier = commando;
            return(soldier);
        }
예제 #11
0
        private ICommando CreateCommando(string[] commandArgs, int id, string firstName, string lastName, decimal salary)
        {
            string    corps    = commandArgs[5];
            ICommando commando = new Commando(id, firstName, lastName, salary, corps);

            string[] missionsArgs = commandArgs
                                    .Skip(6)
                                    .ToArray();

            for (int i = 0; i < missionsArgs.Length; i += 2)
            {
                string codeName = missionsArgs[i];
                string state    = missionsArgs[i + 1];

                try
                {
                    IMission mission = new Mission(codeName, state);
                    commando.AddMission(mission);
                }
                catch (InvalidMissionException ime)
                {
                    continue;
                }
            }

            return(commando);
        }
예제 #12
0
 private static void AddMissions(string[] tokens, Commando commando)
 {
     for (int i = 6; i < tokens.Length; i += 2)
     {
         var missionCodeName = tokens[i];
         var missionState    = tokens[i + 1];
         var mission         = new Mission(missionCodeName, missionState);
         commando.AddMission(mission);
     }
 }
예제 #13
0
    private static void AddMissions(string[] inputParams, Commando commando, int i)
    {
        try
        {
            Mission mission = new Mission(inputParams[6 + (i * 2)], inputParams[7 + (i * 2)]);

            commando.AddMission(mission);
        }
        catch (ArgumentException e)
        {
        }
    }
 private static void AddValidMissions(string[] tokens, Commando commando)
 {
     for (int i = 6; i < tokens.Length; i += 2)
     {
         string        codeName      = tokens[i];
         string        missionState  = tokens[i + 1];
         MissionStatus missionStatus = MissionStatus.invalid;
         missionStatus = ValidateMission(missionState, missionStatus);
         if (!(missionStatus == MissionStatus.invalid))
         {
             Mission mission = new Mission(codeName, missionStatus);
             commando.AddMission(mission);
         }
     }
 }
예제 #15
0
 private static void GetMissions(string[] tokens, Commando commando)
 {
     for (int i = 6; i < tokens.Length; i++)
     {
         var codeName     = tokens[i];
         var missionState = tokens[++i];
         try
         {
             IMission mission = new Mission(codeName, missionState);
             commando.AddMission(mission);
         }
         catch (Exception)
         {
         }
     }
 }
예제 #16
0
        private static void GetAllMission(string[] cmdArg, Commando commando)
        {
            for (int i = 0; i < cmdArg.Length; i += 2)
            {
                var codeName = cmdArg[i];
                var state    = cmdArg[i + 1];

                try
                {
                    var mission = new Mission(codeName, state);
                    commando.AddMission(mission);
                }
                catch (Exception)
                {
                    continue;
                }
            }
        }
예제 #17
0
        private void AddMission(Commando commando, string[] missionArgs)
        {
            for (int i = 0; i < missionArgs.Length; i += 2)
            {
                try
                {
                    string name  = missionArgs[i];
                    string state = missionArgs[i + 1];

                    IMission mission = this.missionFactory.MakeMission(name, state);
                    commando.AddMission(mission);
                }
                catch (InvalidStateException)
                {
                    continue;
                }
            }
        }
예제 #18
0
        private ISoldier GetCommando(string id, string firstName, string lastName, decimal salary,
                                     Corps corps, string[] missons)
        {
            Commando commando = new Commando(id, firstName, lastName, salary, corps);

            for (int i = 0; i < missons.Length; i += 2)
            {
                if (!Enum.TryParse(missons[i + 1], out State state))
                {
                    continue;
                }

                IMission mission = new Mission(missons[i], state);

                commando.AddMission(mission);
            }

            return(commando);
        }
        private ICommando CreateCommando(string[] args, int iD, string firstName, string lastName, decimal salary, string corps)
        {
            ICommando commando = new Commando(iD, firstName, lastName, salary, corps);

            string[] missionArgs = args.Skip(6).ToArray();
            for (int i = 0; i < missionArgs.Length; i += 2)
            {
                try
                {
                    IMission mission = new Mission(missionArgs[i], missionArgs[i + 1]);
                    commando.AddMission(mission);
                }
                catch (InvalidStatusException)
                {
                    continue;
                }
            }

            return(commando);
        }
예제 #20
0
    private static ISoldier TryToCreateCommando(string[] soldierInfo, string id, string firstName, string lastName)
    {
        var salary          = decimal.Parse(soldierInfo[4]);
        var corps           = soldierInfo[5];
        var currentCommando = new Commando(id, firstName, lastName, salary, new Corps(corps));

        var missionsInfo = soldierInfo.Skip(6).ToList();

        for (int i = 0; i < missionsInfo.Count; i += 2)
        {
            var missionCodeName = missionsInfo[i];
            var missionState    = missionsInfo[i + 1];
            try
            {
                currentCommando.AddMission(new Mission(missionCodeName, missionState));
            }
            catch (ArgumentException) { }
        }

        return(currentCommando);
    }
예제 #21
0
 private static void ParseCommando(List <Soldier> soldiers, string[] tokens)
 {
     try
     {
         soldiers.Add(new Commando(tokens[1], tokens[2], tokens[3], decimal.Parse(tokens[4]), tokens[5]));
         tokens = tokens.Skip(6).ToArray();
         Commando commando = (Commando)soldiers.Last();
         for (int i = 0; i < tokens.Length; i += 2)
         {
             try
             {
                 commando.AddMission(new Mission(tokens[i], tokens[i + 1]));
             }
             catch (ArgumentException ex)
             {
             }
         }
     }
     catch (ArgumentException ex)
     {
     }
 }
        private static void CreateCommando(string[] input)
        {
            int      id        = int.Parse(input[1]);
            string   firstName = input[2];
            string   lastName  = input[3];
            decimal  salary    = decimal.Parse(input[4]);
            string   corps     = input[5];
            Commando commando  = new Commando(id, firstName, lastName, salary, corps);

            soldiers.Add(commando);
            for (int i = 6; i < input.Length; i += 2)
            {
                string codeName = input[i];
                string state    = input[i + 1];
                try
                {
                    Mission mission = new Mission(codeName, state);
                    commando.AddMission(mission);
                }
                catch (Exception)
                {
                }
            }
        }
예제 #23
0
        public void AddCommando(int id, string firstName, string lastName, decimal salary, string corps, params string[] missions)
        {
            var commando = new Commando(id, firstName, lastName, salary, corps);

            if (missions.Length > 0)
            {
                for (int i = 0; i < missions.Length; i += 2)
                {
                    try
                    {
                        string codeName = missions[i];
                        string state    = missions[i + 1];

                        commando.AddMission(codeName, state);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            }

            this.soldiers.Add(commando);
        }
예제 #24
0
        public ISoldier CreateSoldier(string[] soldierStrings)
        {
            var soldierType = soldierStrings[0];
            var id          = int.Parse(soldierStrings[1]);
            var firstName   = soldierStrings[2];
            var lastName    = soldierStrings[3];

            switch (soldierType)
            {
            case "Private":
                var privateSalary = double.Parse(soldierStrings[4]);
                return(new Private(id, firstName, lastName, privateSalary));

            case "LeutenantGeneral":
                var ltSalary  = double.Parse(soldierStrings[4]);
                var currentLt = new LeutenantGeneral(id, firstName, lastName, ltSalary);

                for (int i = 5; i < soldierStrings.Length; i++)
                {
                    var privateId = int.Parse(soldierStrings[i]);
                    if (DataManager.SoldierExists(privateId))
                    {
                        currentLt.AddPrivate(DataManager.ReturnPrivateSoldier(privateId));
                    }
                }

                return(currentLt);

            case "Engineer":
                var engineerSalary  = double.Parse(soldierStrings[4]);
                var corps           = soldierStrings[5];
                var currentEngineer = new Engineer(id, firstName, lastName, engineerSalary, corps);

                for (int i = 6; i < soldierStrings.Length; i += 2)
                {
                    var part   = soldierStrings[i];
                    var hours  = int.Parse(soldierStrings[i + 1]);
                    var repair = new Repair(part, hours);
                    currentEngineer.AddRepair(repair);
                }

                return(currentEngineer);

            case "Commando":
                var commandoSalary  = double.Parse(soldierStrings[4]);
                var commandoCorps   = soldierStrings[5];
                var currentCommando = new Commando(id, firstName, lastName, commandoSalary, commandoCorps);

                for (int i = 6; i < soldierStrings.Length; i += 2)
                {
                    try
                    {
                        var codeName = soldierStrings[i];
                        var state    = soldierStrings[i + 1];
                        var mission  = new Mission(codeName, state);
                        currentCommando.AddMission(mission);
                    }
                    catch (Exception e)
                    {
                    }
                }

                return(currentCommando);

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

            default:
                return(null);
            }
        }
예제 #25
0
    static void Main(string[] args)
    {
        var    soldiers = new List <ISoldier>();
        string input;

        while ((input = Console.ReadLine()) != "End")
        {
            string[] tokens      = input.Split();
            string   soldierType = tokens[0];
            int      id          = int.Parse(tokens[1]);
            string   firstName   = tokens[2];
            string   lastName    = tokens[3];
            decimal  salary      = decimal.Parse(tokens[4]);

            ISoldier soldier = null;
            try
            {
                switch (soldierType)
                {
                case "Private":
                    soldier = new Private(id, firstName, lastName, salary);
                    break;

                case "LeutenantGeneral":
                    var leutenant = new LeutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < tokens.Length; i++)
                    {
                        int      soldierId = int.Parse(tokens[i]);
                        ISoldier @private  = soldiers.First(p => p.Id == soldierId);
                        leutenant.AddPrivate(@private);
                    }
                    soldier = leutenant;
                    break;

                case "Engineer":
                    string   engineerCorps = tokens[5];
                    Engineer engineer      = new Engineer(id, firstName, lastName, salary, engineerCorps);

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

                        IRepair repair = new Repair(partName, hoursWorked);
                        engineer.AddRepair(repair);
                    }

                    soldier = engineer;
                    break;

                case "Commando":
                    string commandCorps = tokens[5];
                    var    commando     = new Commando(id, firstName, lastName, salary, commandCorps);
                    for (int i = 6; i < tokens.Length; i++)
                    {
                        string codeName     = tokens[i];
                        string missionState = tokens[++i];
                        try
                        {
                            IMission mission = new Mission(codeName, missionState);
                            commando.AddMission(mission);
                        }
                        catch { }
                    }

                    soldier = commando;
                    break;

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

                default:
                    throw new ArgumentException("Invalid soldier type!");
                }
                soldiers.Add(soldier);
            }
            catch {}
        }

        foreach (var soldier in soldiers)
        {
            Console.WriteLine(soldier);
        }
    }
예제 #26
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 privateToAdd = new Private(id, firstName, lastName, salary);

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

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

                    foreach (string privateId in ids)
                    {
                        ISoldier currentPrivate = this.army.First(p => p.Id == privateId);

                        lieutenantGeneralToAdd.AddPrivate(currentPrivate);
                    }

                    this.army.Add(lieutenantGeneralToAdd);
                }
                else if (type == "Engineer")
                {
                    string corps = commandArgs[5];
                    try
                    {
                        Engineer engineerToAdd = new Engineer(id, firstName, lastName, salary, corps);

                        string[] repairs = commandArgs
                                           .Skip(6)
                                           .ToArray();

                        for (int i = 0; i < repairs.Length; i += 2)
                        {
                            string repairPart  = repairs[i];
                            int    repairHours = int.Parse(repairs[i + 1]);

                            Repair repair = new Repair(repairPart, repairHours);
                            engineerToAdd.AddRepair(repair);
                        }

                        this.army.Add(engineerToAdd);
                    }
                    catch (ArgumentException ae)
                    {
                    }
                }
                else if (type == "Commando")
                {
                    string corps = commandArgs[5];

                    try
                    {
                        Commando commandoToAdd = new Commando(id, firstName, lastName, salary, corps);

                        string[] missions = commandArgs
                                            .Skip(6)
                                            .ToArray();

                        for (int i = 0; i < missions.Length; i += 2)
                        {
                            string missionCodeName = missions[i];
                            string missionState    = missions[i + 1];

                            try
                            {
                                Mission mission = new Mission(missionCodeName, missionState);
                                commandoToAdd.AddMission(mission);
                            }
                            catch (ArgumentException ae)
                            {
                            }
                        }

                        this.army.Add(commandoToAdd);
                    }
                    catch (ArgumentException ae)
                    {
                    }
                }
                else if (type == "Spy")
                {
                    int codeNumber = (int)salary;

                    Spy spyToAdd = new Spy(id, firstName, lastName, codeNumber);

                    this.army.Add(spyToAdd);
                }

                command = Console.ReadLine();
            }

            foreach (var soldier in this.army)
            {
                //Type type = soldier.GetType();

                //Object obj = Convert.ChangeType(soldier, type);

                Console.WriteLine(soldier.ToString());
            }
        }
예제 #27
0
        public static void Main()
        {
            IList <ISoldier> army;

            string input;

            army = new List <ISoldier>();

            while ((input = Console.ReadLine()) != "End")
            {
                var    args = input.Split();
                string type = args[0];
                string id   = args[1];

                switch (type)
                {
                case "Private":
                    army.Add(new Private(id, args[2], args[3], double.Parse(args[4])));
                    break;

                case "Spy":
                    army.Add(new Spy(id, args[2], args[3], int.Parse(args[4])));
                    break;

                case "LeutenantGeneral":
                    LeutenantGeneral leutenantGeneral = new LeutenantGeneral(id, args[2], args[3], double.Parse(args[4]));

                    for (int i = 5; i < args.Length; i++)
                    {
                        leutenantGeneral.AddPrivate(army.First(s => s.Id == args[i]));
                    }

                    army.Add(leutenantGeneral);
                    break;

                case "Commando":
                    Commando commando;

                    try
                    {
                        commando = new Commando(id, args[2], args[3], double.Parse(args[4]), args[5]);
                    }
                    catch (Exception)
                    {
                        break;
                    }

                    for (int i = 6; i < args.Length - 1; i += 2)
                    {
                        Mission mission;
                        try
                        {
                            mission = new Mission(args[i], args[i + 1]);
                        }
                        catch (Exception)
                        {
                            continue;
                        }
                        commando.AddMission(mission);
                    }

                    army.Add(commando);
                    break;

                case "Engineer":
                    Engineer engineer;
                    try
                    {
                        engineer = new Engineer(id, args[2], args[3], double.Parse(args[4]), args[5]);
                    }
                    catch (Exception)
                    {
                        break;
                    }

                    for (int i = 6; i < args.Length - 1; i += 2)
                    {
                        engineer.AddRepair(new Repair(args[i], int.Parse(args[i + 1])));
                    }

                    army.Add(engineer);
                    break;
                }
            }

            foreach (var soldier in army)
            {
                Console.WriteLine(soldier);
            }
        }
    public static ISoldier CreateSoldier(string input)
    {
        string[] token = input.Split();

        var soldierType       = token[0];
        var soldierId         = int.Parse(token[1]);
        var soldierFirstName  = token[2];
        var soldierSecondName = token[3];

        switch (soldierType)
        {
        case "Private":
            Private priv = new Private(soldierId, soldierFirstName, soldierSecondName, double.Parse(token[4]));
            Privates.Add(soldierId, priv);
            return(priv);

        case "LeutenantGeneral":
            LeutenantGeneral leutenant = new LeutenantGeneral(
                soldierId,
                soldierFirstName,
                soldierSecondName,
                double.Parse(token[4]));
            for (int i = 5; i < token.Length; i++)
            {
                int      searchedID = int.Parse(token[i]);
                IPrivate p          = Privates[searchedID];
                leutenant.AddPrivate(p);
            }

            Privates.Add(soldierId, leutenant);
            return(leutenant);

        case "Engineer":
            Engineer engineer = new Engineer(
                soldierId,
                soldierFirstName,
                soldierSecondName,
                double.Parse(token[4]),
                token[5]);
            for (int i = 6; i < token.Length; i += 2)
            {
                IRepair r = new Repair(token[i], int.Parse(token[i + 1]));
                engineer.AddRepair(r);
            }
            Privates.Add(soldierId, engineer);
            return(engineer);

        case "Commando":
            Commando commando = new Commando(
                soldierId,
                soldierFirstName,
                soldierSecondName,
                double.Parse(token[4]),
                token[5]);
            for (int i = 6; i < token.Length; i += 2)
            {
                var missionName  = token[i];
                var missionState = token[i + 1];
                try
                {
                    Mission m = new Mission(missionName, missionState);
                    commando.AddMission(m);
                }
                catch (Exception)
                {
                }
            }
            Privates.Add(soldierId, commando);
            return(commando);

        case "Spy":
            int soldeirCodeNumber = int.Parse(token[4]);
            Spy spy = new Spy(soldierId, soldierFirstName, soldierSecondName, soldeirCodeNumber);
            return(spy);

        default: return(null);
        }
    }
예제 #29
0
        public void Run()
        {
            string input;

            while ((input = Console.ReadLine()) != "End")
            {
                String[] commands = input.Split();
                string   command  = commands[0];

                if (command == "Private")
                {
                    int     id        = int.Parse(commands[1]);
                    string  firstName = commands[2];
                    string  lastName  = commands[3];
                    decimal salary    = decimal.Parse(commands[4]);
                    Private soldier   = new Private(id, firstName, lastName, salary);
                    this.soldiers.Add(soldier);
                }
                else if (command == "LieutenantGeneral")
                {
                    int               id        = int.Parse(commands[1]);
                    string            firstName = commands[2];
                    string            lastName  = commands[3];
                    decimal           salary    = decimal.Parse(commands[4]);
                    LieutenantGeneral general   = new LieutenantGeneral(id, firstName, lastName, salary);
                    foreach (string privateId in commands.Skip(5))
                    {
                        IPrivate getId = (IPrivate)this.soldiers.SingleOrDefault(i => i.Id == int.Parse(privateId));
                        if (getId != null)
                        {
                            general.AddPrivate(getId);
                        }
                    }
                    this.soldiers.Add(general);
                }
                else if (command == "Engineer")
                {
                    int     id        = int.Parse(commands[1]);
                    string  firstName = commands[2];
                    string  lastName  = commands[3];
                    decimal salary    = decimal.Parse(commands[4]);
                    if (Enum.TryParse <Corps>(commands[5], out Corps corps))
                    {
                        Engineer enginner    = new Engineer(id, firstName, lastName, salary, corps);
                        string[] repairParts = commands.Skip(6).ToArray();
                        for (int i = 0; i < repairParts.Length; i += 2)
                        {
                            string repairPart = repairParts[i];
                            int    repairHour = int.Parse(repairParts[i + 1]);
                            Repair repair     = new Repair(repairPart, repairHour);
                            enginner.AddRepair(repair);
                        }

                        this.soldiers.Add(enginner);
                    }
                }

                else if (command == "Commando")
                {
                    int     id        = int.Parse(commands[1]);
                    string  firstName = commands[2];
                    string  lastName  = commands[3];
                    decimal salary    = decimal.Parse(commands[4]);
                    if (Enum.TryParse <Corps>(commands[5], out Corps corps))
                    {
                        Commando soldier  = new Commando(id, firstName, lastName, salary, corps);
                        string[] missions = commands.Skip(6).ToArray();
                        for (int i = 0; i < missions.Length; i += 2)
                        {
                            string missionName  = missions[i];
                            string missionState = missions[i + 1];
                            if (Enum.TryParse(missionState, out State state))
                            {
                                Mission mission = new Mission(missionName, state);
                                soldier.AddMission(mission);
                            }
                        }

                        this.soldiers.Add(soldier);
                    }
                }
                else if (command == "Spy")
                {
                    int    id         = int.Parse(commands[1]);
                    string firstName  = commands[2];
                    string lastName   = commands[3];
                    int    codeNumber = int.Parse(commands[4]);
                    Spy    soldier    = new Spy(id, firstName, lastName, codeNumber);
                    this.soldiers.Add(soldier);
                }
            }

            print();
        }
예제 #30
0
        public void Run()
        {
            string command = Console.ReadLine();

            while (command != "End")
            {
                string[] commandArgs = command.Split().ToArray();

                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[] privatesToAddArgs = commandArgs.Skip(5).ToArray();

                    foreach (var pid in privatesToAddArgs)
                    {
                        ISoldier soldierToAdd = this.army.First(s => s.Id == pid);

                        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 (InvalidCorpsException ice)
                    {
                    }
                }
                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];

                                IMission mission = new MIssion(codeName, state);

                                commando.AddMission(mission);
                            }
                            catch (InvalidStateException ise)
                            {
                                continue;
                            }
                        }

                        this.army.Add(commando);
                    }
                    catch (InvalidCorpsException ice)
                    {
                    }
                }
                else if (type == "Spy")
                {
                    int codeNumber = (int)salary;

                    ISpy spy = new Spy(id, firstName, lastName, codeNumber);

                    this.army.Add(spy);
                }

                command = Console.ReadLine();
            }

            PrintOutput();
        }