private int RoomSelector(int num) { Room room = floor.Rooms[num]; if (room is Triangle) { return(RoomSelector(num - 1)); } room.ActualizeCanCreate(ref floor.posRooms, floor.RInitialized); if (num == pointerRoom && room.PosibilitiesSq == 0) { pointerRoom++; return(RoomSelector(num + 1)); } else if (num == pointerRoom) { return(num); } int rand = Random.Range(0, 100); if (room is Square) { switch (room.PosibilitiesSq) { case 1: if (rand <= 20) { return(num); } break; case 2: if (rand <= 40) { return(num); } break; case 3: if (rand <= 60) { return(num); } break; } } else if (room is RectangleV || room is RectangleH) { switch (room.PosibilitiesSq) { case 1: if (rand <= 18) { return(num); } break; case 2: if (rand <= 36) { return(num); } break; case 3: if (rand <= 54) { return(num); } break; case 4: if (rand <= 72) { return(num); } break; case 5: if (rand <= 90) { return(num); } break; } } else if (room is HexagonalV || room is HexagonalH) { switch (room.PosibilitiesSq) { case 1: if (rand <= 60) { return(num); } break; } } else { switch (room.PosibilitiesSq) { case 1: if (rand <= 20) { return(num); } break; case 2: if (rand <= 40) { return(num); } break; case 3: if (rand <= 50) { return(num); } break; case 4: if (rand <= 60) { return(num); } break; case 5: if (rand <= 70) { return(num); } break; case 6: if (rand <= 80) { return(num); } break; case 7: if (rand <= 90) { return(num); } break; } } return(RoomSelector(num - 1)); }