示例#1
0
 /// <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);
     }
 }
示例#2
0
    public static void CreateImprovements()
    {
        Improvements asset = ScriptableObject.CreateInstance <Improvements>();

        AssetDatabase.CreateAsset(asset, "Assets/Prefab/Improvements/NewImprovement.asset");
        AssetDatabase.SaveAssets();
        EditorUtility.FocusProjectWindow();
        Selection.activeObject = asset;
    }
示例#3
0
 /// <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();
         }
     }
 }
示例#4
0
 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;
 }
示例#5
0
文件: Item.cs 项目: tier6tank/DFWV
        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();
        }
示例#6
0
 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");
 }