Ejemplo n.º 1
0
 private void ParseSoldierCommand(List <string> tokens)
 {
     if (tokens[0] == RegenerateCommandConst)
     {
         string soldierType = tokens[1];
         foreach (var soldier in this.army.Soldiers.Where(x => x.GetType().Name == soldierType))
         {
             soldier.Regenerate();
         }
     }
     else
     {
         string type       = tokens[0];
         string name       = tokens[1];
         int    age        = int.Parse(tokens[2]);
         double experience = double.Parse(tokens[3]);
         double endurance  = double.Parse(tokens[4]);
         var    soldier    = soldierFactory.CreateSoldier(type, name, age, experience, endurance);
         bool   result     = this.wareHouse.TryEquipSoldier(soldier);
         if (result == false)
         {
             this.writer.StoreMessage(string.Format(OutputMessages.NoWeaponForSoldier, soldier.GetType().Name, soldier.Name));
         }
         else
         {
             this.army.AddSoldier(soldier);
         }
     }
 }
Ejemplo n.º 2
0
    public void GiveInputToGameController(string input)
    {
        var data = input.Split();

        if (data[0].Equals("Soldier"))
        {
            var soldier = soldierFactory.CreateSoldier(data[1], data[2], int.Parse(data[3]), double.Parse(data[4]),
                                                       double.Parse(data[5]));
            if (wareHouse.TryEquipSoldier(soldier))
            {
                army.AddSoldier(soldier);
            }
            else
            {
                throw new ArgumentException(string.Format(OutputMessages.SoldierCannotBeEquiped, data[1], data[2]));
            }
        }
        else if (data[1] == "Regenerate")
        {
            army.RegenerateTeam(data[2]);
        }

        else if (data[0] == "WareHouse")
        {
            string name   = data[1];
            int    number = int.Parse(data[2]);

            this.wareHouse.AddAmmunition(name, number);
        }
        else if (data[0] == "Mission")
        {
            var mission = missionFactory.CreateMission(data[1], double.Parse(data[2]));
            writer.AppendLine(missionController.PerformMission(mission).TrimEnd());
        }
    }
Ejemplo n.º 3
0
    public void GiveInputToGameController(string input)
    {
        var data = input.Split().First();

        //var regenerate = input.Split()[1];

        if (data == "Soldier")
        {
            var inputTokens = input.Split();
            if (input.Contains("Regenerate"))
            {
                inputTokens = input.Split();
                var typeOfSoldier = inputTokens[2];
                this.army.RegenerateTeam(typeOfSoldier);
            }
            else
            {
                var type        = inputTokens[1];
                var soldierName = inputTokens[2];
                var age         = int.Parse(inputTokens[3]);
                var experience  = double.Parse(inputTokens[4]);
                var endurance   = double.Parse(inputTokens[5]);

                ISoldier soldier = soldierFactory.CreateSoldier(type, soldierName, age, experience, endurance);

                if (this.wareHouse.TryEquipSoldier(soldier))
                {
                    this.army.AddSoldier(soldier);
                }
                else
                {
                    throw new ArgumentException(string.Format(OutputMessages.NoWeaponsForSoldierType, type, soldierName));
                }
            }
        }
        else if (data == "WareHouse")
        {
            var inputTokens = input.Split();
            var name        = inputTokens[1];
            var number      = int.Parse(inputTokens[2]);
            //IAmmunition amunition = ammunitionFactory.CreateAmmunition(name);
            this.wareHouse.AddAmmunitions(name, number);
            //AddAmmunitions(ammunition);
        }
        else if (data == "Mission")
        {
            var inputTokens   = input.Split();
            var typeOfMission = inputTokens[1];
            var neededPoints  = double.Parse(inputTokens[2]);
            var mission       = missionFactory.CreateMission(typeOfMission, neededPoints);
            this.writer.WriteLine(this.MissionControllerField.PerformMission(mission).Trim());
        }
        //else if (regenerate == "Regenerate")
        //{
        //    var inputTokens = input.Split();
        //    var typeOfSoldier = inputTokens[2];
        //    this.army.RegenerateTeam(typeOfSoldier);
        //}
    }
