/// <summary> /// Creates a new village and gives it to a player. /// </summary> /// <param name="id">Village id.</param> /// <param name="isMyVillage">MyVillage or not.</param> /// <returns>Returns the created village.</returns> public Village CreateVillage( int id, bool isMyVillage = false) { Village v = GetVillage(id); if (v != null) { return(v); } if (isMyVillage) { Logger.Trace("Creating a myvillage id:{0}", id); v = new MyVillage(id); } else { Logger.Trace("Creating a village id:{0}", id); v = new Village(id); } Villages.Add(id, v); if (VillageAdded != null) { VillageAdded.Invoke(v); } return(v); }
/// <summary> /// Gets missing buildings for given village. /// </summary> /// <param name="mv">My village object.</param> /// <returns>Missing buildings list.</returns> public IList <BuildingData> MissingBuildings(MyVillage mv) { var missingBuildings = new List <BuildingData>(); foreach (BuildingData req in BuildingRequirements) { Building b = mv.Buildings .FirstOrDefault(i => i.Type == req.Type); if ((b == null) || (b.Level != req.Level)) { missingBuildings.Add(req); } } return(missingBuildings); }
/// <summary> /// Gets missing researches for given village. /// </summary> /// <param name="mv">My village object.</param> /// <returns>Missing researches list.</returns> public IList <Research> MissingResearches(MyVillage mv) { var missingResearches = new List <Research>(); foreach (Research req in ResearchRequirements) { if (mv.Researches.ContainsKey(req.TroopType)) { Research r = mv.Researches[req.TroopType]; if ((r.Armoury != req.Armoury) || (r.Blacksmith != req.Blacksmith)) { missingResearches.Add(req); } } else { missingResearches.Add(req); } } return(missingResearches); }