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.09 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).dominoEngine={})}(this,function(e){var t;(t=e.Pips||(e.Pips={})).blank="0",t.one="1",t.two="2",t.tree="3",t.four="4",t.five="5",t.six="6",t.seven="7",t.eight="8",t.nine="9",t.ten="10",t.eleven="11",t.twelve="12";var n=Object.keys(e.Pips).map(function(t){return Number(e.Pips[t])}),i=Object.keys(e.Pips).reduce(function(t,n){return t[e.Pips[n]]=n,t},{}),o=Object.keys(e.Pips).reduce(function(t,n){return t[n]=Number(e.Pips[n]),t},{}),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(),i=t[1];return!(!n.has(t[0])&&!n.has(i))&&(n.isDouble?n.connected.size<=4:n.connected.size<=2)},this.attach=function(e,t,i){void 0===i&&(i={});var o=[].concat(n.connected).filter(function(e){return e.value===t}).length,s=n.isDouble?o<3:o<2;return!!(n.canAttach(e)&&e.canAttach(n)&&s)&&(n.connected.add({value:t,tile:e}),i.clean||e.attach(n,t,{clean:!0}),!0)},this.attached=function(){return[].concat(n.connected)},this.values=[e,t],e===t&&(this.isDouble=!0)},u=function(t){for(var o=new Set,u=Number(t||n[n.length-1]);u>-1;u--){var a=e.Pips[i[u]],c=new s(a,a);o.add(c);for(var r=u-1;r>-1;r--){var l=new s(a,e.Pips[i[r]]);o.add(l)}}return o};e.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 i=t.box.pop();n.push(i),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||u(e.level)).values())},e.KeysToValues=o,e.Tile=s,e.Values=n,e.ValuesToKeys=i,e.generateSuite=u}); //# sourceMappingURL=index.umd.js.map