/// <summary> /// Forces the addition of a specified <see cref="CityImprovementPivot"/> to the city. /// </summary> /// <param name="cityImprovement">The city improvement.</param> internal void ForceCityImprovement(CityImprovementPivot cityImprovement) { if (!Improvements.Contains(cityImprovement)) { _improvements.Add(cityImprovement); RemovePreviousPlant(cityImprovement); } }
public static void CreateImprovements() { Improvements asset = ScriptableObject.CreateInstance <Improvements>(); AssetDatabase.CreateAsset(asset, "Assets/Prefab/Improvements/NewImprovement.asset"); AssetDatabase.SaveAssets(); EditorUtility.FocusProjectWindow(); Selection.activeObject = asset; }
/// <summary> /// Forces the remove of a specified <see cref="CityImprovementPivot"/> of the city. /// </summary> /// <param name="cityImprovement">The city improvement.</param> internal void ForceRemoveCityImprovement(CityImprovementPivot cityImprovement) { if (Improvements.Contains(cityImprovement)) { _improvements.Remove(cityImprovement); if (cityImprovement.HasCitizenHappinessEffect) { CheckCitizensHappiness(); } } }
public Improvements(int dataId, string id, char asciiId, string name, Improvements requires, string graphicTag, params string[] alternativeGraphicTags) : base(id, asciiId, name, graphicTag, alternativeGraphicTags) { DataId = dataId; Requires = requires; }
public Item(XDocument xdoc, World world) : base(xdoc, world) { foreach (var element in xdoc.Root.Elements()) { var val = element.Value.Trim(); int valI; int.TryParse(val, out valI); switch (element.Name.LocalName) { case "id": break; case "type": if (!ItemTypes.Contains(val)) { ItemTypes.Add(val); } ItemTypeId = ItemTypes.IndexOf(val); break; case "subtype": if (valI != -1) { if (!ItemSubTypes.Contains(val)) { ItemSubTypes.Add(val); } ItemSubTypeId = ItemSubTypes.IndexOf(val); } break; case "description": Description = val; break; case "mat": if (!Materials.Contains(val)) { Materials.Add(val); } Mat = Materials.IndexOf(val); break; case "maker": if (valI != -1) { MakerID = valI; } break; case "quality": if (valI != -1) { QualityVal = valI; } break; case "skill_used": if (valI != -1) { SkillUsed = valI; } break; case "masterpiece_event": if (valI != -1) { MasterpieceEventID = valI; } break; case "flags": var flags = val.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var flag in flags) { if (!Flags.Contains(flag)) { Flags.Add(flag); } if (Flag == null) { Flag = new List <short>(); } Flag.Add((short)Flags.IndexOf(flag)); } break; case "coords": Coords = new Point3( Convert.ToInt32(val.Split(',')[0]), Convert.ToInt32(val.Split(',')[1]), Convert.ToInt32(val.Split(',')[2])); break; case "temperature": Temperature = Convert.ToDouble(val); break; case "topic": if (valI != -1) { TopicId = valI; } break; case "engraving_type": if (valI != -1) { EngravingType = valI; } break; case "title": Title = val; break; case "age": if (valI != -1) { Age = valI; } break; case "wear": if (valI != -1) { Wear = valI; } break; case "handedness": if (val.Count(x => x == ',') == 1) { Handedness = Convert.ToInt32(val.TrimEnd(',')); } break; case "shape": if (valI != -1) { Shape = valI; } break; case "dye_mat": if (!Materials.Contains(val)) { Materials.Add(val); } DyeMat = Materials.IndexOf(val); break; case "unit_id": if (valI != -1) { UnitId = valI; } break; case "hist_figure_id": if (valI != -1) { HistFigureId = valI; } break; case "bone1": if (!Materials.Contains(val)) { Materials.Add(val); } BoneMat = Materials.IndexOf(val); break; case "weight": if (valI != -1) { Weight = valI; } break; case "ingredients": foreach (var inv in element.Elements()) { if (Ingredients == null) { Ingredients = new List <ItemIngredient>(); } Ingredients.Add(new ItemIngredient(new XDocument(inv), world)); } break; case "image": if (!ImageId.HasValue) { ImageId = Convert.ToInt32(element.Element("id").Value); ImageSubId = Convert.ToInt32(element.Element("subid").Value); ImageCivId = Convert.ToInt32(element.Element("civ_id").Value); ImageSiteId = Convert.ToInt32(element.Element("site_id").Value); } break; case "reference": if (References == null) { References = new List <Reference>(); } References.Add(new Reference(element, this)); break; case "improvements": foreach (var imp in element.Elements()) { if (Improvements == null) { Improvements = new List <ItemImprovement>(); } Improvements.Add(new ItemImprovement(new XDocument(imp), world)); } break; case "stockpile": StockpileId = Convert.ToInt32(element.Element("id").Value); StockpileCoords = new Point( Convert.ToInt32(element.Element("x").Value), Convert.ToInt32(element.Element("y").Value)); break; default: DFXMLParser.UnexpectedXmlElement(xdoc.Root.Name.LocalName, element, xdoc.Root.ToString()); break; } } Name = $"{(Mat.HasValue ? Materials[Mat.Value] + " " : "")}{(ItemSubTypeId.HasValue ? ItemSubTypes[ItemSubTypeId.Value] + " " : ItemTypes[ItemTypeId.Value])}" .Trim().ToTitleCase(); }
public DefinedImprovements(IdGenerator idGen) { None = new Improvements(-1, "", ' ', "None", null, null); Farms = new Improvements(idGen.Next(), "farms", 'f', "Farms", null, "tx.farmland"); Mining = new Improvements(idGen.Next(), "mine", 'm', "Mine", null, "tx.mine"); }