Ejemplo n.º 4
0
    public void GiveInputToGameController(string input)
    {
        var data = input.Split();

        if (data[0].Equals("Soldier"))
        {
            if (data[1] == "Regenerate")
            {
                army.RegenerateTeam(data[2]);
            }
            else
            {
                var soldier = soldierFactory.CreateSoldier
                              (
                    data[1],                    //string soldierTypeName
                    data[2],                    //string name
                    int.Parse(data[3]),         //int age
                    double.Parse(data[4]),      //double experience
                    double.Parse(data[5])       //double endurance
                              );

                if (this.wareHouse.TryEquipSoldier(soldier))
                {
                    this.army.AddSoldier(soldier);
                }
                else
                {
                    string soldierType = data[1];
                    string soldierName = data[2];
                    throw new ArgumentException(string.Format(OutputMessages.SoldierCannotBeEquiped, soldierType, soldierName));
                }
            }
        }
        else if (data[0].Equals("WareHouse"))
        {
            string name   = data[1];
            int    number = int.Parse(data[2]);

            this.wareHouse.AddAmmunition(name, number);
        }
        else if (data[0].Equals("Mission"))
        {
            var mission = this.missionFactory.CreateMission(data[1], double.Parse(data[2]));

            writer.AppendLine(this.missionController.PerformMission(mission).Trim());
        }
    }
