예제 #1
0
 public Engine()
 {
     this.army                     = new List <ISoldier>();
     this.commandoFactory          = new CommandoFactory();
     this.engineerFactory          = new EngineerFactory();
     this.lieutenantGeneralFactory = new LieutenantGeneralFactory();
     this.missionFactory           = new MissionFactory();
     this.privateFactory           = new PrivateFactory();
     this.repairFactory            = new RepairFactory();
     this.spyFactory               = new SpyFactory();
 }
예제 #2
0
        private static void Execute(string command)
        {
            var     arr  = command.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            var     type = arr[0];
            Soldier currentSoldier;

            arr = arr.Skip(1).ToArray();

            switch (type)
            {
            case "Private":
                currentSoldier = PrivateFactory.CreatePrivate(arr);
                break;

            case "LieutenantGeneral":
                currentSoldier = LieutenantGeneralFactory.CreateLieutenantGeneral(arr, soldiers);
                break;

            case "Engineer":
                try
                {
                    currentSoldier = EngineerFactory.CreateEmgeneer(arr);
                }
                catch (ArgumentException)
                {
                    return;
                }
                break;

            case "Commando":
                currentSoldier = CommandoFactory.CreateCommando(arr);
                break;

            case "Spy":
                currentSoldier = SpyFactory.CreateSpy(arr);
                break;

            default:
                throw new ArgumentException();
            }

            soldiers.Add(currentSoldier);
        }