public void AddSoldier(ISoldier soldier) { if (!this.Members.ContainsKey(soldier.GetType().Name)) { this.Members[soldier.GetType().Name] = new List <ISoldier>(); this.Members[soldier.GetType().Name].Add(soldier); } else { this.Members[soldier.GetType().Name].Add(soldier); } }
public void AddSoldier(ISoldier soldier) { string typeSoldierName = soldier.GetType().Name; if (!this.SoldierArmy.ContainsKey(typeSoldierName)) { this.SoldierArmy[typeSoldierName] = new List <ISoldier>(); } this.SoldierArmy[typeSoldierName].Add(soldier); }
private void AddSoldierToArmyCommand(string[] data) { // Create Soldier ISoldier soldier = CreateSoldier(data); // Equip soldier bool isFullyEquipped = this.wareHouse.TryEquipSoldier(soldier); // Add soldier to army if fully equipped if (!isFullyEquipped) { this.writer.AppendMessage(string.Format(OutputMessages.NoWeaponForSoldier, soldier.GetType().Name, soldier.Name)); } else { 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); }
private void AddSoldierToArmy(string[] soldierParams) { string soldierType = soldierParams[0]; string name = soldierParams[1]; int age = int.Parse(soldierParams[2]); double experience = double.Parse(soldierParams[3]); double endurance = double.Parse(soldierParams[4]); ISoldier soldier = this.soldierFactory. CreateSoldier(soldierType, name, age, experience, endurance); if (!this.wareHouse.TryEquipSoldier(soldier)) { throw new InvalidOperationException( string.Format( OutputMessages.NoWeaponForSoldier, soldier.GetType().Name, soldier.Name)); } this.army.AddSoldier(soldier); }
////Checks if all the ammunitions for this type of soldier are available private bool CheckIfSoldierCanJoinTeam(ISoldier soldier) { string exactSoldierTypeName = soldier.GetType().Name; Type typeOfSoldier = Assembly.GetExecutingAssembly().GetTypes() .FirstOrDefault(t => t.Name.Equals(exactSoldierTypeName)); object instance = this.soldierFactory.CreateSoldier(exactSoldierTypeName, soldier.Name, soldier.Age, soldier.Experience, soldier.Endurance); FieldInfo weaponsAllowedField = typeOfSoldier .GetFields(BindingFlags.NonPublic | BindingFlags.Instance) .FirstOrDefault(x => x.GetCustomAttributes(typeof(ItemAttribute), true).Length != 0); var weaponsAllowedData = (List <string>)weaponsAllowedField.GetValue(instance); bool possibleToJoin = true; foreach (var weapon in weaponsAllowedData) { if (!this.WareHouse.Ammunitions.ContainsKey(weapon)) { possibleToJoin = false; continue; } if (soldier.Weapons[weapon] == null && this.WareHouse.Ammunitions[weapon].Count > 0) { soldier.Weapons[weapon] = this.WareHouse.Ammunitions[weapon][0]; this.WareHouse.Ammunitions[weapon].RemoveAt(0); } else { possibleToJoin = false; } } return(possibleToJoin); }
public void GiveInputToGameController(string input) { string[] data = input.Split(); if (data[0].Equals("Soldier")) { if (data[1] == "Regenerate") { army.RegenerateTeam(data[2]); } else { 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 = this.soldierFactory.CreateSoldier(soldierType, name, age, experience, endurance); if (this.wareHouse.TryEquipSoldier(soldier)) { this.army.AddSoldier(soldier); } else { throw new ArgumentException(string.Format(OutputMessages.SoldierNotAdded, soldier.GetType().Name, soldier.Name)); } } } else if (data[0].Equals("WareHouse")) { string name = data[1]; int count = int.Parse(data[2]); this.wareHouse.AddAmmunition(name, count); } else if (data[0].Equals("Mission")) { string missionType = data[1]; double neededPoints = double.Parse(data[2]); IMission mission = this.missionFactory.CreateMission(missionType, neededPoints); this.writer.AppendLine(this.missionController.PerformMission(mission).Trim()); } }
public void AddSoldier(ISoldier soldier) { if (!SoldierCanJoinTeam(soldier)) { throw new InvalidOperationException(string.Format(OutputMessages.UnableToRegisterSoldier, soldier.GetType().Name, soldier.Name)); } else { this.soldiers.Add(soldier); this.wareHouse.EquipArmy(this); } }
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()); } }