UNPKG

domino-engine

Version:

Domino Engine to create Domino Games. The library would generate all the tiles and structures to easily create one of the multiple domino games.

3 lines (2 loc) 2 kB
var e;(e=exports.Pips||(exports.Pips={})).blank="0",e.one="1",e.two="2",e.tree="3",e.four="4",e.five="5",e.six="6",e.seven="7",e.eight="8",e.nine="9",e.ten="10",e.eleven="11",e.twelve="12";var t=Object.keys(exports.Pips).map(function(e){return Number(exports.Pips[e])}),n=Object.keys(exports.Pips).reduce(function(e,t){return e[exports.Pips[t]]=t,e},{}),o=Object.keys(exports.Pips).reduce(function(e,t){return e[t]=Number(exports.Pips[t]),e},{}),s=function(e,t){var n=this;this.isDouble=!1,this.connected=new Set,this.isRoot=!1,this.value=function(){return[].concat(n.values)},this.toString=function(){return"["+n.values[0]+","+n.values[1]+"]"},this.has=function(e){return n.values.includes(e)},this.canAttach=function(e){var t=e.value(),o=t[1];return!(!n.has(t[0])&&!n.has(o))&&(n.isDouble?n.connected.size<=4:n.connected.size<=2)},this.attach=function(e,t,o){void 0===o&&(o={});var s=[].concat(n.connected).filter(function(e){return e.value===t}).length,r=n.isDouble?s<3:s<2;return!!(n.canAttach(e)&&e.canAttach(n)&&r)&&(n.connected.add({value:t,tile:e}),o.clean||e.attach(n,t,{clean:!0}),!0)},this.attached=function(){return[].concat(n.connected)},this.values=[e,t],e===t&&(this.isDouble=!0)},r=function(e){for(var o=new Set,r=Number(e||t[t.length-1]);r>-1;r--){var i=exports.Pips[n[r]],a=new s(i,i);o.add(a);for(var u=r-1;u>-1;u--){var c=exports.Pips[n[u]],h=new s(i,c);o.add(h)}}return o};exports.Box=function(e){var t=this;void 0===e&&(e={}),this.next=function(e){void 0===e&&(e=1);for(var n=[];e>0;){var o=t.box.pop();n.push(o),e--}return n},this.draw=function(){return t.box.splice(~~(Math.random()*t.box.length),1)},this.suffle=function(){for(var e=[];0!==t.box.length;){var n=~~(Math.random()*t.box.length);e.push(t.box[n]),t.box.splice(n,1)}t.box=e},this.valueOf=function(){return[].concat(t.box)},this.box=[].concat((e.box||r(e.level)).values())},exports.KeysToValues=o,exports.Tile=s,exports.Values=t,exports.ValuesToKeys=n,exports.generateSuite=r; //# sourceMappingURL=index.js.map