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); }
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); }