/// <summary> /// Initializes a new instance of the <see cref="CityBase"/> class. /// </summary> public CityBase() { this.population = 1; this.happyPeople = 1; this.sizeClass = CitySizeClass.Town; this.buildableItems = new NamedObjectCollection <BuildableItem>(); this.availableResources = new NamedObjectCollection <Resource>(); this.improvements = new NamedObjectCollection <Improvement>(); this.usedCells = new Collection <Point>(); }
/// <summary> /// Gets the <see cref="CityTile"/> for the specified Era, Civilization, and City size. /// </summary> /// <param name="era"></param> /// <param name="civilization"></param> /// <param name="sizeClass"></param> public CityTile GetTile(Era era, Civilization civilization, CitySizeClass sizeClass) { foreach (CityTile tile in this.Items) { if (tile.Civilization == civilization && tile.Era == era && tile.SizeClass == sizeClass) { return(tile); } } return(null); }
/// <summary> /// Paints the city onto the screen. /// </summary> public override void Paint() { if (this.GridCell.City == null) { return; } City city = this.GridCell.City; CountryBase country = city.ParentCountry; Era era = country.Era; Civilization civilization = country.Civilization; CitySizeClass sizeClass = city.SizeClass; CityTile tile = this.tileset.CityTiles.GetTile(era, civilization, sizeClass); this.Graphics.DrawImage(tile.Image, this.Bounds); }
private CityTile GetCityTile(CityBase city) { CitySizeClass sizeClass = city.SizeClass; Civilization civ = city.ParentCountry.Civilization; Era era = city.ParentCountry.Era; foreach (CityTile tile in this.Items) { if (tile.Civilization == civ && tile.Era == era && tile.SizeClass == sizeClass) { return(tile); } } return(null); }
/// <summary> /// Gets a string representation of the size of city described by /// the <i>sizeClass</i> parameter. /// </summary> /// <param name="sizeClass"></param> /// <returns></returns> public static string GetCitySizeString(CitySizeClass sizeClass) { string sizeString = string.Empty; switch (sizeClass) { case CitySizeClass.City: sizeString = GetString("citySize_city"); break; case CitySizeClass.Metropolis: sizeString = GetString("citySize_metropolis"); break; case CitySizeClass.Town: sizeString = GetString("citySize_town"); break; } return(sizeString); }
/// <summary> /// Initializes a new instance of the <see cref="CityTile"/> class. /// </summary> /// <param name="tileRow"></param> public CityTile(DataRow tileRow) { //City tile names contain information regarding the civilization //the image belongs to, the size class, and also the era the tile belongs to. //we parse this apart with underscore characters "_". So, for //example, a city tile for America in industrial times for a metropolis-sized //city would look like "america_industrial_metropolis". Note that these //are case-insensitive. if (tileRow == null) { throw new ArgumentNullException("tileRow"); } //here is the full, unsplit version of the tilename. string unsplit = Convert.ToString(tileRow["CityTileName"], CultureInfo.InvariantCulture); string[] split = unsplit.Split("_".ToCharArray()); if (split.Length != 3) { string error = ClientResources.GetExceptionString("error_invalidCityTileName"); error = string.Format(CultureInfo.CurrentCulture, error, unsplit); throw new ArgumentException(error, "tileRow"); } string civ = split[0]; string eraName = split[1]; string sizeClassName = split[2]; Ruleset rs = ClientApplication.Instance.ServerInstance.Ruleset; foreach (Civilization c in rs.Civilizations) { if (string.Compare(c.Name, civ, true, CultureInfo.InvariantCulture) == 0) { this.civilization = c; break; } } if (this.civilization == null) { throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, ClientResources.GetExceptionString("error_invalidCivilization"), civ), "tileRow"); } foreach (Era e in rs.Eras) { if (string.Compare(e.Name, eraName, true, CultureInfo.InvariantCulture) == 0) { this.era = e; break; } } if (this.era == null) { throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, ClientResources.GetExceptionString("error_invalidEra"), eraName), "tileRow"); } try { this.sizeClass = (CitySizeClass)Enum.Parse(typeof(CitySizeClass), sizeClassName, true); } catch (System.Exception ex) { throw new ArgumentException(sizeClassName + string.Format(CultureInfo.InvariantCulture, ClientResources.GetExceptionString("error_invalidCitySize"), sizeClassName), "tileRow", ex); } string path = string.Empty; path = Convert.ToString(tileRow["TilePath"], CultureInfo.InvariantCulture); this.image = Image.FromFile(path); }