Ejemplo n.º 5
0
    private void AddSoldierToArmy(IList <string> arguments)
    {
        var type       = arguments[0];
        var name       = arguments[1];
        var age        = int.Parse(arguments[2]);
        var experience = double.Parse(arguments[3]);
        var endurance  = double.Parse(arguments[4]);

        var soldier = soldierFactory.CreateSoldier(type, name, age, experience, endurance);

        var listOfRequiredWeapons  = (List <string>)soldier.GetType().GetProperty("WeaponsAllowed", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(soldier);
        var countOfRequiredWeapons = 0;

        var ammunitionsInWareHouse = (List <IAmmunition>) this.wareHouse.GetType().GetProperty("Amunitions").GetValue(this.wareHouse);

        foreach (var requiredWeapon in listOfRequiredWeapons)
        {
            foreach (var ammunition in ammunitionsInWareHouse)
            {
                if (requiredWeapon == ammunition.Name)
                {
                    countOfRequiredWeapons++;
                    break;
                }
            }
        }

        if (countOfRequiredWeapons != listOfRequiredWeapons.Count)
        {
            throw new ArgumentException(string.Format(OutputMessages.NoWeaponsForSoldierType, type, name));
        }

        foreach (var requiredWeapon in listOfRequiredWeapons)
        {
            var weapon = ammunitionsInWareHouse.FirstOrDefault(w => w.Name == requiredWeapon);
            soldier.Weapons[requiredWeapon] = weapon;
            ammunitionsInWareHouse.Remove(weapon);
        }

        this.army.AddSoldier(soldier);
    }
Ejemplo n.º 6
0
    public string AddSoldierToArmy(string[] args)
    {
        string soldierTypeName = args[0];
        string name            = args[1];
        int    age             = int.Parse(args[2]);
        double experience      = double.Parse(args[3]);
        double endurance       = double.Parse(args[4]);

        ISoldier soldier = soldierFactory.CreateSoldier(soldierTypeName, name, age, experience, endurance);

        if (wareHouse.TryEquipSoldier(soldier))
        {
            this.army.AddSoldier(soldier);
        }
        else
        {
            return(string.Format(OutputMessages.NoWeapon, soldier.GetType().Name, soldier.Name));
        }

        return(null);
    }
Ejemplo n.º 7
0
    public void GiveInputToGameController(string input)
    {
        var data = input.Split();

        if (data[0].Equals("Soldier"))
        {
            if (data[1] == "Regenerate")
            {
                this.army.RegenerateTeam(data[2]);
            }
            else
            {
                ISoldier soldier = soldierFactory.CreateSoldier(data[1], data[2], int.Parse(data[3]), double.Parse(data[4]), double.Parse(data[5]));

                if (this.wareHouse.TryEquipSoldier(soldier))
                {
                    this.army.AddSoldier(soldier);
                }
                else
                {
                    throw new ArgumentException(string.Format(OutputMessages.NoWeaponsForSoldierType, data[1], data[2]));
                }
            }
        }
        else if (data[0].Equals("WareHouse"))
        {
            string ammunition = data[1];
            int    quantity   = int.Parse(data[2]);

            this.wareHouse.AddAmmunition(ammunition, quantity);
        }
        else if (data[0].Equals("Mission"))
        {
            var mission = this.missionFactory.CreateMission(data[1], double.Parse(data[2]));
            this.writer.StoreMessage(this.missionController.PerformMission(mission));
        }
    }
Ejemplo n.º 8
0
    public void GiveInputToGameController(string input)
    {
        var data = input.Split();

        if (data[0].Equals("Soldier"))
        {
            string type       = string.Empty;
            string name       = string.Empty;
            int    age        = 0;
            double experience = 0;
            double endurance  = 0d;

            if (data.Length == 3)
            {
                type = data[1];
                name = data[2];
            }
            else
            {
                type       = data[1];
                name       = data[2];
                age        = int.Parse(data[3]);
                experience = double.Parse(data[4]);
                endurance  = double.Parse(data[5]);
            }

            switch (type)
            {
            case "Ranker":
            case "Corporal":
            case "SpecialForce":
                try
                {
                    var soldier = soldierFactory.CreateSoldier(type, name, age, experience, endurance);
                    army.AddSoldier(soldier);
                }
                catch (InvalidOperationException e)
                {
                    writer.WriteLine(e.Message);
                }
                break;

            case "Regenerate":
                this.army.RegenerateTeam(name);
                break;
            }
        }
        else if (data[0].Equals("WareHouse"))
        {
            string name   = data[1];
            int    number = int.Parse(data[2]);

            while (number-- > 0)
            {
                wareHouse.AddAmmunitions(ammunitionFactory.CreateAmmunition(name));
            }
        }
        else if (data[0].Equals("Mission"))
        {
            var missionDifficulty = data[1];
            var scoresToComplete  = double.Parse(data[2]);

            var missionInstance = missionFactory.CreateMission(missionDifficulty, scoresToComplete);

            writer.WriteLine(this.missionControllerField.PerformMission(missionInstance).TrimEnd());
        }
    }
    public void GiveInputToGameController(string input)
    {
        var data = input.Split();

        if (data[0].Equals("Soldier"))
        {
            string type       = string.Empty;
            string name       = string.Empty;
            int    age        = 0;
            int    experience = 0;
            double speed      = 0d;
            double endurance  = 0d;
            double motivation = 0;
            double maxWeight  = 0d;

            if (data.Length == 3)
            {
                type = data[1];
                name = data[2];
            }
            else
            {
                type       = data[1];
                name       = data[2];
                age        = int.Parse(data[3]);
                experience = int.Parse(data[4]);
                speed      = double.Parse(data[5]);
                endurance  = double.Parse(data[6]);
                motivation = double.Parse(data[7]);
                maxWeight  = double.Parse(data[8]);
            }
            ISoldier soldier = null;
            switch (type)
            {
            case "Ranker":
                soldier = soldiersFactory.CreateSoldier(type, name, age, experience, endurance);

                AddSoldierToArmy(soldier, type);
                break;

            case "Corporal":
                soldier = soldiersFactory.CreateSoldier(type, name, age, experience, endurance);

                AddSoldierToArmy(soldier, type);
                break;

            case "Special-Force":
                soldier = soldiersFactory.CreateSoldier(type, name, age, experience, endurance);

                AddSoldierToArmy(soldier, type);
                break;

            case "Regenerate":
                this.soldierController.TeamRegenerate(army, name);
                break;

            case "Vacation":
                this.soldierController.TeamGoesOnVacation(army, name);
                break;

            case "Bonus":
                this.soldierController.TeamGetBonus(army, name);
                break;
            }
        }
        else if (data[0].Equals("WearHouse"))
        {
            string name   = data[1];
            int    number = int.Parse(data[2]);

            AddAmmunitions(ammoFactory.CreateAmmunition(name, number));
        }
        else if (data[0].Equals("Mission"))
        {
            var mission = this.missionFactory.CreateMission(data[1], double.Parse(data[2]));
            this.missionControllerField.PerformMission(mission);
        }
    }