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); } } }
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()); } }
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); //} }
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()); } }
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); }
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); }
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)); } }
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); } }