function Digger(width, height, options) {
      var _this15;
      if (options === void 0) {
        options = {};
      }
      _this15 = _Dungeon2.call(this, width, height) || this;
      _this15._options = Object.assign({
        roomWidth: [3, 9],
        roomHeight: [3, 5],
        corridorLength: [3, 10],
        dugPercentage: 0.2,
        timeLimit: 1000 /* we stop after this much time has passed (msec) */
      }, options);
      _this15._features = {
        "room": 4,
        "corridor": 4
      };
      _this15._map = [];
      _this15._featureAttempts = 20; /* how many times do we try to create a feature on a suitable wall */
      _this15._walls = {}; /* these are available for digging */
      _this15._dug = 0;
      _this15._digCallback = _this15._digCallback.bind(_assertThisInitialized(_this15));
      _this15._canBeDugCallback = _this15._canBeDugCallback.bind(_assertThisInitialized(_this15));
      _this15._isWallCallback = _this15._isWallCallback.bind(_assertThisInitialized(_this15));
      _this15._priorityWallCallback = _this15._priorityWallCallback.bind(_assertThisInitialized(_this15));
      return _this15;
    }
Random dungeon generator using human-like digging patterns.
Heavily based on Mike Anderson's ideas from the "Tyrant" algo, mentioned at
http://roguebasin.com/index.php/Dungeon-Building_Algorithm