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