public RoomTypeBotanicalData()
        {
            Id                = RoomId;
            Name              = STRINGS.ROOMS.TYPES.BOTANICAL.NAME;
            Tooltip           = STRINGS.ROOMS.TYPES.BOTANICAL.TOOLTIP;
            Effect            = STRINGS.ROOMS.TYPES.BOTANICAL.EFFECT;
            Catergory         = Db.Get().RoomTypeCategories.Park;
            ConstraintPrimary = RoomConstraints.PARK_BUILDING;

            ConstrantsAdditional = new RoomConstraints.Constraint[5]
            {
                new RoomConstraints.Constraint((Func <KPrefabID, bool>)null,
                                               (Func <Room, bool>)(room =>
                {
                    List <string> names = new List <string>();
                    foreach (var plant in room.cavity.plants)
                    {
                        if (plant == null)
                        {
                            continue;
                        }
                        if (!DecorativeNames.Contains(plant.name))
                        {
                            continue;
                        }
                        if (!names.Contains(plant.name))
                        {
                            names.Add(plant.name);
                        }
                    }
                    return(names.Count >= requiredDecorative);
                }),
                                               name: string.Format(STRINGS.ROOMS.CRITERIA.DECORPLANTS.NAME, requiredDecorative),
                                               description: string.Format(STRINGS.ROOMS.CRITERIA.DECORPLANTS.DESCRIPTION, requiredDecorative)),
                new RoomConstraints.Constraint((Func <KPrefabID, bool>)null,
                                               (Func <Room, bool>)(room => room.cavity.plants.Count >= requiredPlants),
                                               name: string.Format(STRINGS.ROOMS.CRITERIA.PLANTCOUNT.NAME, requiredPlants),
                                               description: string.Format(STRINGS.ROOMS.CRITERIA.PLANTCOUNT.DESCRIPTION, requiredPlants)),
                new RoomConstraints.Constraint((Func <KPrefabID, bool>)null,
                                               (Func <Room, bool>)(room =>
                {
                    foreach (KPrefabID plant in room.cavity.plants)
                    {
                        if ((UnityEngine.Object)plant != (UnityEngine.Object)null)
                        {
                            BasicForagePlantPlanted component1 = plant.GetComponent <BasicForagePlantPlanted>();
                            ReceptacleMonitor component2       = plant.GetComponent <ReceptacleMonitor>();
                            if ((UnityEngine.Object)component2 != (UnityEngine.Object)null && !component2.Replanted)
                            {
                                return(false);
                            }
                            else if ((UnityEngine.Object)component1 != (UnityEngine.Object)null)
                            {
                                return(false);
                            }
                        }
                    }
                    return(true);
                }),
                                               name: STRINGS.ROOMS.CRITERIA.NOWILDPLANTS.NAME,
                                               description: STRINGS.ROOMS.CRITERIA.NOWILDPLANTS.DESCRIPTION),
                RoomConstraints.MINIMUM_SIZE_32,
                RoomConstraintTags.GetMaxSizeConstraint(Settings.Instance.Botanical.MaxSize)
            };

            RoomDetails = new RoomDetails.Detail[2]
            {
                new RoomDetails.Detail((Func <Room, string>)(room => string.Format((string)ROOMS.DETAILS.SIZE.NAME, (object)room.cavity.numCells))),
                new RoomDetails.Detail((Func <Room, string>)(room => string.Format((string)ROOMS.DETAILS.BUILDING_COUNT.NAME, (object)room.buildings.Count)))
            };

            Priority       = 1;
            Upgrades       = null;
            SingleAssignee = false;
            PriorityUse    = false;
            Effects        = new string[1] {
                "RoomNatureReserve"
            };
            SortKey = SortingCounter.GetAndIncrement(SortingCounter.ParkSortKey + 1);
        }
Esempio n. 2
0
    static RoomConstraints()
    {
        Func <KPrefabID, bool> building_criteria = null;
        Func <Room, bool>      room_criteria     = delegate(Room room)
        {
            int num3 = 0;
            foreach (KPrefabID creature2 in room.cavity.creatures)
            {
                if (creature2.HasTag(GameTags.Creatures.Wild))
                {
                    num3++;
                }
            }
            return(num3 >= 2);
        };
        string name = ROOMS.CRITERIA.WILDANIMALS.NAME;

        WILDANIMALS       = new Constraint(building_criteria, room_criteria, 1, name, ROOMS.CRITERIA.WILDANIMALS.DESCRIPTION, null);
        building_criteria = null;
        room_criteria     = delegate(Room room)
        {
            int num2 = 0;
            foreach (KPrefabID plant in room.cavity.plants)
            {
                if ((UnityEngine.Object)plant != (UnityEngine.Object)null)
                {
                    BasicForagePlantPlanted component3 = plant.GetComponent <BasicForagePlantPlanted>();
                    ReceptacleMonitor       component4 = plant.GetComponent <ReceptacleMonitor>();
                    if ((UnityEngine.Object)component4 != (UnityEngine.Object)null && !component4.Replanted)
                    {
                        num2++;
                    }
                    else if ((UnityEngine.Object)component3 != (UnityEngine.Object)null)
                    {
                        num2++;
                    }
                }
            }
            return(num2 >= 2);
        };
        name       = ROOMS.CRITERIA.WILDPLANT.NAME;
        WILDPLANT  = new Constraint(building_criteria, room_criteria, 1, name, ROOMS.CRITERIA.WILDPLANT.DESCRIPTION, null);
        WILDPLANTS = new Constraint(null, delegate(Room room)
        {
            int num = 0;
            foreach (KPrefabID plant2 in room.cavity.plants)
            {
                if ((UnityEngine.Object)plant2 != (UnityEngine.Object)null)
                {
                    BasicForagePlantPlanted component = plant2.GetComponent <BasicForagePlantPlanted>();
                    ReceptacleMonitor component2      = plant2.GetComponent <ReceptacleMonitor>();
                    if ((UnityEngine.Object)component2 != (UnityEngine.Object)null && !component2.Replanted)
                    {
                        num++;
                    }
                    else if ((UnityEngine.Object)component != (UnityEngine.Object)null)
                    {
                        num++;
                    }
                }
            }
            return(num >= 4);
        }, 1, ROOMS.CRITERIA.WILDPLANTS.NAME, ROOMS.CRITERIA.WILDPLANTS.DESCRIPTION, null);
    }