예제 #1
0
 /// <summary>
 /// Instead of triggering a full solid change of the room, merely retrigger the
 /// conditions.
 /// </summary>
 /// <param name="prober">The current room prober.</param>
 /// <param name="cell">The cell of the room that will be updated.</param>
 private static void SolidNotChangedEvent(RoomProber prober, int cell, bool _)
 {
     if (prober != null)
     {
         ROOMS_PENDING.Add(cell);
     }
 }
예제 #2
0
 private static void Postfix(RoomProber __instance)
 {
     //Debug.Log(" === RoomSizeMod_RoomProber Postfix === ");
     //RoomProber.MaxRoomSize = 1024;
     //RoomProber.MaxRoomSize = RoomSizeState.StateManager.State.OverallMaximumRoomSize;
     TuningData <RoomProber.Tuning> .Get().maxRoomSize = RoomSizeState.StateManager.State.OverallMaximumRoomSize;
 }
예제 #3
0
    public void Sim1000ms(float dt)
    {
        mingleCells.Clear();
        RoomProber        roomProber        = Game.Instance.roomProber;
        MinionGroupProber minionGroupProber = MinionGroupProber.Get();

        foreach (Room room in roomProber.rooms)
        {
            if (room.roomType == Db.Get().RoomTypes.RecRoom)
            {
                for (int i = room.cavity.minY; i <= room.cavity.maxY; i++)
                {
                    for (int j = room.cavity.minX; j <= room.cavity.maxX; j++)
                    {
                        int        num           = Grid.XYToCell(j, i);
                        CavityInfo cavityForCell = roomProber.GetCavityForCell(num);
                        if (cavityForCell == room.cavity && minionGroupProber.IsReachable(num) && !Grid.HasLadder[num] && !Grid.HasTube[num] && !Grid.IsLiquid(num) && Grid.Element[num].id == SimHashes.Oxygen)
                        {
                            mingleCells.Add(num);
                        }
                    }
                }
            }
        }
    }
예제 #4
0
        private static void Postfix(RoomProber __instance)
        {
            Debug.Log(" === RoomSizeMod_RoomProber Postfix === Original Max. Room Size: " + TuningData <RoomProber.Tuning> .Get().maxRoomSize);
            //RoomProber.MaxRoomSize = 1024;
            //RoomProber.MaxRoomSize = RoomSizeState.StateManager.State.OverallMaximumRoomSize;
            TuningData <RoomProber.Tuning> .Get().maxRoomSize = RoomSizeConfig.Instance.OverallMaximumRoomSize;

            Debug.Log(" === RoomSizeMod_RoomProber Postfix === New Max. Room Size: " + TuningData <RoomProber.Tuning> .Get().maxRoomSize);
        }
예제 #5
0
 private static void PrefixRoomProbe(RoomProber __instance)
 {
     foreach (int cell in ROOMS_PENDING)
     {
         var cavity = __instance.GetCavityForCell(cell);
         if (cavity != null)
         {
             __instance.UpdateRoom(cavity);
         }
         else
         {
             __instance.SolidChangedEvent(cell, true);
         }
     }
     ROOMS_PENDING.Clear();
 }
예제 #6
0
 private static void Postfix(RoomProber __instance)
 {
     //Debug.Log(" === RoomSizeMod_RoomProber Postfix === ");
     RoomProber.MaxRoomSize = 1024;
 }