Ejemplo n.º 1
0
    public void EquipArmy(IArmy army)
    {
        foreach (var soldier in army.Soldiers)
        {
            var neededWeapons = soldier.Weapons.Where(w => w.Value == null).ToList();

            foreach (var kvp in neededWeapons)
            {
                var ammoName = kvp.Key;

                if (this.Ammunitions.ContainsKey(ammoName) && this.Ammunitions[ammoName].Count > 0)
                {
                    soldier.Weapons[ammoName] = ammunitionFactory.CreateAmmunition(ammoName);
                    this.Ammunitions[ammoName].RemoveAt(0);
                }
            }
        }
    }
Ejemplo n.º 2
0
    public void GiveInputToGameController(string input)
    {
        var data = input.Split();

        if (data[0] == "Soldier")
        {
            if (data.Length == 6)
            {
                SoldierFactory soldiersFactory = new SoldierFactory();

                string soldierType = data[1];
                string name        = data[2];
                int    age         = int.Parse(data[3]);
                double experience  = double.Parse(data[4]);
                double endurance   = double.Parse(data[5]);

                ISoldier soldier = soldiersFactory.CreateSoldier(soldierType, name, age, experience, endurance);

                if (weraHouse.TryEquipSoldier(soldier) == true)
                {
                    AddSoldierToArmy(soldier);
                }
                else
                {
                    string massage = string.Format(OutputMessages.SoldierCannotBeEquiped, soldier.GetType().Name, soldier.Name);
                    throw new System.ArgumentException(massage);
                }
            }
            else if (data[1] == "Regenerate")
            {
                string soldiersType = data[2];

                army.RegenerateTeam(soldiersType);
            }
        }
        else if (data[0].Equals("WareHouse"))
        {
            AmmunitionFactory ammunitionFactory = new AmmunitionFactory();

            string name   = data[1];
            int    number = int.Parse(data[2]);

            AddAmmunitions(ammunitionFactory.CreateAmmunition(name), number);
        }
        else if (data[0].Equals("Mission"))
        {
            IMissionFactory missionFactory = new MissionFactory();

            string type            = data[1];
            double scoreToComplete = double.Parse(data[2]);

            IMission mission = missionFactory.CreateMission(type, scoreToComplete);

            consoleWriter.AppendLine(missionController.PerformMission(mission).Trim());
        }
    }
Ejemplo n.º 3
0
    public void Run()
    {
        string inputLine;

        while ((inputLine = this.reader.ReadLine()) != TerminatingCommand)
        {
            string[] cmdArgs = inputLine.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            switch (cmdArgs[0])
            {
            case "Soldier":
                //to do soldier Soldier Ranker Ivan 28 55 100

                if (cmdArgs.Length == 3)
                {
                    //to do soldier regenerate
                }
                else
                {
                    string   type           = cmdArgs[1];
                    string   name           = cmdArgs[2];
                    int      age            = int.Parse(cmdArgs[3]);
                    double   experience     = double.Parse(cmdArgs[4]);
                    double   endurance      = double.Parse(cmdArgs[6]);
                    ISoldier currentSoldier = SoldierFactory.CreateSoldier(type, name, age, experience, endurance);
                    foreach (var weapon in currentSoldier.Weapons)
                    {
                    }
                }

                break;

            case "WareHouse":
                string ammunitionName = cmdArgs[1];
                int    number         = int.Parse(cmdArgs[2]);

                IAmmunition currentAmmunition = AmmunitionFactory.CreateAmmunition(ammunitionName);

                if (!this.WareHouse.Storage.ContainsKey(currentAmmunition))
                {
                    this.WareHouse.Storage.Add(currentAmmunition, 0);
                }

                this.WareHouse.Storage[currentAmmunition] += number;

                break;

            case "Mission":
                //to do mission
                break;
            }
        }
    }
Ejemplo n.º 4
0
    private static void Main()
    {
        SoldierFactory    fac  = new SoldierFactory();
        AmmunitionFactory afac = new AmmunitionFactory();
        MissionFactory    mfac = new MissionFactory();

        var sold = fac.CreateSoldier("Ranker", "Ivan", 10, 10, 10);

        var ammo = afac.CreateAmmunition("Gun");

        var m = mfac.CreateMission("Easy", 100);

        IReader reader = new ConsoleReader();
        IWriter writer = new ConsoleWriter();

        IEngine engine = new Engine(reader, writer);

        engine.Run();

        //TryToGetSomePointsFromJudge();
    }
Ejemplo n.º 5
0
    public bool TryEquipSoldier(ISoldier soldier)
    {
        AmmunitionFactory ammunitionFactory = new AmmunitionFactory();
        bool isEquipped = true;

        List <string> missingWeapons = soldier.Weapons.Where(w => w.Value == null || w.Value.WearLevel <= 0).Select(w => w.Key).ToList();

        foreach (string weaponName in missingWeapons)
        {
            if (amunitionCount.ContainsKey(weaponName) && amunitionCount[weaponName] > 0)
            {
                soldier.Weapons[weaponName] = ammunitionFactory.CreateAmmunition(weaponName);
                amunitionCount[weaponName]--;
            }
            else
            {
                isEquipped = false;
            }
        }

        return(isEquipped);
    }
Ejemplo n.º 6
0
    //Метод на който подаваме инпута
    public void GiveInputToGameController(string input)
    {
        // сплитваме
        var data = input.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

        //проверяваме каква е командата от инпута
        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]);
            }

            var soldiersFactory = new SoldierFactory();
            var soldier         = soldiersFactory.CreateSoldier(type, name, age, experience, endurance);
            //switch (type)
            //{
            //    case "Ranker":
            //        var ranker = soldiersFactory.GenerateRanker(name, age, experience, endurance);

            //        //AddSoldierToArmy(ranker, type);
            //        break;
            //    case "Corporal":
            //        var corporal = soldiersFactory.GenerateCorporal(name, age, experience, endurance);
            //        // AddSoldierToArmy(corporal, type);
            //        break;
            //    case "Special-Force":
            //        var specialForce = soldiersFactory.GenerateSpecialForce(name, age, experience, endurance);
            //        // AddSoldierToArmy(specialForce, type);
            //        break;
            //    case "Regenerate":
            //        var soldierController = new SoldierController(); ;
            //        soldierController.TeamRegenerate(army, name);
            //        break;
            //        //case "Vacation": // излишни методи
            //        //    SoldierController.TeamGoesOnVacation(army, name);
            //        //    break;
            //        //case "Bonus":
            //        //    SoldierController.TeamGetBonus(army, name);
            //        //    break;
            //}
        }
        else if (data[0].Equals("WareHouse"))
        {
            string name              = data[1];
            int    number            = int.Parse(data[2]);
            var    ammunitionFactory = new AmmunitionFactory();
            var    ammunition        = ammunitionFactory.CreateAmmunition(name);
            this.AddAmmunitions(ammunition);
            // AddAmmunitions(ammunitionFactory.CreateAmmunitions(name, number));
        }
        else if (data[0].Equals("Mission"))
        {
            //Трябва да се направи проверка за това каква мисия да бъде стартирана и изобщо
            //има ли смисъл от тези няколко вида мисии и как да се разбере кога коя мисия да бъде изпълнена
            //this.MissionControllerField.PerformMission(new Easy());
            var missionFactory = new MissionFactory();
            var mission        = missionFactory.CreateMission(data[1], double.Parse(data[2]));
        }
    }
    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);
        }
    }