forked from ondras/rot.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrot.min.js
128 lines (128 loc) · 62.8 KB
/
rot.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(g,p,q){g!=Array.prototype&&g!=Object.prototype&&(g[p]=q.value)};$jscomp.getGlobal=function(g){return"undefined"!=typeof window&&window===g?g:"undefined"!=typeof global&&null!=global?global:g};$jscomp.global=$jscomp.getGlobal(this);
$jscomp.polyfill=function(g,p,q,r){if(p){q=$jscomp.global;g=g.split(".");for(r=0;r<g.length-1;r++){var v=g[r];v in q||(q[v]={});q=q[v]}g=g[g.length-1];r=q[g];p=p(r);p!=r&&null!=p&&$jscomp.defineProperty(q,g,{configurable:!0,writable:!0,value:p})}};$jscomp.polyfill("Array.prototype.fill",function(g){return g?g:function(g,q,r){var p=this.length||0;0>q&&(q=Math.max(0,p+q));if(null==r||r>p)r=p;r=Number(r);0>r&&(r=Math.max(0,p+r));for(q=Number(q||0);q<r;q++)this[q]=g;return this}},"es6","es3");
$jscomp.checkStringArgs=function(g,p,q){if(null==g)throw new TypeError("The 'this' value for String.prototype."+q+" must not be null or undefined");if(p instanceof RegExp)throw new TypeError("First argument to String.prototype."+q+" must not be a regular expression");return g+""};
$jscomp.polyfill("String.prototype.repeat",function(g){return g?g:function(g){var p=$jscomp.checkStringArgs(this,null,"repeat");if(0>g||1342177279<g)throw new RangeError("Invalid count value");g|=0;for(var r="";g;)if(g&1&&(r+=p),g>>>=1)p+=p;return r}},"es6","es3");$jscomp.stringPadding=function(g,p){g=void 0!==g?String(g):" ";return 0<p&&g?g.repeat(Math.ceil(p/g.length)).substring(0,p):""};
$jscomp.polyfill("String.prototype.padStart",function(g){return g?g:function(g,q){var p=$jscomp.checkStringArgs(this,null,"padStart");return $jscomp.stringPadding(q,g-p.length)+p}},"es8","es3");$jscomp.owns=function(g,p){return Object.prototype.hasOwnProperty.call(g,p)};$jscomp.assign="function"==typeof Object.assign?Object.assign:function(g,p){for(var q=1;q<arguments.length;q++){var r=arguments[q];if(r)for(var v in r)$jscomp.owns(r,v)&&(g[v]=r[v])}return g};
$jscomp.polyfill("Object.assign",function(g){return g||$jscomp.assign},"es6","es3");$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.Symbol=function(){var g=0;return function(p){return $jscomp.SYMBOL_PREFIX+(p||"")+g++}}();
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var g=$jscomp.global.Symbol.iterator;g||(g=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[g]&&$jscomp.defineProperty(Array.prototype,g,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};
$jscomp.initSymbolAsyncIterator=function(){$jscomp.initSymbol();var g=$jscomp.global.Symbol.asyncIterator;g||(g=$jscomp.global.Symbol.asyncIterator=$jscomp.global.Symbol("asyncIterator"));$jscomp.initSymbolAsyncIterator=function(){}};$jscomp.arrayIterator=function(g){var p=0;return $jscomp.iteratorPrototype(function(){return p<g.length?{done:!1,value:g[p++]}:{done:!0}})};
$jscomp.iteratorPrototype=function(g){$jscomp.initSymbolIterator();g={next:g};g[$jscomp.global.Symbol.iterator]=function(){return this};return g};$jscomp.iteratorFromArray=function(g,p){$jscomp.initSymbolIterator();g instanceof String&&(g+="");var q=0,r={next:function(){if(q<g.length){var v=q++;return{value:p(v,g[v]),done:!1}}r.next=function(){return{done:!0,value:void 0}};return r.next()}};r[Symbol.iterator]=function(){return r};return r};
$jscomp.polyfill("Array.prototype.keys",function(g){return g?g:function(){return $jscomp.iteratorFromArray(this,function(g){return g})}},"es6","es3");function _assertThisInitialized(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function _inheritsLoose(g,p){g.prototype=Object.create(p.prototype);g.prototype.constructor=g;g.__proto__=p}
(function(g,p){"object"===typeof exports&&"undefined"!==typeof module?p(exports):"function"===typeof define&&define.amd?define(["exports"],p):p(g.ROT={})})(this,function(g){function p(d,c){return(d%c+c)%c}function q(d,c,a){void 0===c&&(c=0);void 0===a&&(a=1);return d<c?c:d>a?a:d}function r(d){return d.charAt(0).toUpperCase()+d.substring(1)}function v(d){for(var c=arguments.length,a=Array(1<c?c-1:0),b=1;b<c;b++)a[b-1]=arguments[b];var e=v.map;return d.replace(/%(?:([a-z]+)|(?:{([^}]+)}))/gi,function(b,
l,k,h){if("%"==d.charAt(h-1))return b.substring(1);if(!a.length)return b;k=(l||k).split(",");l=k.shift()||"";h=e[l.toLowerCase()];if(!h)return b;b=a.shift();b=b[h].apply(b,k);l=l.charAt(0);l!=l.toLowerCase()&&(b=r(b));return b})}function P(d){var c;if(d in Q)var a=Q[d];else{if("#"==d.charAt(0))if(a=(d.match(/[0-9a-f]/gi)||[]).map(function(b){return parseInt(b,16)}),3==a.length)a=a.map(function(b){return 17*b});else for(c=0;3>c;c++)a[c+1]+=16*a[c],a.splice(c,1);else a=(c=d.match(/rgb\(([0-9, ]+)\)/i))?
c[1].split(/\s*,\s*/).map(function(b){return parseInt(b)}):[0,0,0];Q[d]=a}return a.slice()}function X(d){for(var c=arguments.length,a=Array(1<c?c-1:0),b=1;b<c;b++)a[b-1]=arguments[b];for(c=0;3>c;c++)for(b=0;b<a.length;b++)d[c]+=a[b][c];return d}function Y(d,c,a){void 0===a&&(a=.5);for(var b=d.slice(),e=0;3>e;e++)b[e]=Math.round(b[e]+a*(c[e]-d[e]));return b}function Z(d,c,a){void 0===a&&(a=.5);d=R(d);c=R(c);for(var b=0;3>b;b++)d[b]+=a*(c[b]-d[b]);return aa(d)}function R(d){var c=d[0]/255,a=d[1]/255;
d=d[2]/255;var b=Math.max(c,a,d),e=Math.min(c,a,d),f=0,l=(b+e)/2;if(b==e)e=0;else{var k=b-e;e=.5<l?k/(2-b-e):k/(b+e);switch(b){case c:f=(a-d)/k+(a<d?6:0);break;case a:f=(d-c)/k+2;break;case d:f=(c-a)/k+4}f/=6}return[f,e,l]}function S(d,c,a){0>a&&(a+=1);1<a&&--a;return a<1/6?d+6*(c-d)*a:.5>a?c:a<2/3?d+(c-d)*(2/3-a)*6:d}function aa(d){var c=d[2];if(0==d[1])return c=Math.round(255*c),[c,c,c];var a=d[1];a=.5>c?c*(1+a):c+a-c*a;var b=2*c-a;c=S(b,a,d[0]+1/3);var e=S(b,a,d[0]);d=S(b,a,d[0]-1/3);return[Math.round(255*
c),Math.round(255*e),Math.round(255*d)]}function T(d){d=P(d);return 36*Math.floor(.0234375*d[0])+6*Math.floor(.0234375*d[1])+1*Math.floor(.0234375*d[2])+16}function U(d,c){var a=[],b=0;d.replace(ea,function(e,l,k,h){var f=d.substring(b,h);f.length&&a.push({type:0,value:f});a.push({type:"c"==l?2:3,value:k.trim()});b=h+e.length;return""});var e=d.substring(b);e.length&&a.push({type:0,value:e});return fa(a,c)}function fa(d,c){c||(c=Infinity);for(var a=0,b=0,e=-1;a<d.length;){var f=d[a];1==f.type&&(b=
0,e=-1);if(0!=f.type)a++;else{for(;0==b&&" "==f.value.charAt(0);)f.value=f.value.substring(1);var l=f.value.indexOf("\n");if(-1!=l){f.value=L(d,a,l,!0);for(l=f.value.split("");l.length&&" "==l[l.length-1];)l.pop();f.value=l.join("")}if(f.value.length){if(b+f.value.length>c){for(l=-1;;){var k=f.value.indexOf(" ",l+1);if(-1==k)break;if(b+k>c)break;l=k}-1!=l?f.value=L(d,a,l,!0):-1!=e?(a=d[e],f=a.value.lastIndexOf(" "),a.value=L(d,e,f,!0),a=e):f.value=L(d,a,c-b,!1)}else b+=f.value.length,-1!=f.value.indexOf(" ")&&
(e=a);a++}else d.splice(a,1)}}d.push({type:1});c=null;for(b=0;b<d.length;b++)switch(e=d[b],e.type){case 0:c=e;break;case 1:if(c){for(e=c.value.split("");e.length&&" "==e[e.length-1];)e.pop();c.value=e.join("")}c=null}d.pop();return d}function L(d,c,a,b){b={type:0,value:d[c].value.substring(a+(b?1:0))};d.splice(c+1,0,{type:1},b);return d[c].value.substring(0,a)}function ba(d,c,a){a[c[d+1]]=a[d];c[a[d]]=c[d+1];a[d]=d+1;c[d+1]=d}function ca(d,c,a){a[c[d]]=a[d];c[a[d]]=c[d];a[d]=d;c[d]=d}var n=(new (function(){function d(){this._c=
this._s2=this._s1=this._s0=this._seed=0}var c=d.prototype;c.getSeed=function(){return this._seed};c.setSeed=function(a){this._seed=a=1>a?1/a:a;this._s0=2.3283064365386963E-10*(a>>>0);a=69069*a+1>>>0;this._s1=2.3283064365386963E-10*a;this._s2=2.3283064365386963E-10*(69069*a+1>>>0);this._c=1;return this};c.getUniform=function(){var a=2091639*this._s0+2.3283064365386963E-10*this._c;this._s0=this._s1;this._s1=this._s2;this._c=a|0;return this._s2=a-this._c};c.getUniformInt=function(a,b){var e=Math.max(a,
b);a=Math.min(a,b);return Math.floor(this.getUniform()*(e-a+1))+a};c.getNormal=function(a,b){void 0===a&&(a=0);void 0===b&&(b=1);do{var e=2*this.getUniform()-1;var f=2*this.getUniform()-1;f=e*e+f*f}while(1<f||0==f);return a+e*Math.sqrt(-2*Math.log(f)/f)*b};c.getPercentage=function(){return 1+Math.floor(100*this.getUniform())};c.getItem=function(a){return a.length?a[Math.floor(this.getUniform()*a.length)]:null};c.shuffle=function(a){var b=[];for(a=a.slice();a.length;){var e=a.indexOf(this.getItem(a));
b.push(a.splice(e,1)[0])}return b};c.getWeightedValue=function(a){var b=0;for(f in a)b+=a[f];b*=this.getUniform();var e;var f=0;for(e in a)if(f+=a[e],b<f)break;return e};c.getState=function(){return[this._s0,this._s1,this._s2,this._c]};c.setState=function(a){this._s0=a[0];this._s1=a[1];this._s2=a[2];this._c=a[3];return this};c.clone=function(){return(new d).setState(this.getState())};return d}())).setSeed(Date.now()),M=function(){function d(){}var c=d.prototype;c.getContainer=function(){return null};
c.setOptions=function(a){this._options=a};return d}(),H=function(d){function c(){var b=d.call(this)||this;b._ctx=document.createElement("canvas").getContext("2d");return b}_inheritsLoose(c,d);var a=c.prototype;a.schedule=function(b){requestAnimationFrame(b)};a.getContainer=function(){return this._ctx.canvas};a.setOptions=function(b){d.prototype.setOptions.call(this,b);b=(b.fontStyle?b.fontStyle+" ":"")+" "+b.fontSize+"px "+b.fontFamily;this._ctx.font=b;this._updateSize();this._ctx.font=b;this._ctx.textAlign=
"center";this._ctx.textBaseline="middle"};a.clear=function(){this._ctx.fillStyle=this._options.bg;this._ctx.fillRect(0,0,this._ctx.canvas.width,this._ctx.canvas.height)};a.eventToPosition=function(b,e){var f=this._ctx.canvas,a=f.getBoundingClientRect();b-=a.left;e-=a.top;b*=f.width/a.width;e*=f.height/a.height;return 0>b||0>e||b>=f.width||e>=f.height?[-1,-1]:this._normalizedEventToPosition(b,e)};return c}(M);v.map={s:"toString"};var ha=Object.freeze({mod:p,clamp:q,capitalize:r,format:v}),N=function(d){function c(){var b=
d.call(this)||this;b._spacingX=0;b._spacingY=0;b._hexSize=0;return b}_inheritsLoose(c,d);var a=c.prototype;a.draw=function(b,e){var f=b[2],a=b[3],k=b[4];b=[(b[0]+1)*this._spacingX,b[1]*this._spacingY+this._hexSize];this._options.transpose&&b.reverse();e&&(this._ctx.fillStyle=k,this._fill(b[0],b[1]));if(f)for(this._ctx.fillStyle=a,e=[].concat(f),f=0;f<e.length;f++)this._ctx.fillText(e[f],b[0],Math.ceil(b[1]))};a.computeSize=function(b,e){this._options.transpose&&(b+=e,e=b-e,b-=e);return[Math.floor(b/
this._spacingX)-1,Math.floor((e-2*this._hexSize)/this._spacingY+1)]};a.computeFontSize=function(b,e){this._options.transpose&&(b+=e,e=b-e,b-=e);b=Math.min(2*b/((this._options.width+1)*Math.sqrt(3))-1,e/(2+1.5*(this._options.height-1)));e=this._ctx.font;this._ctx.font="100px "+this._options.fontFamily;var f=Math.ceil(this._ctx.measureText("W").width);this._ctx.font=e;b=Math.floor(b)+1;return Math.ceil(2*b/(this._options.spacing*(1+f/100/Math.sqrt(3))))-1};a._normalizedEventToPosition=function(b,e){if(this._options.transpose){b+=
e;e=b-e;b-=e;var f=this._ctx.canvas.width}else f=this._ctx.canvas.height;e=Math.floor(e/(f/this._options.height));p(e,2)?(b-=this._spacingX,b=1+2*Math.floor(b/(2*this._spacingX))):b=2*Math.floor(b/(2*this._spacingX));return[b,e]};a._fill=function(b,e){var f=this._hexSize,a=this._options.border,k=this._ctx;k.beginPath();this._options.transpose?(k.moveTo(b-f+a,e),k.lineTo(b-f/2+a,e+this._spacingX-a),k.lineTo(b+f/2-a,e+this._spacingX-a),k.lineTo(b+f-a,e),k.lineTo(b+f/2-a,e-this._spacingX+a),k.lineTo(b-
f/2+a,e-this._spacingX+a),k.lineTo(b-f+a,e)):(k.moveTo(b,e-f+a),k.lineTo(b+this._spacingX-a,e-f/2+a),k.lineTo(b+this._spacingX-a,e+f/2-a),k.lineTo(b,e+f-a),k.lineTo(b-this._spacingX+a,e+f/2-a),k.lineTo(b-this._spacingX+a,e-f/2+a),k.lineTo(b,e-f+a));k.fill()};a._updateSize=function(){var b=this._options,e=Math.ceil(this._ctx.measureText("W").width);this._hexSize=Math.floor(b.spacing*(b.fontSize+e/Math.sqrt(3))/2);this._spacingX=this._hexSize*Math.sqrt(3)/2;this._spacingY=1.5*this._hexSize;if(b.transpose){e=
"height";var f="width"}else e="width",f="height";this._ctx.canvas[e]=Math.ceil((b.width+1)*this._spacingX);this._ctx.canvas[f]=Math.ceil((b.height-1)*this._spacingY+2*this._hexSize)};return c}(H),F=function(d){function c(){var b=d.call(this)||this;b._spacingX=0;b._spacingY=0;b._canvasCache={};return b}_inheritsLoose(c,d);var a=c.prototype;a.setOptions=function(b){d.prototype.setOptions.call(this,b);this._canvasCache={}};a.draw=function(b,e){c.cache?this._drawWithCache(b):this._drawNoCache(b,e)};a._drawWithCache=
function(b){var e=b[0],f=b[1],a=b[2],k=b[3],h=b[4];b=""+a+k+h;if(b in this._canvasCache)var c=this._canvasCache[b];else{var d=this._options.border;c=document.createElement("canvas");var g=c.getContext("2d");c.width=this._spacingX;c.height=this._spacingY;g.fillStyle=h;g.fillRect(d,d,c.width-d,c.height-d);if(a)for(g.fillStyle=k,g.font=this._ctx.font,g.textAlign="center",g.textBaseline="middle",a=[].concat(a),k=0;k<a.length;k++)g.fillText(a[k],this._spacingX/2,Math.ceil(this._spacingY/2));this._canvasCache[b]=
c}this._ctx.drawImage(c,e*this._spacingX,f*this._spacingY)};a._drawNoCache=function(b,e){var f=b[0],a=b[1],k=b[2],h=b[3];b=b[4];e&&(e=this._options.border,this._ctx.fillStyle=b,this._ctx.fillRect(f*this._spacingX+e,a*this._spacingY+e,this._spacingX-e,this._spacingY-e));if(k)for(this._ctx.fillStyle=h,k=[].concat(k),h=0;h<k.length;h++)this._ctx.fillText(k[h],(f+.5)*this._spacingX,Math.ceil((a+.5)*this._spacingY))};a.computeSize=function(b,e){return[Math.floor(b/this._spacingX),Math.floor(e/this._spacingY)]};
a.computeFontSize=function(b,e){b=Math.floor(b/this._options.width);e=Math.floor(e/this._options.height);var f=this._ctx.font;this._ctx.font="100px "+this._options.fontFamily;var a=Math.ceil(this._ctx.measureText("W").width);this._ctx.font=f;b=a/100*e/b;1<b&&(e=Math.floor(e/b));return Math.floor(e/this._options.spacing)};a._normalizedEventToPosition=function(b,e){return[Math.floor(b/this._spacingX),Math.floor(e/this._spacingY)]};a._updateSize=function(){var b=this._options,e=Math.ceil(this._ctx.measureText("W").width);
this._spacingX=Math.ceil(b.spacing*e);this._spacingY=Math.ceil(b.spacing*b.fontSize);b.forceSquareRatio&&(this._spacingX=this._spacingY=Math.max(this._spacingX,this._spacingY));this._ctx.canvas.width=b.width*this._spacingX;this._ctx.canvas.height=b.height*this._spacingY};return c}(H);F.cache=!1;var C=function(d){function c(){var b=d.call(this)||this;b._colorCanvas=document.createElement("canvas");return b}_inheritsLoose(c,d);var a=c.prototype;a.draw=function(b,e){var f=b[0],a=b[1],k=b[2],h=b[3],c=
b[4];b=this._options.tileWidth;var d=this._options.tileHeight;e&&(this._options.tileColorize?this._ctx.clearRect(f*b,a*d,b,d):(this._ctx.fillStyle=c,this._ctx.fillRect(f*b,a*d,b,d)));if(k)for(e=[].concat(k),h=[].concat(h),c=[].concat(c),k=0;k<e.length;k++){var g=this._options.tileMap[e[k]];if(!g)throw Error('Char "'+e[k]+'" not found in tileMap');if(this._options.tileColorize){var x=this._colorCanvas,w=x.getContext("2d");w.globalCompositeOperation="source-over";w.clearRect(0,0,b,d);var n=h[k],p=c[k];
w.drawImage(this._options.tileSet,g[0],g[1],b,d,0,0,b,d);"transparent"!=n&&(w.fillStyle=n,w.globalCompositeOperation="source-atop",w.fillRect(0,0,b,d));"transparent"!=p&&(w.fillStyle=p,w.globalCompositeOperation="destination-over",w.fillRect(0,0,b,d));this._ctx.drawImage(x,f*b,a*d,b,d)}else this._ctx.drawImage(this._options.tileSet,g[0],g[1],b,d,f*b,a*d,b,d)}};a.computeSize=function(b,e){return[Math.floor(b/this._options.tileWidth),Math.floor(e/this._options.tileHeight)]};a.computeFontSize=function(){throw Error("Tile backend does not understand font size");
};a._normalizedEventToPosition=function(b,e){return[Math.floor(b/this._options.tileWidth),Math.floor(e/this._options.tileHeight)]};a._updateSize=function(){var b=this._options;this._ctx.canvas.width=b.width*b.tileWidth;this._ctx.canvas.height=b.height*b.tileHeight;this._colorCanvas.width=b.tileWidth;this._colorCanvas.height=b.tileHeight};return c}(H),Q={black:[0,0,0],navy:[0,0,128],darkblue:[0,0,139],mediumblue:[0,0,205],blue:[0,0,255],darkgreen:[0,100,0],green:[0,128,0],teal:[0,128,128],darkcyan:[0,
139,139],deepskyblue:[0,191,255],darkturquoise:[0,206,209],mediumspringgreen:[0,250,154],lime:[0,255,0],springgreen:[0,255,127],aqua:[0,255,255],cyan:[0,255,255],midnightblue:[25,25,112],dodgerblue:[30,144,255],forestgreen:[34,139,34],seagreen:[46,139,87],darkslategray:[47,79,79],darkslategrey:[47,79,79],limegreen:[50,205,50],mediumseagreen:[60,179,113],turquoise:[64,224,208],royalblue:[65,105,225],steelblue:[70,130,180],darkslateblue:[72,61,139],mediumturquoise:[72,209,204],indigo:[75,0,130],darkolivegreen:[85,
107,47],cadetblue:[95,158,160],cornflowerblue:[100,149,237],mediumaquamarine:[102,205,170],dimgray:[105,105,105],dimgrey:[105,105,105],slateblue:[106,90,205],olivedrab:[107,142,35],slategray:[112,128,144],slategrey:[112,128,144],lightslategray:[119,136,153],lightslategrey:[119,136,153],mediumslateblue:[123,104,238],lawngreen:[124,252,0],chartreuse:[127,255,0],aquamarine:[127,255,212],maroon:[128,0,0],purple:[128,0,128],olive:[128,128,0],gray:[128,128,128],grey:[128,128,128],skyblue:[135,206,235],
lightskyblue:[135,206,250],blueviolet:[138,43,226],darkred:[139,0,0],darkmagenta:[139,0,139],saddlebrown:[139,69,19],darkseagreen:[143,188,143],lightgreen:[144,238,144],mediumpurple:[147,112,216],darkviolet:[148,0,211],palegreen:[152,251,152],darkorchid:[153,50,204],yellowgreen:[154,205,50],sienna:[160,82,45],brown:[165,42,42],darkgray:[169,169,169],darkgrey:[169,169,169],lightblue:[173,216,230],greenyellow:[173,255,47],paleturquoise:[175,238,238],lightsteelblue:[176,196,222],powderblue:[176,224,
230],firebrick:[178,34,34],darkgoldenrod:[184,134,11],mediumorchid:[186,85,211],rosybrown:[188,143,143],darkkhaki:[189,183,107],silver:[192,192,192],mediumvioletred:[199,21,133],indianred:[205,92,92],peru:[205,133,63],chocolate:[210,105,30],tan:[210,180,140],lightgray:[211,211,211],lightgrey:[211,211,211],palevioletred:[216,112,147],thistle:[216,191,216],orchid:[218,112,214],goldenrod:[218,165,32],crimson:[220,20,60],gainsboro:[220,220,220],plum:[221,160,221],burlywood:[222,184,135],lightcyan:[224,
255,255],lavender:[230,230,250],darksalmon:[233,150,122],violet:[238,130,238],palegoldenrod:[238,232,170],lightcoral:[240,128,128],khaki:[240,230,140],aliceblue:[240,248,255],honeydew:[240,255,240],azure:[240,255,255],sandybrown:[244,164,96],wheat:[245,222,179],beige:[245,245,220],whitesmoke:[245,245,245],mintcream:[245,255,250],ghostwhite:[248,248,255],salmon:[250,128,114],antiquewhite:[250,235,215],linen:[250,240,230],lightgoldenrodyellow:[250,250,210],oldlace:[253,245,230],red:[255,0,0],fuchsia:[255,
0,255],magenta:[255,0,255],deeppink:[255,20,147],orangered:[255,69,0],tomato:[255,99,71],hotpink:[255,105,180],coral:[255,127,80],darkorange:[255,140,0],lightsalmon:[255,160,122],orange:[255,165,0],lightpink:[255,182,193],pink:[255,192,203],gold:[255,215,0],peachpuff:[255,218,185],navajowhite:[255,222,173],moccasin:[255,228,181],bisque:[255,228,196],mistyrose:[255,228,225],blanchedalmond:[255,235,205],papayawhip:[255,239,213],lavenderblush:[255,240,245],seashell:[255,245,238],cornsilk:[255,248,220],
lemonchiffon:[255,250,205],floralwhite:[255,250,240],snow:[255,250,250],yellow:[255,255,0],lightyellow:[255,255,224],ivory:[255,255,240],white:[255,255,255]};H=Object.freeze({fromString:P,add:function(d){for(var c=d.slice(),a=arguments.length,b=Array(1<a?a-1:0),e=1;e<a;e++)b[e-1]=arguments[e];for(a=0;3>a;a++)for(e=0;e<b.length;e++)c[a]+=b[e][a];return c},add_:X,multiply:function(d){for(var c=d.slice(),a=arguments.length,b=Array(1<a?a-1:0),e=1;e<a;e++)b[e-1]=arguments[e];for(a=0;3>a;a++){for(e=0;e<
b.length;e++)c[a]*=b[e][a]/255;c[a]=Math.round(c[a])}return c},multiply_:function(d){for(var c=arguments.length,a=Array(1<c?c-1:0),b=1;b<c;b++)a[b-1]=arguments[b];for(c=0;3>c;c++){for(b=0;b<a.length;b++)d[c]*=a[b][c]/255;d[c]=Math.round(d[c])}return d},interpolate:Y,lerp:Y,interpolateHSL:Z,lerpHSL:Z,randomize:function(d,c){c instanceof Array||(c=Math.round(n.getNormal(0,c)));d=d.slice();for(var a=0;3>a;a++)d[a]+=c instanceof Array?Math.round(n.getNormal(0,c[a])):c;return d},rgb2hsl:R,hsl2rgb:aa,toRGB:function(d){return"rgb("+
d.map(function(c){return q(c,0,255)}).join(",")+")"},toHex:function(d){return"#"+d.map(function(c){return q(c,0,255).toString(16).padStart(2,"0")}).join("")}});var y=function(d){function c(){var b=d.call(this)||this;b._offset=[0,0];b._cursor=[-1,-1];b._lastColor="";return b}_inheritsLoose(c,d);var a=c.prototype;a.schedule=function(b){setTimeout(b,1E3/60)};a.setOptions=function(b){d.prototype.setOptions.call(this,b);var e=[b.width,b.height];this._offset=this.computeSize().map(function(b,a){return Math.floor((b-
e[a])/2)})};a.clear=function(){process.stdout.write("\u001b[0;48;5;"+T(this._options.bg)+"m\u001b[2J")};a.draw=function(b,e){var a=b[2],l=b[3],k=b[4],h=this._offset[0]+b[0],c=this._offset[1]+b[1];b=this.computeSize();if(!(0>h||h>=b[0]||0>c||c>=b[1])){if(h!==this._cursor[0]||c!==this._cursor[1])process.stdout.write("\u001b["+(c+1)+";"+(h+1)+"H"),this._cursor[0]=h,this._cursor[1]=c;e&&(a||(a=" "));a&&(e="\u001b[0;38;5;"+T(l)+";48;5;"+T(k)+"m",e!==this._lastColor&&(process.stdout.write(e),this._lastColor=
e),a=[].concat(a),process.stdout.write(a[0]),this._cursor[0]++,this._cursor[0]>=b[0]&&(this._cursor[0]=0,this._cursor[1]++))}};a.computeFontSize=function(){throw Error("Terminal backend has no notion of font size");};a.eventToPosition=function(b,e){return[b,e]};a.computeSize=function(){return[process.stdout.columns,process.stdout.rows]};return c}(M),ea=/%([bc]){([^}]*)}/g;M=Object.freeze({TYPE_TEXT:0,TYPE_NEWLINE:1,TYPE_FG:2,TYPE_BG:3,measure:function(d,c){var a={width:0,height:1};d=U(d,c);for(var b=
c=0;b<d.length;b++){var e=d[b];switch(e.type){case 0:c+=e.value.length;break;case 1:a.height++,a.width=Math.max(a.width,c),c=0}}a.width=Math.max(a.width,c);return a},tokenize:U});var t={4:[[0,-1],[1,0],[0,1],[-1,0]],8:[[0,-1],[1,-1],[1,0],[1,1],[0,1],[-1,1],[-1,0],[-1,-1]],6:[[-1,-1],[1,-1],[2,0],[1,1],[-1,1],[-2,0]]},ia={hex:N,rect:F,tile:C,term:y},ja={width:80,height:25,transpose:!1,layout:"rect",fontSize:15,spacing:1,border:0,forceSquareRatio:!1,fontFamily:"monospace",fontStyle:"",fg:"#ccc",bg:"#000",
tileWidth:32,tileHeight:32,tileMap:{},tileSet:null,tileColorize:!1},I=function(){function d(a){void 0===a&&(a={});this._data={};this._dirty=!1;this._options={};a=Object.assign({},ja,a);this.setOptions(a);this.DEBUG=this.DEBUG.bind(this);this._tick=this._tick.bind(this);this._backend.schedule(this._tick)}var c=d.prototype;c.DEBUG=function(a,b,e){var f=[this._options.bg,this._options.fg];this.draw(a,b,null,null,f[e%f.length])};c.clear=function(){this._data={};this._dirty=!0};c.setOptions=function(a){Object.assign(this._options,
a);if(a.width||a.height||a.fontSize||a.fontFamily||a.spacing||a.layout)a.layout&&(this._backend=new ia[a.layout]),this._backend.setOptions(this._options),this._dirty=!0;return this};c.getOptions=function(){return this._options};c.getContainer=function(){return this._backend.getContainer()};c.computeSize=function(a,b){return this._backend.computeSize(a,b)};c.computeFontSize=function(a,b){return this._backend.computeFontSize(a,b)};c.computeTileSize=function(a,b){return[Math.floor(a/this._options.width),
Math.floor(b/this._options.height)]};c.eventToPosition=function(a){if("touches"in a){var b=a.touches[0].clientX;a=a.touches[0].clientY}else b=a.clientX,a=a.clientY;return this._backend.eventToPosition(b,a)};c.draw=function(a,b,e,f,l){f||(f=this._options.fg);l||(l=this._options.bg);var k=a+","+b;this._data[k]=[a,b,e,f,l];!0!==this._dirty&&(this._dirty||(this._dirty={}),this._dirty[k]=!0)};c.drawText=function(a,b,e,f){var l=null,k=null,h=a,c=1;f||(f=this._options.width-a);for(e=U(e,f);e.length;)switch(f=
e.shift(),f.type){case 0:for(var d,g=!1,x,w=!1,n=0;n<f.value.length;n++){d=f.value.charCodeAt(n);var p=f.value.charAt(n);x=65280<d&&65377>d||65500<d&&65512>d||65518<d;d=32==p.charCodeAt(0)||12288==p.charCodeAt(0);!w||x||d||h++;x&&!g&&h++;this.draw(h++,b,p,l,k);g=d;w=x}break;case 2:l=f.value||null;break;case 3:k=f.value||null;break;case 1:h=a,b++,c++}return c};c._tick=function(){this._backend.schedule(this._tick);if(this._dirty){if(!0===this._dirty){this._backend.clear();for(var a in this._data)this._draw(a,
!1)}else for(var b in this._dirty)this._draw(b,!0);this._dirty=!1}};c._draw=function(a,b){a=this._data[a];a[4]!=this._options.bg&&(b=!0);this._backend.draw(a,b)};return d}();I.Rect=F;I.Hex=N;I.Tile=C;I.Term=y;N=function(){function d(a){this._options={words:!1,order:3,prior:.001};Object.assign(this._options,a);this._suffix=this._boundary=String.fromCharCode(0);this._prefix=[];for(a=0;a<this._options.order;a++)this._prefix.push(this._boundary);this._priorValues={};this._priorValues[this._boundary]=
this._options.prior;this._data={}}var c=d.prototype;c.clear=function(){this._data={};this._priorValues={}};c.generate=function(){for(var a=[this._sample(this._prefix)];a[a.length-1]!=this._boundary;)a.push(this._sample(a));return this._join(a.slice(0,-1))};c.observe=function(a){a=this._split(a);for(var b=0;b<a.length;b++)this._priorValues[a[b]]=this._options.prior;a=this._prefix.concat(a).concat(this._suffix);for(b=this._options.order;b<a.length;b++)for(var e=a.slice(b-this._options.order,b),f=a[b],
l=0;l<e.length;l++){var k=e.slice(l);this._observeEvent(k,f)}};c.getStats=function(){var a=[],b=Object.keys(this._priorValues).length;b--;a.push("distinct samples: "+b);b=Object.keys(this._data).length;var e=0,f;for(f in this._data)e+=Object.keys(this._data[f]).length;a.push("dictionary size (contexts): "+b);a.push("dictionary size (events): "+e);return a.join(", ")};c._split=function(a){return a.split(this._options.words?/\s+/:"")};c._join=function(a){return a.join(this._options.words?" ":"")};c._observeEvent=
function(a,b){a=this._join(a);a in this._data||(this._data[a]={});a=this._data[a];b in a||(a[b]=0);a[b]++};c._sample=function(a){a=this._backoff(a);a=this._join(a);a=this._data[a];var b={};if(this._options.prior){for(var e in this._priorValues)b[e]=this._priorValues[e];for(var f in a)b[f]+=a[f]}else b=a;return n.getWeightedValue(b)};c._backoff=function(a){for(a.length>this._options.order?a=a.slice(-this._options.order):a.length<this._options.order&&(a=this._prefix.slice(0,this._options.order-a.length).concat(a));!(this._join(a)in
this._data)&&0<a.length;)a=a.slice(1);return a};return d}();var da=function(){function d(){this._time=0;this._events=[];this._eventTimes=[]}var c=d.prototype;c.getTime=function(){return this._time};c.clear=function(){this._events=[];this._eventTimes=[];return this};c.add=function(a,b){for(var e=this._events.length,f=0;f<this._eventTimes.length;f++)if(this._eventTimes[f]>b){e=f;break}this._events.splice(e,0,a);this._eventTimes.splice(e,0,b)};c.get=function(){if(!this._events.length)return null;var a=
this._eventTimes.splice(0,1)[0];if(0<a){this._time+=a;for(var b=0;b<this._eventTimes.length;b++)this._eventTimes[b]-=a}return this._events.splice(0,1)[0]};c.getEventTime=function(a){a=this._events.indexOf(a);if(-1!=a)return this._eventTimes[a]};c.remove=function(a){a=this._events.indexOf(a);if(-1==a)return!1;this._remove(a);return!0};c._remove=function(a){this._events.splice(a,1);this._eventTimes.splice(a,1)};return d}();y=function(){function d(){this._queue=new da;this._repeat=[];this._current=null}
var c=d.prototype;c.getTime=function(){return this._queue.getTime()};c.add=function(a,b){b&&this._repeat.push(a);return this};c.getTimeOf=function(a){return this._queue.getEventTime(a)};c.clear=function(){this._queue.clear();this._repeat=[];this._current=null;return this};c.remove=function(a){var b=this._queue.remove(a),e=this._repeat.indexOf(a);-1!=e&&this._repeat.splice(e,1);this._current==a&&(this._current=null);return b};c.next=function(){return this._current=this._queue.get()};return d}();F=
function(d){function c(){return d.apply(this,arguments)||this}_inheritsLoose(c,d);var a=c.prototype;a.add=function(b,e){this._queue.add(b,0);return d.prototype.add.call(this,b,e)};a.next=function(){this._current&&-1!=this._repeat.indexOf(this._current)&&this._queue.add(this._current,0);return d.prototype.next.call(this)};return c}(y);C=function(d){function c(){return d.apply(this,arguments)||this}_inheritsLoose(c,d);var a=c.prototype;a.add=function(b,e,a){this._queue.add(b,void 0!==a?a:1/b.getSpeed());
return d.prototype.add.call(this,b,e)};a.next=function(){this._current&&-1!=this._repeat.indexOf(this._current)&&this._queue.add(this._current,1/this._current.getSpeed());return d.prototype.next.call(this)};return c}(y);y=function(d){function c(){var b=d.call(this)||this;b._defaultDuration=1;b._duration=b._defaultDuration;return b}_inheritsLoose(c,d);var a=c.prototype;a.add=function(b,e,a){this._queue.add(b,a||this._defaultDuration);return d.prototype.add.call(this,b,e)};a.clear=function(){this._duration=
this._defaultDuration;return d.prototype.clear.call(this)};a.remove=function(b){b==this._current&&(this._duration=this._defaultDuration);return d.prototype.remove.call(this,b)};a.next=function(){this._current&&-1!=this._repeat.indexOf(this._current)&&(this._queue.add(this._current,this._duration||this._defaultDuration),this._duration=this._defaultDuration);return d.prototype.next.call(this)};a.setDuration=function(b){this._current&&(this._duration=b);return this};return c}(y);F={Simple:F,Speed:C,
Action:y};var u=function(){function d(c,a){void 0===a&&(a={});this._lightPasses=c;this._options=Object.assign({topology:8},a)}d.prototype._getCircle=function(c,a,b){var e=[];switch(this._options.topology){case 4:var f=1;var l=[0,1];var k=[t[8][7],t[8][1],t[8][3],t[8][5]];break;case 6:k=t[6];f=1;l=[-1,1];break;case 8:k=t[4];f=2;l=[-1,1];break;default:throw Error("Incorrect topology for FOV computation");}c+=l[0]*b;a+=l[1]*b;for(l=0;l<k.length;l++)for(var h=0;h<b*f;h++)e.push([c,a]),c+=k[l][0],a+=k[l][1];
return e};return d}();C=function(d){function c(){return d.apply(this,arguments)||this}_inheritsLoose(c,d);var a=c.prototype;a.compute=function(b,e,a,l){l(b,e,0,1);if(this._lightPasses(b,e))for(var f=[],h,c,d,g,x,w=1;w<=a;w++)for(var n=this._getCircle(b,e,w),p=360/n.length,q=0;q<n.length;q++)if(d=n[q][0],g=n[q][1],h=p*(q-.5),c=h+p,x=!this._lightPasses(d,g),this._visibleCoords(Math.floor(h),Math.ceil(c),x,f)&&l(d,g,w,1),2==f.length&&0==f[0]&&360==f[1])return};a._visibleCoords=function(b,e,a,l){if(0>
b)return e=this._visibleCoords(0,e,a,l),b=this._visibleCoords(360+b,360,a,l),e||b;for(var f=0;f<l.length&&l[f]<b;)f++;if(f==l.length)return a&&l.push(b,e),!0;var h=0;if(f%2){for(;f<l.length&&l[f]<e;)f++,h++;if(0==h)return!1;a&&(h%2?l.splice(f-h,h,e):l.splice(f-h,h))}else{for(;f<l.length&&l[f]<e;)f++,h++;if(b==l[f-h]&&1==h)return!1;a&&(h%2?l.splice(f-h,h,b):l.splice(f-h,h,b,e))}return!0};return c}(u);y=function(d){function c(){return d.apply(this,arguments)||this}_inheritsLoose(c,d);var a=c.prototype;
a.compute=function(b,e,a,l){l(b,e,0,1);if(this._lightPasses(b,e))for(var f=[],h,c,d,g,x,n=1;n<=a;n++)for(var p=this._getCircle(b,e,n),q=p.length,r=0;r<q;r++)if(h=p[r][0],c=p[r][1],g=[r?2*r-1:2*q-1,2*q],x=[2*r+1,2*q],d=!this._lightPasses(h,c),(d=this._checkVisibility(g,x,d,f))&&l(h,c,n,d),2==f.length&&0==f[0][0]&&f[1][0]==f[1][1])return};a._checkVisibility=function(b,e,a,l){if(b[0]>e[0])return b=this._checkVisibility(b,[b[1],b[1]],a,l),e=this._checkVisibility([0,1],e,a,l),(b+e)/2;for(var f=0,h=!1;f<
l.length;){var c=l[f];c=c[0]*b[1]-b[0]*c[1];if(0<=c){0!=c||f%2||(h=!0);break}f++}c=l.length;for(var d=!1;c--;){var g=l[c];g=e[0]*g[1]-g[0]*e[1];if(0<=g){0==g&&c%2&&(d=!0);break}}g=!0;f==c&&(h||d)?g=!1:h&&d&&f+1==c&&c%2?g=!1:f>c&&f%2&&(g=!1);if(!g)return 0;h=c-f+1;if(h%2)f%2?(c=l[f],c=(e[0]*c[1]-c[0]*e[1])/(c[1]*e[1]),a&&l.splice(f,h,e)):(c=l[c],c=(c[0]*b[1]-b[0]*c[1])/(b[1]*c[1]),a&&l.splice(f,h,b));else if(f%2)d=l[f],c=l[c],c=(c[0]*d[1]-d[0]*c[1])/(d[1]*c[1]),a&&l.splice(f,h);else return a&&l.splice(f,
h,b,e),1;return c/((e[0]*b[1]-b[0]*e[1])/(b[1]*e[1]))};return c}(u);var B=[[-1,0,0,1],[0,-1,1,0],[0,-1,-1,0],[-1,0,0,-1],[1,0,0,-1],[0,1,-1,0],[0,1,1,0],[1,0,0,1]];u=function(d){function c(){return d.apply(this,arguments)||this}_inheritsLoose(c,d);var a=c.prototype;a.compute=function(b,e,a,l){l(b,e,0,1);for(var f=0;f<B.length;f++)this._renderOctant(b,e,B[f],a,l)};a.compute180=function(b,e,a,l,c){c(b,e,0,1);var f=(l-1+8)%8,k=(l+1+8)%8;this._renderOctant(b,e,B[(l-2+8)%8],a,c);this._renderOctant(b,e,
B[f],a,c);this._renderOctant(b,e,B[l],a,c);this._renderOctant(b,e,B[k],a,c)};a.compute90=function(b,e,a,c,k){k(b,e,0,1);var f=(c-1+8)%8;this._renderOctant(b,e,B[c],a,k);this._renderOctant(b,e,B[f],a,k)};a._renderOctant=function(b,e,a,c,k){this._castVisibility(b,e,1,1,0,c+1,a[0],a[1],a[2],a[3],k)};a._castVisibility=function(b,e,a,c,k,h,d,m,g,n,p){if(!(c<k))for(;a<=h;a++){for(var f=-a-1,l=-a,K=!1,V=0;0>=f;){f+=1;var x=b+f*d+l*m,w=e+f*g+l*n,q=(f-.5)/(l+.5),r=(f+.5)/(l-.5);if(!(r>c)){if(q<k)break;f*f+
l*l<h*h&&p(x,w,a,1);K?this._lightPasses(x,w)?(K=!1,c=V):V=r:!this._lightPasses(x,w)&&a<h&&(K=!0,this._castVisibility(b,e,a+1,c,q,h,d,m,g,n,p),V=r)}}if(K)break}};return c}(u);C={DiscreteShadowcasting:C,PreciseShadowcasting:y,RecursiveShadowcasting:u};u=function(){function d(c,a){void 0===c&&(c=80);void 0===a&&(a=25);this._width=c;this._height=a}d.prototype._fillMap=function(c){for(var a=[],b=0;b<this._width;b++){a.push([]);for(var e=0;e<this._height;e++)a[b].push(c)}return a};return d}();y=function(d){function c(){return d.apply(this,
arguments)||this}_inheritsLoose(c,d);c.prototype.create=function(a){for(var b=this._width-1,e=this._height-1,f=0;f<=b;f++)for(var c=0;c<=e;c++)a(f,c,f&&c&&f<b&&c<e?0:1);return this};return c}(u);var G=function(d){function c(b,e){b=d.call(this,b,e)||this;b._rooms=[];b._corridors=[];return b}_inheritsLoose(c,d);var a=c.prototype;a.getRooms=function(){return this._rooms};a.getCorridors=function(){return this._corridors};return c}(u),D=function(){},O=function(d){function c(b,e,a,c,k,h){var f=d.call(this)||
this;f._x1=b;f._y1=e;f._x2=a;f._y2=c;f._doors={};void 0!==k&&void 0!==h&&f.addDoor(k,h);return f}_inheritsLoose(c,d);c.createRandomAt=function(b,e,a,c,k){var f=k.roomWidth[0],l=k.roomWidth[1],d=n.getUniformInt(f,l);f=k.roomHeight[0];l=k.roomHeight[1];k=n.getUniformInt(f,l);if(1==a)return a=e-Math.floor(n.getUniform()*k),new this(b+1,a,b+d,a+k-1,b,e);if(-1==a)return a=e-Math.floor(n.getUniform()*k),new this(b-d,a,b-1,a+k-1,b,e);if(1==c)return a=b-Math.floor(n.getUniform()*d),new this(a,e+1,a+d-1,e+
k,b,e);if(-1==c)return a=b-Math.floor(n.getUniform()*d),new this(a,e-k,a+d-1,e-1,b,e);throw Error("dx or dy must be 1 or -1");};c.createRandomCenter=function(b,a,f){var e=f.roomWidth[0],c=f.roomWidth[1],h=n.getUniformInt(e,c);e=f.roomHeight[0];c=f.roomHeight[1];f=n.getUniformInt(e,c);b-=Math.floor(n.getUniform()*h);a-=Math.floor(n.getUniform()*f);return new this(b,a,b+h-1,a+f-1)};c.createRandom=function(b,a,f){var e=f.roomWidth[0],c=f.roomWidth[1],h=n.getUniformInt(e,c);e=f.roomHeight[0];c=f.roomHeight[1];
f=n.getUniformInt(e,c);b=b-h-1;a=a-f-1;b=1+Math.floor(n.getUniform()*b);a=1+Math.floor(n.getUniform()*a);return new this(b,a,b+h-1,a+f-1)};var a=c.prototype;a.addDoor=function(b,a){this._doors[b+","+a]=1;return this};a.getDoors=function(b){for(var a in this._doors){var f=a.split(",");b(parseInt(f[0]),parseInt(f[1]))}return this};a.clearDoors=function(){this._doors={};return this};a.addDoors=function(b){for(var a=this._x1-1,f=this._x2+1,c=this._y1-1,k=this._y2+1,h=a;h<=f;h++)for(var d=c;d<=k;d++)if(h==
a||h==f||d==c||d==k)b(h,d)||this.addDoor(h,d);return this};a.debug=function(){console.log("room",this._x1,this._y1,this._x2,this._y2)};a.isValid=function(b,a){for(var e=this._x1-1,c=this._x2+1,k=this._y1-1,h=this._y2+1,d=e;d<=c;d++)for(var m=k;m<=h;m++)if(d==e||d==c||m==k||m==h){if(!b(d,m))return!1}else if(!a(d,m))return!1;return!0};a.create=function(b){for(var a=this._x1-1,f=this._x2+1,c=this._y1-1,k=this._y2+1,h,d=a;d<=f;d++)for(var m=c;m<=k;m++)h=d+","+m in this._doors?2:d==a||d==f||m==c||m==k?
1:0,b(d,m,h)};a.getCenter=function(){return[Math.round((this._x1+this._x2)/2),Math.round((this._y1+this._y2)/2)]};a.getLeft=function(){return this._x1};a.getRight=function(){return this._x2};a.getTop=function(){return this._y1};a.getBottom=function(){return this._y2};return c}(D),W=function(d){function c(b,a,f,c){var e=d.call(this)||this;e._startX=b;e._startY=a;e._endX=f;e._endY=c;e._endsWithAWall=!0;return e}_inheritsLoose(c,d);c.createRandomAt=function(b,a,f,c,k){k=n.getUniformInt(k.corridorLength[0],
k.corridorLength[1]);return new this(b,a,b+f*k,a+c*k)};var a=c.prototype;a.debug=function(){console.log("corridor",this._startX,this._startY,this._endX,this._endY)};a.isValid=function(b,a){var e=this._startX,c=this._startY,k=this._endX-e,h=this._endY-c,d=1+Math.max(Math.abs(k),Math.abs(h));k&&(k/=Math.abs(k));h&&(h/=Math.abs(h));for(var m=h,g=-k,n=!0,p=0;p<d;p++){var q=e+p*k,r=c+p*h;a(q,r)||(n=!1);b(q+m,r+g)||(n=!1);b(q-m,r-g)||(n=!1);if(!n){d=p;this._endX=q-k;this._endY=r-h;break}}if(0==d||1==d&&
b(this._endX+k,this._endY+h))return!1;a=!b(this._endX+k+m,this._endY+h+g);m=!b(this._endX+k-m,this._endY+h-g);this._endsWithAWall=b(this._endX+k,this._endY+h);return(a||m)&&this._endsWithAWall?!1:!0};a.create=function(b){var a=this._startX,f=this._startY,c=this._endX-a,k=this._endY-f,h=1+Math.max(Math.abs(c),Math.abs(k));c&&(c/=Math.abs(c));k&&(k/=Math.abs(k));for(var d=0;d<h;d++)b(a+d*c,f+d*k,0);return!0};a.createPriorityWalls=function(b){if(this._endsWithAWall){var a=this._endX-this._startX,f=this._endY-
this._startY;a&&(a/=Math.abs(a));f&&(f/=Math.abs(f));var c=f,k=-a;b(this._endX+a,this._endY+f);b(this._endX+c,this._endY+k);b(this._endX-c,this._endY-k)}};return c}(D);D=function(d){function c(b,a,f){b=d.call(this,b,a)||this;b._options={roomWidth:[3,9],roomHeight:[3,5],roomDugPercentage:.1,timeLimit:1E3};Object.assign(b._options,f);b._map=[];b._dug=0;b._roomAttempts=20;b._corridorAttempts=20;b._connected=[];b._unconnected=[];b._digCallback=b._digCallback.bind(_assertThisInitialized(_assertThisInitialized(b)));
b._canBeDugCallback=b._canBeDugCallback.bind(_assertThisInitialized(_assertThisInitialized(b)));b._isWallCallback=b._isWallCallback.bind(_assertThisInitialized(_assertThisInitialized(b)));return b}_inheritsLoose(c,d);var a=c.prototype;a.create=function(b){for(var a=Date.now();;){if(Date.now()-a>this._options.timeLimit)return null;this._map=this._fillMap(1);this._dug=0;this._rooms=[];this._unconnected=[];this._generateRooms();if(!(2>this._rooms.length)&&this._generateCorridors())break}if(b)for(a=0;a<
this._width;a++)for(var f=0;f<this._height;f++)b(a,f,this._map[a][f]);return this};a._generateRooms=function(){var b=this._width-2,a=this._height-2;do{var f=this._generateRoom();if(this._dug/(b*a)>this._options.roomDugPercentage)break}while(f)};a._generateRoom=function(){for(var b=0;b<this._roomAttempts;){b++;var a=O.createRandom(this._width,this._height,this._options);if(a.isValid(this._isWallCallback,this._canBeDugCallback))return a.create(this._digCallback),this._rooms.push(a),a}return null};a._generateCorridors=
function(){for(var b=0;b<this._corridorAttempts;){b++;this._corridors=[];this._map=this._fillMap(1);for(var a=0;a<this._rooms.length;a++){var f=this._rooms[a];f.clearDoors();f.create(this._digCallback)}this._unconnected=n.shuffle(this._rooms.slice());this._connected=[];for(this._unconnected.length&&this._connected.push(this._unconnected.pop());;){a=n.getItem(this._connected);if(!a)break;a=this._closestRoom(this._unconnected,a);if(!a)break;f=this._closestRoom(this._connected,a);if(!f)break;if(!this._connectRooms(a,
f))break;if(!this._unconnected.length)return!0}}return!1};a._closestRoom=function(b,a){var e=Infinity;a=a.getCenter();for(var c=null,k=0;k<b.length;k++){var h=b[k],d=h.getCenter(),g=d[0]-a[0];d=d[1]-a[1];g=g*g+d*d;g<e&&(e=g,c=h)}return c};a._connectRooms=function(b,a){var f=b.getCenter(),e=a.getCenter(),c=e[0]-f[0];f=e[1]-f[1];if(Math.abs(c)<Math.abs(f)){c=0<f?2:0;var h=(c+2)%4;var d=a.getLeft();var g=a.getRight();f=0}else c=0<c?1:3,h=(c+2)%4,d=a.getTop(),g=a.getBottom(),f=1;c=this._placeInWall(b,
c);if(!c)return!1;if(c[f]>=d&&c[f]<=g){e=c.slice();d=0;switch(h){case 0:d=a.getTop()-1;break;case 1:d=a.getRight()+1;break;case 2:d=a.getBottom()+1;break;case 3:d=a.getLeft()-1}e[(f+1)%2]=d;this._digLine([c,e])}else if(c[f]<d-1||c[f]>g+1){e=c[f]-e[f];d=0;switch(h){case 0:case 1:d=0>e?3:1;break;case 2:case 3:d=0>e?1:3}e=this._placeInWall(a,(h+d)%4);if(!e)return!1;h=[0,0];h[f]=c[f];f=(f+1)%2;h[f]=e[f];this._digLine([c,h,e])}else{d=(f+1)%2;e=this._placeInWall(a,h);if(!e)return!1;h=Math.round((e[d]+c[d])/
2);g=[0,0];var n=[0,0];g[f]=c[f];g[d]=h;n[f]=e[f];n[d]=h;this._digLine([c,g,n,e])}b.addDoor(c[0],c[1]);a.addDoor(e[0],e[1]);f=this._unconnected.indexOf(b);-1!=f&&(this._unconnected.splice(f,1),this._connected.push(b));f=this._unconnected.indexOf(a);-1!=f&&(this._unconnected.splice(f,1),this._connected.push(a));return!0};a._placeInWall=function(b,a){var e=[0,0],c=[0,0],d=0;switch(a){case 0:c=[1,0];e=[b.getLeft(),b.getTop()-1];d=b.getRight()-b.getLeft()+1;break;case 1:c=[0,1];e=[b.getRight()+1,b.getTop()];
d=b.getBottom()-b.getTop()+1;break;case 2:c=[1,0];e=[b.getLeft(),b.getBottom()+1];d=b.getRight()-b.getLeft()+1;break;case 3:c=[0,1],e=[b.getLeft()-1,b.getTop()],d=b.getBottom()-b.getTop()+1}b=[];a=-2;for(var h=0;h<d;h++){var g=e[0]+h*c[0],m=e[1]+h*c[1];b.push(null);1==this._map[g][m]?a!=h-1&&(b[h]=[g,m]):(a=h)&&(b[h-1]=null)}for(e=b.length-1;0<=e;e--)b[e]||b.splice(e,1);return b.length?n.getItem(b):null};a._digLine=function(b){for(var a=1;a<b.length;a++){var f=b[a-1],c=b[a];f=new W(f[0],f[1],c[0],
c[1]);f.create(this._digCallback);this._corridors.push(f)}};a._digCallback=function(b,a,f){this._map[b][a]=f;0==f&&this._dug++};a._isWallCallback=function(b,a){return 0>b||0>a||b>=this._width||a>=this._height?!1:1==this._map[b][a]};a._canBeDugCallback=function(b,a){return 1>b||1>a||b+1>=this._width||a+1>=this._height?!1:1==this._map[b][a]};return c}(G);var E=function(d){function c(b,a,f){void 0===f&&(f={});b=d.call(this,b,a)||this;b._options={born:[5,6,7,8],survive:[4,5,6,7,8],topology:8};b.setOptions(f);
b._dirs=t[b._options.topology];b._map=b._fillMap(0);return b}_inheritsLoose(c,d);var a=c.prototype;a.randomize=function(b){for(var a=0;a<this._width;a++)for(var f=0;f<this._height;f++)this._map[a][f]=n.getUniform()<b?1:0;return this};a.setOptions=function(b){Object.assign(this._options,b)};a.set=function(b,a,f){this._map[b][a]=f};a.create=function(b){for(var a=this._fillMap(0),f=this._options.born,c=this._options.survive,d=0;d<this._height;d++){var h=1,g=0;6==this._options.topology&&(h=2,g=d%2);for(;g<
this._width;g+=h){var m=this._map[g][d],n=this._getNeighbors(g,d);m&&-1!=c.indexOf(n)?a[g][d]=1:m||-1==f.indexOf(n)||(a[g][d]=1)}}this._map=a;b&&this._serviceCallback(b)};a._serviceCallback=function(b){for(var a=0;a<this._height;a++){var f=1,c=0;6==this._options.topology&&(f=2,c=a%2);for(;c<this._width;c+=f)b(c,a,this._map[c][a])}};a._getNeighbors=function(b,a){for(var e=0,c=0;c<this._dirs.length;c++){var d=this._dirs[c],h=b+d[0];d=a+d[1];0>h||h>=this._width||0>d||d>=this._height||(e+=1==this._map[h][d]?
1:0)}return e};a.connect=function(b,a,f){a||(a=0);var e=[],c={},d=1,g=[0,0];6==this._options.topology&&(d=2,g=[0,1]);for(var m=0;m<this._height;m++)for(var p=g[m%2];p<this._width;p+=d)if(this._freeSpace(p,m,a)){var x=[p,m];c[this._pointKey(x)]=x;e.push([p,m])}d=e[n.getUniformInt(0,e.length-1)];g=this._pointKey(d);e={};e[g]=d;delete c[g];for(this._findConnected(e,c,[d],!1,a);0<Object.keys(c).length;){g=this._getFromTo(e,c);d=g[0];m=g[1];g={};g[this._pointKey(d)]=d;this._findConnected(g,c,[d],!0,a);
(6==this._options.topology?this._tunnelToConnected6:this._tunnelToConnected).call(this,m,d,e,c,a,f);for(var q in g)d=g[q],this._map[d[0]][d[1]]=a,e[q]=d,delete c[q]}b&&this._serviceCallback(b)};a._getFromTo=function(b,a){for(var e=[0,0],c=[0,0],d,h=Object.keys(b),g=Object.keys(a),m=0;5>m&&!(h.length<g.length?(e=h,c=b[e[n.getUniformInt(0,e.length-1)]],e=this._getClosest(c,a)):(e=g,e=a[e[n.getUniformInt(0,e.length-1)]],c=this._getClosest(e,b)),d=(e[0]-c[0])*(e[0]-c[0])+(e[1]-c[1])*(e[1]-c[1]),64>d);m++);
return[e,c]};a._getClosest=function(b,a){var e=null,c=null,d;for(d in a){var h=a[d],g=(h[0]-b[0])*(h[0]-b[0])+(h[1]-b[1])*(h[1]-b[1]);if(null==c||g<c)c=g,e=h}return e};a._findConnected=function(b,a,f,c,d){for(;0<f.length;){var e=f.splice(0,1)[0];e=6==this._options.topology?[[e[0]+2,e[1]],[e[0]+1,e[1]-1],[e[0]-1,e[1]-1],[e[0]-2,e[1]],[e[0]-1,e[1]+1],[e[0]+1,e[1]+1]]:[[e[0]+1,e[1]],[e[0]-1,e[1]],[e[0],e[1]+1],[e[0],e[1]-1]];for(var k=0;k<e.length;k++){var l=this._pointKey(e[k]);null==b[l]&&this._freeSpace(e[k][0],
e[k][1],d)&&(b[l]=e[k],c||delete a[l],f.push(e[k]))}}};a._tunnelToConnected=function(b,a,f,c,d,h){if(a[0]<b[0]){var e=a;var k=b}else e=b,k=a;for(var l=e[0];l<=k[0];l++){this._map[l][e[1]]=d;var g=[l,e[1]],n=this._pointKey(g);f[n]=g;delete c[n]}h&&e[0]<k[0]&&h(e,[k[0],e[1]]);l=k[0];a[1]<b[1]?(e=a,k=b):(e=b,k=a);for(b=e[1];b<k[1];b++)this._map[l][b]=d,a=[l,b],g=this._pointKey(a),f[g]=a,delete c[g];h&&e[1]<k[1]&&h([k[0],e[1]],[k[0],k[1]])};a._tunnelToConnected6=function(b,a,f,c,d,h){if(a[0]<b[0]){var e=
a;var k=b}else e=b,k=a;var l=e[0];for(e=e[1];l!=k[0]||e!=k[1];){var g=2;e<k[1]?(e++,g=1):e>k[1]&&(e--,g=1);l=l<k[0]?l+g:l>k[0]?l-g:k[1]%2?l-g:l+g;this._map[l][e]=d;g=[l,e];var n=this._pointKey(g);f[n]=g;delete c[n]}h&&h(a,b)};a._freeSpace=function(b,a,f){return 0<=b&&b<this._width&&0<=a&&a<this._height&&this._map[b][a]==f};a._pointKey=function(b){return b[0]+"."+b[1]};return c}(u),ka={room:O,corridor:W};G=function(d){function c(b,a,f){void 0===f&&(f={});b=d.call(this,b,a)||this;b._options=Object.assign({roomWidth:[3,
9],roomHeight:[3,5],corridorLength:[3,10],dugPercentage:.2,timeLimit:1E3},f);b._features={room:4,corridor:4};b._map=[];b._featureAttempts=20;b._walls={};b._dug=0;b._digCallback=b._digCallback.bind(_assertThisInitialized(_assertThisInitialized(b)));b._canBeDugCallback=b._canBeDugCallback.bind(_assertThisInitialized(_assertThisInitialized(b)));b._isWallCallback=b._isWallCallback.bind(_assertThisInitialized(_assertThisInitialized(b)));b._priorityWallCallback=b._priorityWallCallback.bind(_assertThisInitialized(_assertThisInitialized(b)));
return b}_inheritsLoose(c,d);var a=c.prototype;a.create=function(b){this._rooms=[];this._corridors=[];this._map=this._fillMap(1);this._walls={};this._dug=0;var a=(this._width-2)*(this._height-2);this._firstRoom();var f=Date.now();do{var c=0;if(Date.now()-f>this._options.timeLimit)break;var d=this._findWall();if(!d)break;var h=d.split(",");d=parseInt(h[0]);h=parseInt(h[1]);var g=this._getDiggingDirection(d,h);if(g){var m=0;do if(m++,this._tryFeature(d,h,g[0],g[1])){this._removeSurroundingWalls(d,h);
this._removeSurroundingWalls(d-g[0],h-g[1]);break}while(m<this._featureAttempts);for(var n in this._walls)1<this._walls[n]&&c++}}while(this._dug/a<this._options.dugPercentage||c);this._addDoors();if(b)for(a=0;a<this._width;a++)for(f=0;f<this._height;f++)b(a,f,this._map[a][f]);this._walls={};this._map=[];return this};a._digCallback=function(b,a,f){0==f||2==f?(this._map[b][a]=0,this._dug++):this._walls[b+","+a]=1};a._isWallCallback=function(b,a){return 0>b||0>a||b>=this._width||a>=this._height?!1:1==
this._map[b][a]};a._canBeDugCallback=function(b,a){return 1>b||1>a||b+1>=this._width||a+1>=this._height?!1:1==this._map[b][a]};a._priorityWallCallback=function(b,a){this._walls[b+","+a]=2};a._firstRoom=function(){var b=O.createRandomCenter(Math.floor(this._width/2),Math.floor(this._height/2),this._options);this._rooms.push(b);b.create(this._digCallback)};a._findWall=function(){var b=[],a=[],f;for(f in this._walls)2==this._walls[f]?a.push(f):b.push(f);b=a.length?a:b;if(!b.length)return null;b=n.getItem(b.sort());
delete this._walls[b];return b};a._tryFeature=function(b,a,f,c){var e=n.getWeightedValue(this._features);b=ka[e].createRandomAt(b,a,f,c,this._options);if(!b.isValid(this._isWallCallback,this._canBeDugCallback))return!1;b.create(this._digCallback);b instanceof O&&this._rooms.push(b);b instanceof W&&(b.createPriorityWalls(this._priorityWallCallback),this._corridors.push(b));return!0};a._removeSurroundingWalls=function(b,a){for(var e=t[4],c=0;c<e.length;c++){var d=e[c],h=b+d[0],g=a+d[1];delete this._walls[h+
","+g];h=b+2*d[0];g=a+2*d[1];delete this._walls[h+","+g]}};a._getDiggingDirection=function(b,a){if(0>=b||0>=a||b>=this._width-1||a>=this._height-1)return null;for(var e=null,c=t[4],d=0;d<c.length;d++){var h=c[d];if(!this._map[b+h[0]][a+h[1]]){if(e)return null;e=h}}return e?[-e[0],-e[1]]:null};a._addDoors=function(){function b(b,e){return 1==a[b][e]}for(var a=this._map,f=0;f<this._rooms.length;f++){var c=this._rooms[f];c.clearDoors();c.addDoors(b)}};return c}(G);var la=function(d){function c(){return d.apply(this,
arguments)||this}_inheritsLoose(c,d);c.prototype.create=function(a){for(var b=this._fillMap(1),e=Math.ceil((this._width-2)/2),f=[],c=[],d=0;d<e;d++)f.push(d),c.push(d);f.push(e-1);for(d=1;d+3<this._height;d+=2)for(var h=0;h<e;h++){var g=2*h+1,m=d;b[g][m]=0;h!=f[h+1]&&.375<n.getUniform()&&(ba(h,f,c),b[g+1][m]=0);h!=f[h]&&.375<n.getUniform()?ca(h,f,c):b[g][m+1]=0}for(h=0;h<e;h++)g=2*h+1,m=d,b[g][m]=0,h!=f[h+1]&&(h==f[h]||.375<n.getUniform())&&(ba(h,f,c),b[g+1][m]=0),ca(h,f,c);for(e=0;e<this._width;e++)for(f=
0;f<this._height;f++)a(e,f,b[e][f]);return this};return c}(u),ma=function(d){function c(){var b=d.apply(this,arguments)||this;b._stack=[];b._map=[];return b}_inheritsLoose(c,d);var a=c.prototype;a.create=function(b){var a=this._width,c=this._height;this._map=[];for(var d=0;d<a;d++){this._map.push([]);for(var k=0;k<c;k++)this._map[d].push(0==d||0==k||d+1==a||k+1==c?1:0)}this._stack=[[1,1,a-2,c-2]];this._process();for(d=0;d<a;d++)for(k=0;k<c;k++)b(d,k,this._map[d][k]);this._map=[];return this};a._process=
function(){for(;this._stack.length;){var b=this._stack.shift();this._partitionRoom(b)}};a._partitionRoom=function(b){for(var a=[],c=[],d=b[0]+1;d<b[2];d++){var k=this._map[d][b[3]+1];!this._map[d][b[1]-1]||!k||d%2||a.push(d)}for(d=b[1]+1;d<b[3];d++)k=this._map[b[2]+1][d],!this._map[b[0]-1][d]||!k||d%2||c.push(d);if(a.length&&c.length){a=n.getItem(a);c=n.getItem(c);this._map[a][c]=1;d=[];k=[];d.push(k);for(var h=b[0];h<a;h++)this._map[h][c]=1,k.push([h,c]);k=[];d.push(k);for(h=a+1;h<=b[2];h++)this._map[h][c]=
1,k.push([h,c]);k=[];d.push(k);for(h=b[1];h<c;h++)this._map[a][h]=1,k.push([a,h]);k=[];d.push(k);for(h=c+1;h<=b[3];h++)this._map[a][h]=1,k.push([a,h]);k=n.getItem(d);for(h=0;h<d.length;h++){var g=d[h];g!=k&&(g=n.getItem(g),this._map[g[0]][g[1]]=0)}this._stack.push([b[0],b[1],a-1,c-1]);this._stack.push([a+1,b[1],b[2],c-1]);this._stack.push([b[0],c+1,a-1,b[3]]);this._stack.push([a+1,c+1,b[2],b[3]])}};return c}(u),na=function(d){function c(b,a,c){void 0===c&&(c=0);b=d.call(this,b,a)||this;b._regularity=
c;b._map=[];return b}_inheritsLoose(c,d);var a=c.prototype;a.create=function(b){var a=this._width,c=this._height,d=this._fillMap(1);a-=a%2?1:2;c-=c%2?1:2;var k=0,h=[[0,0],[0,0],[0,0],[0,0]];do{var g=1+2*Math.floor(n.getUniform()*(a-1)/2);var m=1+2*Math.floor(n.getUniform()*(c-1)/2);k||(d[g][m]=0);if(!d[g][m]){this._randomize(h);do{0==Math.floor(n.getUniform()*(this._regularity+1))&&this._randomize(h);var p=!0;for(var q=0;4>q;q++){var r=g+2*h[q][0];var A=m+2*h[q][1];if(this._isFree(d,r,A,a,c)){d[r][A]=
0;d[g+h[q][0]][m+h[q][1]]=0;g=r;m=A;p=!1;k++;break}}}while(!p)}}while(k+1<a*c/4);for(a=0;a<this._width;a++)for(c=0;c<this._height;c++)b(a,c,d[a][c]);this._map=[];return this};a._randomize=function(b){for(var a=0;4>a;a++)b[a][0]=0,b[a][1]=0;switch(Math.floor(4*n.getUniform())){case 0:b[0][0]=-1;b[1][0]=1;b[2][1]=-1;b[3][1]=1;break;case 1:b[3][0]=-1;b[2][0]=1;b[1][1]=-1;b[0][1]=1;break;case 2:b[2][0]=-1;b[3][0]=1;b[0][1]=-1;b[1][1]=1;break;case 3:b[1][0]=-1,b[0][0]=1,b[3][1]=-1,b[2][1]=1}};a._isFree=
function(b,a,c,d,k){return 1>a||1>c||a>=d||c>=k?!1:b[a][c]};return c}(u);u=function(d){function c(b,a,c){b=d.call(this,b,a)||this;b.map=[];b.rooms=[];b.connectedCells=[];c=Object.assign({cellWidth:3,cellHeight:3},c);c.hasOwnProperty("roomWidth")||(c.roomWidth=b._calculateRoomSize(b._width,c.cellWidth));c.hasOwnProperty("roomHeight")||(c.roomHeight=b._calculateRoomSize(b._height,c.cellHeight));b._options=c;return b}_inheritsLoose(c,d);var a=c.prototype;a.create=function(b){this.map=this._fillMap(1);
this.rooms=[];this.connectedCells=[];this._initRooms();this._connectRooms();this._connectUnconnectedRooms();this._createRandomRoomConnections();this._createRooms();this._createCorridors();if(b)for(var a=0;a<this._width;a++)for(var c=0;c<this._height;c++)b(a,c,this.map[a][c]);return this};a._calculateRoomSize=function(b,a){var c=Math.floor(b/a*.8);b=Math.floor(b/a*.25);2>b&&(b=2);2>c&&(c=2);return[b,c]};a._initRooms=function(){for(var b=0;b<this._options.cellWidth;b++){this.rooms.push([]);for(var a=
0;a<this._options.cellHeight;a++)this.rooms[b].push({x:0,y:0,width:0,height:0,connections:[],cellx:b,celly:a})}};a._connectRooms=function(){var b=n.getUniformInt(0,this._options.cellWidth-1),a=n.getUniformInt(0,this._options.cellHeight-1);do{var c=[0,2,4,6];c=n.shuffle(c);do{var d=!1;var k=c.pop();var h=b+t[8][k][0];k=a+t[8][k][1];if(!(0>h||h>=this._options.cellWidth||0>k||k>=this._options.cellHeight)){var g=this.rooms[b][a];if(0<g.connections.length&&g.connections[0][0]==h&&g.connections[0][1]==
k)break;g=this.rooms[h][k];0==g.connections.length&&(g.connections.push([b,a]),this.connectedCells.push([h,k]),b=h,a=k,d=!0)}}while(0<c.length&&0==d)}while(0<c.length)};a._connectUnconnectedRooms=function(){var b=this._options.cellWidth,a=this._options.cellHeight;this.connectedCells=n.shuffle(this.connectedCells);for(var c,d,k,h=0;h<this._options.cellWidth;h++)for(var g=0;g<this._options.cellHeight;g++)if(c=this.rooms[h][g],0==c.connections.length){var m=[0,2,4,6];m=n.shuffle(m);k=!1;do{var p=m.pop(),
q=h+t[8][p][0];p=g+t[8][p][1];if(!(0>q||q>=b||0>p||p>=a)){d=this.rooms[q][p];k=!0;if(0==d.connections.length)break;for(q=0;q<d.connections.length;q++)if(d.connections[q][0]==h&&d.connections[q][1]==g){k=!1;break}if(k)break}}while(m.length);k?c.connections.push([d.cellx,d.celly]):console.log("-- Unable to connect room.")}};a._createRandomRoomConnections=function(){};a._createRooms=function(){for(var b=this._width,a=this._height,c=this._options.cellWidth,d=this._options.cellHeight,k=Math.floor(this._width/
c),h=Math.floor(this._height/d),g,m,p=this._options.roomWidth,q=this._options.roomHeight,r,A,z,t=0;t<c;t++)for(var u=0;u<d;u++){r=k*t;A=h*u;0==r&&(r=1);0==A&&(A=1);g=n.getUniformInt(p[0],p[1]);m=n.getUniformInt(q[0],q[1]);if(0<u)for(z=this.rooms[t][u-1];3>A-(z.y+z.height);)A++;if(0<t)for(z=this.rooms[t-1][u];3>r-(z.x+z.width);)r++;z=Math.round(n.getUniformInt(0,k-g)/2);for(var v=Math.round(n.getUniformInt(0,h-m)/2);r+z+g>=b;)z?z--:g--;for(;A+v+m>=a;)v?v--:m--;r+=z;A+=v;this.rooms[t][u].x=r;this.rooms[t][u].y=
A;this.rooms[t][u].width=g;this.rooms[t][u].height=m;for(z=r;z<r+g;z++)for(v=A;v<A+m;v++)this.map[z][v]=0}};a._getWallPosition=function(b,a){if(1==a||3==a){var c=n.getUniformInt(b.x+1,b.x+b.width-2);if(1==a){var e=b.y-2;b=e+1}else e=b.y+b.height+1,b=e-1;this.map[c][b]=0}else e=n.getUniformInt(b.y+1,b.y+b.height-2),2==a?(c=b.x+b.width+1,b=c-1):(c=b.x-2,b=c+1),this.map[b][e]=0;return[c,e]};a._drawCorridor=function(b,a){var c=a[0]-b[0],e=a[1]-b[1];a=b[0];b=b[1];var d=[];var h=Math.abs(c);var g=Math.abs(e);
var m=n.getUniform();var p=1-m;c=0<c?2:6;e=0<e?4:0;h<g?(m=Math.ceil(g*m),d.push([e,m]),d.push([c,h]),m=Math.floor(g*p),d.push([e,m])):(m=Math.ceil(h*m),d.push([c,m]),d.push([e,g]),m=Math.floor(h*p),d.push([c,m]));for(this.map[a][b]=0;0<d.length;)for(h=d.pop();0<h[1];)a+=t[8][h[0]][0],b+=t[8][h[0]][1],this.map[a][b]=0,--h[1]};a._createCorridors=function(){for(var b=this._options.cellWidth,a=this._options.cellHeight,c,d,g,h,p=0;p<b;p++)for(var m=0;m<a;m++){c=this.rooms[p][m];for(var n=0;n<c.connections.length;n++)d=
c.connections[n],d=this.rooms[d[0]][d[1]],d.cellx>c.cellx?(g=2,h=4):d.cellx<c.cellx?(g=4,h=2):d.celly>c.celly?(g=3,h=1):(g=1,h=3),this._drawCorridor(this._getWallPosition(c,g),this._getWallPosition(d,h))}};return c}(u);y={Arena:y,Uniform:D,Cellular:E,Digger:G,EllerMaze:la,DividedMaze:ma,IceyMaze:na,Rogue:u};var oa=.5*(Math.sqrt(3)-1),J=(3-Math.sqrt(3))/6;u={Simplex:function(d){function c(a){void 0===a&&(a=256);var b=d.call(this)||this;b._gradients=[[0,-1],[1,-1],[1,0],[1,1],[0,1],[-1,1],[-1,0],[-1,
-1]];for(var c=[],f=0;f<a;f++)c.push(f);c=n.shuffle(c);b._perms=[];b._indexes=[];for(f=0;f<2*a;f++)b._perms.push(c[f%a]),b._indexes.push(b._perms[f]%b._gradients.length);return b}_inheritsLoose(c,d);c.prototype.get=function(a,b){var c=this._perms,d=this._indexes,g=c.length/2,k=0,h=0,n=0,m=(a+b)*oa,q=Math.floor(a+m);var r=Math.floor(b+m);var t=(q+r)*J;m=a-(q-t);var u=b-(r-t);if(m>u){var v=1;var y=0}else v=0,y=1;t=m-v+J;var C=u-y+J;b=m-1+2*J;a=u-1+2*J;q=p(q,g);g=p(r,g);var B=.5-m*m-u*u;0<=B&&(B*=B,
r=d[q+c[g]],k=this._gradients[r],k=B*B*(k[0]*m+k[1]*u));m=.5-t*t-C*C;0<=m&&(m*=m,r=d[q+v+c[g+y]],h=this._gradients[r],h=m*m*(h[0]*t+h[1]*C));m=.5-b*b-a*a;0<=m&&(m*=m,r=d[q+1+c[g+1]],c=this._gradients[r],n=m*m*(c[0]*b+c[1]*a));return 70*(k+h+n)};return c}(function(){})};E=function(){function d(c,a,b,e){void 0===e&&(e={});this._toX=c;this._toY=a;this._passableCallback=b;this._options=Object.assign({topology:8},e);this._dirs=t[this._options.topology];8==this._options.topology&&(this._dirs=[this._dirs[0],
this._dirs[2],this._dirs[4],this._dirs[6],this._dirs[1],this._dirs[3],this._dirs[5],this._dirs[7]])}d.prototype._getNeighbors=function(c,a){for(var b=[],e=0;e<this._dirs.length;e++){var d=this._dirs[e],g=c+d[0];d=a+d[1];this._passableCallback(g,d)&&b.push([g,d])}return b};return d}();D=function(d){function c(a,c,f,g){f=d.call(this,a,c,f,g)||this;f._computed={};f._todo=[];f._add(a,c,null);return f}_inheritsLoose(c,d);var a=c.prototype;a.compute=function(a,c,d){var b=a+","+c;b in this._computed||this._compute(a,
c);if(b in this._computed)for(a=this._computed[b];a;)d(a.x,a.y),a=a.prev};a._compute=function(a,c){for(;this._todo.length;){var b=this._todo.shift();if(b.x==a&&b.y==c)break;for(var d=this._getNeighbors(b.x,b.y),e=0;e<d.length;e++){var h=d[e],g=h[0];h=h[1];g+","+h in this._computed||this._add(g,h,b)}}};a._add=function(a,c,d){d={x:a,y:c,prev:d};this._computed[a+","+c]=d;this._todo.push(d)};return c}(E);E=function(d){function c(a,c,f,g){void 0===g&&(g={});a=d.call(this,a,c,f,g)||this;a._todo=[];a._done=
{};return a}_inheritsLoose(c,d);var a=c.prototype;a.compute=function(a,c,d){this._todo=[];this._done={};this._fromX=a;this._fromY=c;for(this._add(this._toX,this._toY,null);this._todo.length;){var b=this._todo.shift(),e=b.x+","+b.y;if(!(e in this._done)){this._done[e]=b;if(b.x==a&&b.y==c)break;e=this._getNeighbors(b.x,b.y);for(var f=0;f<e.length;f++){var g=e[f],m=g[0];g=g[1];m+","+g in this._done||this._add(m,g,b)}}}if(a=this._done[a+","+c])for(;a;)d(a.x,a.y),a=a.prev};a._add=function(a,c,d){var b=
this._distance(a,c);a={x:a,y:c,prev:d,g:d?d.g+1:0,h:b};c=a.g+a.h;for(d=0;d<this._todo.length;d++){var e=this._todo[d],f=e.g+e.h;if(c<f||c==f&&b<e.h){this._todo.splice(d,0,a);return}}this._todo.push(a)};a._distance=function(a,c){switch(this._options.topology){case 4:return Math.abs(a-this._fromX)+Math.abs(c-this._fromY);case 6:return c=Math.abs(c-this._fromY),c+Math.max(0,(Math.abs(a-this._fromX)-c)/2);case 8:return Math.max(Math.abs(a-this._fromX),Math.abs(c-this._fromY))}};return c}(E);D={Dijkstra:D,
AStar:E};E=function(){function d(a){this._scheduler=a;this._lock=1}var c=d.prototype;c.start=function(){return this.unlock()};c.lock=function(){this._lock++;return this};c.unlock=function(){if(!this._lock)throw Error("Cannot unlock unlocked engine");for(this._lock--;!this._lock;){var a=this._scheduler.next();if(!a)return this.lock();(a=a.act())&&a.then&&(this.lock(),a.then(this.unlock.bind(this)))}return this};return d}();G=function(){function d(a,b){void 0===b&&(b={});this._reflectivityCallback=
a;this._options={};b=Object.assign({passes:1,emissionThreshold:100,range:10},b);this._lights={};this._reflectivityCache={};this._fovCache={};this.setOptions(b)}var c=d.prototype;c.setOptions=function(a){Object.assign(this._options,a);a&&a.range&&this.reset();return this};c.setFOV=function(a){this._fov=a;this._fovCache={};return this};c.setLight=function(a,b,c){a=a+","+b;c?this._lights[a]="string"==typeof c?P(c):c:delete this._lights[a];return this};c.clearLights=function(){this._lights={}};c.reset=
function(){this._reflectivityCache={};this._fovCache={};return this};c.compute=function(a){var b={},c={},d={},g;for(g in this._lights){var k=this._lights[g];c[g]=[0,0,0];X(c[g],k)}for(g=0;g<this._options.passes;g++)this._emitLight(c,d,b),g+1!=this._options.passes&&(c=this._computeEmitters(d,b));for(var h in d)c=h.split(","),b=parseInt(c[0]),c=parseInt(c[1]),a(b,c,d[h]);return this};c._emitLight=function(a,b,c){for(var d in a){var e=d.split(","),g=parseInt(e[0]);e=parseInt(e[1]);this._emitLightFromCell(g,
e,a[d],b);c[d]=1}return this};c._computeEmitters=function(a,b){var c={},d;for(d in a)if(!(d in b)){var g=a[d];if(d in this._reflectivityCache)var k=this._reflectivityCache[d];else{var h=d.split(",");k=parseInt(h[0]);h=parseInt(h[1]);k=this._reflectivityCallback(k,h);this._reflectivityCache[d]=k}if(0!=k){h=[0,0,0];for(var n=0,m=0;3>m;m++){var p=Math.round(g[m]*k);h[m]=p;n+=p}n>this._options.emissionThreshold&&(c[d]=h)}}return c};c._emitLightFromCell=function(a,b,c,d){var e=a+","+b;a=e in this._fovCache?
this._fovCache[e]:this._updateFOV(a,b);for(var f in a){b=a[f];f in d?e=d[f]:(e=[0,0,0],d[f]=e);for(var g=0;3>g;g++)e[g]+=Math.round(c[g]*b)}return this};c._updateFOV=function(a,b){var c={};this._fovCache[a+","+b]=c;var d=this._options.range;this._fov.compute(a,b,d,function(a,b,e,f){e=f*(1-e/d);0!=e&&(c[a+","+b]=e)}.bind(this));return c};return d}();g.Util=ha;g.Color=H;g.Text=M;g.RNG=n;g.Display=I;g.StringGenerator=N;g.EventQueue=da;g.Scheduler=F;g.FOV=C;g.Map=y;g.Noise=u;g.Path=D;g.Engine=E;g.Lighting=
G;g.DEFAULT_WIDTH=80;g.DEFAULT_HEIGHT=25;g.DIRS=t;g.KEYS={VK_CANCEL:3,VK_HELP:6,VK_BACK_SPACE:8,VK_TAB:9,VK_CLEAR:12,VK_RETURN:13,VK_ENTER:14,VK_SHIFT:16,VK_CONTROL:17,VK_ALT:18,VK_PAUSE:19,VK_CAPS_LOCK:20,VK_ESCAPE:27,VK_SPACE:32,VK_PAGE_UP:33,VK_PAGE_DOWN:34,VK_END:35,VK_HOME:36,VK_LEFT:37,VK_UP:38,VK_RIGHT:39,VK_DOWN:40,VK_PRINTSCREEN:44,VK_INSERT:45,VK_DELETE:46,VK_0:48,VK_1:49,VK_2:50,VK_3:51,VK_4:52,VK_5:53,VK_6:54,VK_7:55,VK_8:56,VK_9:57,VK_COLON:58,VK_SEMICOLON:59,VK_LESS_THAN:60,VK_EQUALS:61,
VK_GREATER_THAN:62,VK_QUESTION_MARK:63,VK_AT:64,VK_A:65,VK_B:66,VK_C:67,VK_D:68,VK_E:69,VK_F:70,VK_G:71,VK_H:72,VK_I:73,VK_J:74,VK_K:75,VK_L:76,VK_M:77,VK_N:78,VK_O:79,VK_P:80,VK_Q:81,VK_R:82,VK_S:83,VK_T:84,VK_U:85,VK_V:86,VK_W:87,VK_X:88,VK_Y:89,VK_Z:90,VK_CONTEXT_MENU:93,VK_NUMPAD0:96,VK_NUMPAD1:97,VK_NUMPAD2:98,VK_NUMPAD3:99,VK_NUMPAD4:100,VK_NUMPAD5:101,VK_NUMPAD6:102,VK_NUMPAD7:103,VK_NUMPAD8:104,VK_NUMPAD9:105,VK_MULTIPLY:106,VK_ADD:107,VK_SEPARATOR:108,VK_SUBTRACT:109,VK_DECIMAL:110,VK_DIVIDE:111,
VK_F1:112,VK_F2:113,VK_F3:114,VK_F4:115,VK_F5:116,VK_F6:117,VK_F7:118,VK_F8:119,VK_F9:120,VK_F10:121,VK_F11:122,VK_F12:123,VK_F13:124,VK_F14:125,VK_F15:126,VK_F16:127,VK_F17:128,VK_F18:129,VK_F19:130,VK_F20:131,VK_F21:132,VK_F22:133,VK_F23:134,VK_F24:135,VK_NUM_LOCK:144,VK_SCROLL_LOCK:145,VK_CIRCUMFLEX:160,VK_EXCLAMATION:161,VK_DOUBLE_QUOTE:162,VK_HASH:163,VK_DOLLAR:164,VK_PERCENT:165,VK_AMPERSAND:166,VK_UNDERSCORE:167,VK_OPEN_PAREN:168,VK_CLOSE_PAREN:169,VK_ASTERISK:170,VK_PLUS:171,VK_PIPE:172,VK_HYPHEN_MINUS:173,
VK_OPEN_CURLY_BRACKET:174,VK_CLOSE_CURLY_BRACKET:175,VK_TILDE:176,VK_COMMA:188,VK_PERIOD:190,VK_SLASH:191,VK_BACK_QUOTE:192,VK_OPEN_BRACKET:219,VK_BACK_SLASH:220,VK_CLOSE_BRACKET:221,VK_QUOTE:222,VK_META:224,VK_ALTGR:225,VK_WIN:91,VK_KANA:21,VK_HANGUL:21,VK_EISU:22,VK_JUNJA:23,VK_FINAL:24,VK_HANJA:25,VK_KANJI:25,VK_CONVERT:28,VK_NONCONVERT:29,VK_ACCEPT:30,VK_MODECHANGE:31,VK_SELECT:41,VK_PRINT:42,VK_EXECUTE:43,VK_SLEEP:95};Object.defineProperty(g,"__esModule",{value:!0})});