public static void Postfix(ref Database.RoomTypes __instance)
        {
            //Debug.Log(" === PoperPowerPlant_RoomTypes Postfix === ");

            // Get Power Plant
            RoomType roomType = __instance.TryGet(__instance.PowerPlant.Id);

            // Custom max size constraint for room
            int        customMaxSize     = 240;
            Constraint MaxSizeConstraint = new Constraint(null, (Room room) => room.cavity.numCells <= customMaxSize,
                                                          1,
                                                          string.Format(ROOMS.CRITERIA.MAXIMUM_SIZE.NAME, "" + customMaxSize),
                                                          string.Format(ROOMS.CRITERIA.MAXIMUM_SIZE.DESCRIPTION, "" + customMaxSize),
                                                          null);

            // Custom max size for all rooms
            TuningData <RoomProber.Tuning> .Get().maxRoomSize = customMaxSize;

            // Iterate constraints
            RoomConstraints.Constraint[] additional_constraints = roomType.additional_constraints;
            for (int i = 0; i < additional_constraints.Length; i++)
            {
                // Change max size constraint
                if (additional_constraints[i].name.Contains("Maximum size:"))
                {
                    additional_constraints[i] = MaxSizeConstraint;
                    break;
                }
            }
        }
Beispiel #2
0
        private static void Postfix(ref Database.RoomTypes __instance)
        {
            Debug.Log(" === RoomSizeMod_RoomTypes Postfix === ");

            /*
             *          ChangeRoomMaximumSize(__instance.PlumbedBathroom,	MAXIMUM_SIZE_128);
             *          ChangeRoomMaximumSize(__instance.Latrine,			MAXIMUM_SIZE_128);
             *          ChangeRoomMaximumSize(__instance.Bedroom,			MAXIMUM_SIZE_128);
             *          ChangeRoomMaximumSize(__instance.Barracks,			MAXIMUM_SIZE_128);
             *          ChangeRoomMaximumSize(__instance.GreatHall,			MAXIMUM_SIZE_240);
             *          ChangeRoomMaximumSize(__instance.MessHall,			MAXIMUM_SIZE_128);
             *          ChangeRoomMaximumSize(__instance.Hospital,			MAXIMUM_SIZE_192);
             *          ChangeRoomMaximumSize(__instance.MassageClinic,		MAXIMUM_SIZE_128);
             *          ChangeRoomMaximumSize(__instance.PowerPlant,		MAXIMUM_SIZE_192);
             *          ChangeRoomMaximumSize(__instance.Farm,				MAXIMUM_SIZE_192);
             *          ChangeRoomMaximumSize(__instance.CreaturePen,		MAXIMUM_SIZE_192);
             *          ChangeRoomMaximumSize(__instance.MachineShop,		MAXIMUM_SIZE_192);
             *          ChangeRoomMaximumSize(__instance.RecRoom,			MAXIMUM_SIZE_128);
             */
            //foreach (KeyValuePair<string, int> entry in RoomSizeStateManager.ConfiguratorState.MaximumRoomSizes)
            foreach (KeyValuePair <string, int> entry in RoomSizeConfig.Instance.MaximumRoomSizes)
            {
                try
                {
                    Constraint max_size = new Constraint(null, (Room room) => room.cavity.numCells <= entry.Value, 1, string.Format(ROOMS.CRITERIA.MAXIMUM_SIZE.NAME, "" + entry.Value), string.Format(ROOMS.CRITERIA.MAXIMUM_SIZE.DESCRIPTION, "" + entry.Value), null);
                    //Debug.Log(entry.Key);
                    //Debug.Log(__instance.Get(entry.Key));
                    ChangeRoomMaximumSize(__instance.TryGet(entry.Key), max_size);
                }
                catch (Exception ex)
                {
                    Debug.Log(" === RoomSizeMod_ChangeRoomMaximumSize === Cannot find roomtype: " + entry.Key);
                    Debug.LogError(ex);
                }
            }
        }