UNPKG

matrix-engine-wgpu

Version:

+HOTFIX raycast, webGPU powered pwa application. Crazy fast rendering with AmmoJS physics support. Simple raycaster hit object added.

1,423 lines (1,403 loc) 376 kB
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.myDom = exports.dices = void 0; var _world = _interopRequireDefault(require("../../../src/world.js")); var _loaderObj = require("../../../src/engine/loader-obj.js"); var _utils = require("../../../src/engine/utils.js"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } let dices = exports.dices = { C: 0, STATUS: 'FREE_TO_PLAY', STATUS_H2: 'WAIT', STATUS_H3: 'WAIT', R: {}, SAVED_DICES: {}, pickDice: dice => { (void 0).SAVED_DICES[dice] = (void 0).R[dice]; }, checkAll: function () { this.C++; if (typeof this.R.CubePhysics1 != 'undefined' && typeof this.R.CubePhysics2 != 'undefined' && typeof this.R.CubePhysics3 != 'undefined' && typeof this.R.CubePhysics4 != 'undefined' && typeof this.R.CubePhysics5 != 'undefined' && typeof this.R.CubePhysics6 != 'undefined' && this.C > 1200) { dispatchEvent(new CustomEvent('all-done', { detail: {} })); this.C = 0; } }, validatePass: function () { if (dices.STATUS == "IN_PLAY" || dices.STATUS == "FREE_TO_PLAY") { // console.log('%cBLOCK', LOG_FUNNY) if (dices.STATUS == "IN_PLAY") _utils.mb.error(`STATUS IS ${dices.STATUS}, please wait for results...`); if (dices.STATUS == "FREE_TO_PLAY") _utils.mb.error(`STATUS IS ${dices.STATUS}, you need to roll dice first.`); app.matrixSounds.play('block'); return false; } else { return true; } } }; let myDom = exports.myDom = { state: { rowDown: [] }, memoNumberRow: [], hideSettings: function () { (0, _utils.byId)('blocker').style.display = 'none'; (0, _utils.byId)('messageBox').style.display = 'none'; }, createMenu: function () { var root = document.createElement('div'); root.id = 'hud'; root.style.position = 'absolute'; root.style.right = '10%'; root.style.top = '10%'; var help = document.createElement('div'); help.id = 'HELP'; help.classList.add('btn2'); help.innerHTML = `<span data-label="help"></span>`; var settings = document.createElement('div'); settings.id = 'settings'; settings.classList.add('btn2'); settings.innerHTML = `<span data-label="settings"></span>`; settings.addEventListener('click', () => { (0, _utils.byId)('messageBox').innerHTML = ` <div> <span data-label="settings"></span> <div> <div> <span data-label="sounds"></span> <label class="switch"> <input type="checkbox"> <span class="sliderSwitch round"></span> </label> </div> <div> <button class="btn2" onclick="app.myDom.hideSettings()"> <span data-label="hide"></span> </button> </div> </div> </div> `; (0, _utils.byId)('blocker').style.display = 'flex'; (0, _utils.byId)('messageBox').style.display = 'flex'; dispatchEvent(new CustomEvent('updateLang', {})); }); var roll = document.createElement('div'); roll.id = 'hud-roll'; roll.classList.add('btn'); roll.innerHTML = `<span data-label="roll"></span>`; roll.addEventListener('click', () => { app.ROLL(); }); var separator = document.createElement('div'); separator.innerHTML = `=======`; root.append(settings); root.append(help); root.append(separator); root.append(roll); document.body.appendChild(root); // global access // app.label.update() dispatchEvent(new CustomEvent('updateLang', {})); }, createBlocker: function () { var root = document.createElement('div'); root.id = 'blocker'; var messageBox = document.createElement('div'); messageBox.id = 'messageBox'; // console.log('TEST', app.label.get) messageBox.innerHTML = ` <span data-label="welcomeMsg"></span> <a href="https://github.com/zlatnaspirala/matrix-engine-wgpu">zlatnaspirala/matrix-engine-wgpu</a><br><br> <button class="btn" ><span style="font-size:30px;margin:15px;padding:10px" data-label="startGame"></span></button> <br> <div><span data-label="changeLang"></span></div> <button class="btn" onclick=" app.label.loadMultilang('en').then(r => { app.label.get = r; app.label.update() }); " ><span data-label="english"></span></button> <button class="btn" onclick="app.label.loadMultilang('sr').then(r => { app.label.get = r app.label.update() })" ><span data-label="serbian"></span></button> `; let initialMsgBoxEvent = function () { console.log('click on msgbox'); (0, _utils.byId)('messageBox').innerHTML = ``; (0, _utils.byId)('blocker').style.display = 'none'; myDom.createMenu(); messageBox.removeEventListener('click', initialMsgBoxEvent); }; messageBox.addEventListener('click', initialMsgBoxEvent); root.append(messageBox); document.body.appendChild(root); app.label.update(); }, createJamb: function () { var root = document.createElement('div'); root.id = 'jambTable'; root.style.position = 'absolute'; root.style.display = 'flex'; root.style.top = '10px'; root.style.left = '10px'; root.style.width = '200px'; root.style.background = '#7d7d7d8c'; var rowHeader = document.createElement('div'); rowHeader.id = 'rowHeader'; rowHeader.style.top = '10px'; rowHeader.style.left = '10px'; rowHeader.style.width = '200px'; rowHeader.innerHTML = '<span data-label="cornerText"></span><span id="user-points">0</span>'; root.appendChild(rowHeader); rowHeader.classList.add('myTheme1'); var rowDown = document.createElement('div'); rowDown.id = 'rowDown'; rowDown.style.top = '10px'; rowDown.style.left = '10px'; rowDown.style.width = '200px'; rowDown.innerHTML = '↓'; rowDown.classList.add('myTheme1'); root.appendChild(rowDown); var rowFree = document.createElement('div'); rowFree.id = 'rowFree'; rowFree.style.top = '10px'; rowFree.style.left = '10px'; rowFree.style.width = '200px'; rowFree.innerHTML = '↕'; rowFree.classList.add('myTheme1'); root.appendChild(rowFree); var rowUp = document.createElement('div'); rowUp.id = 'rowUp'; rowUp.style.top = '10px'; rowUp.style.left = '10px'; rowUp.style.width = '200px'; rowUp.innerHTML = '↑'; rowUp.classList.add('myTheme1'); root.appendChild(rowUp); var rowHand = document.createElement('div'); rowHand.id = 'rowHand'; rowHand.style.top = '10px'; rowHand.style.left = '10px'; rowHand.style.width = '200px'; rowHand.innerHTML = '<span data-label="hand"></span>'; rowHand.classList.add('myTheme1'); root.appendChild(rowHand); // INJECT TABLE HEADER ROW this.createLeftHeaderRow(rowHeader); this.createRowDown(rowDown); this.createRowFree(rowFree); this.createRow(rowUp); this.createRow(rowHand); document.body.appendChild(root); // console.log('JambTable added.') }, createLeftHeaderRow: function (myRoot) { for (var x = 1; x < 7; x++) { var rowNumber = document.createElement('div'); rowNumber.id = 'rowNumber' + x; rowNumber.style.top = '10px'; rowNumber.style.left = '10px'; rowNumber.style.width = 'auto'; rowNumber.style.background = '#7d7d7d8c'; rowNumber.innerHTML = `<span>${x}</span>`; myRoot.appendChild(rowNumber); } var rowNumberSum = document.createElement('div'); rowNumberSum.id = 'H_rowNumberSum'; rowNumberSum.style.width = 'auto'; rowNumberSum.style.background = '#7d7d7d8c'; rowNumberSum.innerHTML = `Σ`; myRoot.appendChild(rowNumberSum); var rowMax = document.createElement('div'); rowMax.id = 'H_rowMax'; rowMax.style.width = 'auto'; rowMax.style.background = '#7d7d7d8c'; rowMax.innerHTML = `<span data-label="MAX"></span>`; myRoot.appendChild(rowMax); var rowMin = document.createElement('div'); rowMin.id = 'H_rowMax'; rowMin.style.width = 'auto'; rowMin.style.background = '#7d7d7d8c'; rowMin.innerHTML = `<span data-label="MIN"></span>`; myRoot.appendChild(rowMin); var rowMaxMinSum = document.createElement('div'); rowMaxMinSum.id = 'H_rowMaxMinSum'; rowMaxMinSum.style.width = 'auto'; rowMaxMinSum.style.background = '#7d7d7d8c'; rowMaxMinSum.innerHTML = `Σ`; myRoot.appendChild(rowMaxMinSum); var largeStraight = document.createElement('div'); largeStraight.id = 'H_largeStraight'; largeStraight.style.width = 'auto'; largeStraight.style.background = '#7d7d7d8c'; largeStraight.innerHTML = `<span data-label="straight"></span>`; myRoot.appendChild(largeStraight); var threeOfAKind = document.createElement('div'); threeOfAKind.id = 'H_threeOfAKind'; threeOfAKind.style.width = 'auto'; threeOfAKind.style.background = '#7d7d7d8c'; threeOfAKind.innerHTML = `<span data-label="threeOf"></span>`; myRoot.appendChild(threeOfAKind); var fullHouse = document.createElement('div'); fullHouse.id = 'H_fullHouse'; fullHouse.style.width = 'auto'; fullHouse.style.background = '#7d7d7d8c'; fullHouse.innerHTML = `<span data-label="fullhouse"></span>`; myRoot.appendChild(fullHouse); var poker = document.createElement('div'); poker.id = 'H_poker'; poker.style.width = 'auto'; poker.style.background = '#7d7d7d8c'; poker.innerHTML = `<span data-label="poker"></span>`; myRoot.appendChild(poker); var jamb = document.createElement('div'); jamb.id = 'H_jamb'; jamb.style.width = 'auto'; jamb.style.background = '#7d7d7d8c'; jamb.innerHTML = `<span data-label="jamb"></span>`; myRoot.appendChild(jamb); var rowSum = document.createElement('div'); rowSum.id = 'H_rowSum'; rowSum.style.width = 'auto'; rowSum.style.background = '#7d7d7d8c'; rowSum.innerHTML = `Σ`; myRoot.appendChild(rowSum); var rowSumFINAL = document.createElement('div'); rowSumFINAL.id = 'H_rowSumFINAL'; rowSumFINAL.style.width = 'auto'; rowSumFINAL.style.background = '#7d7d7d8c'; rowSumFINAL.innerHTML = `<spam data-label="final"></span>`; myRoot.appendChild(rowSumFINAL); }, createRow: function (myRoot) { for (var x = 1; x < 7; x++) { var rowNumber = document.createElement('div'); rowNumber.id = 'rowNumber' + x; rowNumber.style.top = '10px'; rowNumber.style.left = '10px'; rowNumber.style.width = 'auto'; rowNumber.style.background = '#7d7d7d8c'; rowNumber.innerHTML = `-`; rowNumber.addEventListener('click', () => { console.log('LOG THIS ', this); // works // rowDown if (this.state.rowDown.length == 0) { console.log('it is no play yet in this row ', this); } }); myRoot.appendChild(rowNumber); } var rowNumberSum = document.createElement('div'); rowNumberSum.id = 'rowNumberSum'; rowNumberSum.style.width = 'auto'; rowNumberSum.style.background = '#7d7d7d8c'; rowNumberSum.innerHTML = `-`; myRoot.appendChild(rowNumberSum); var rowMax = document.createElement('div'); rowMax.id = 'rowMax'; rowMax.style.width = 'auto'; rowMax.style.background = '#7d7d7d8c'; rowMax.innerHTML = `-`; myRoot.appendChild(rowMax); var rowMin = document.createElement('div'); rowMin.id = 'rowMax'; rowMin.style.width = 'auto'; rowMin.style.background = '#7d7d7d8c'; rowMin.innerHTML = `-`; myRoot.appendChild(rowMin); var rowMaxMinSum = document.createElement('div'); rowMaxMinSum.id = 'rowMaxMinSum'; rowMaxMinSum.style.width = 'auto'; rowMaxMinSum.style.background = '#7d7d7d8c'; rowMaxMinSum.innerHTML = `-`; myRoot.appendChild(rowMaxMinSum); var largeStraight = document.createElement('div'); largeStraight.id = 'largeStraight'; largeStraight.style.width = 'auto'; largeStraight.style.background = '#7d7d7d8c'; largeStraight.innerHTML = `-`; myRoot.appendChild(largeStraight); var threeOfAKind = document.createElement('div'); threeOfAKind.id = 'down_threeOfAKind'; threeOfAKind.style.width = 'auto'; threeOfAKind.style.background = '#7d7d7d8c'; threeOfAKind.innerHTML = `-`; myRoot.appendChild(threeOfAKind); var fullHouse = document.createElement('div'); fullHouse.id = 'fullHouse'; fullHouse.style.width = 'auto'; fullHouse.style.background = '#7d7d7d8c'; fullHouse.innerHTML = `-`; myRoot.appendChild(fullHouse); var poker = document.createElement('div'); poker.id = 'poker'; poker.style.width = 'auto'; poker.style.background = '#7d7d7d8c'; poker.innerHTML = `-`; myRoot.appendChild(poker); var jamb = document.createElement('div'); jamb.id = 'jamb'; jamb.style.width = 'auto'; jamb.style.background = '#7d7d7d8c'; jamb.innerHTML = `-`; myRoot.appendChild(jamb); var rowSum = document.createElement('div'); rowSum.id = 'rowSum'; rowSum.style.width = 'auto'; rowSum.style.background = '#7d7d7d8c'; rowSum.innerHTML = `-`; myRoot.appendChild(rowSum); }, createRowFree: function (myRoot) { for (var x = 1; x < 7; x++) { var rowNumber = document.createElement('div'); rowNumber.id = 'free-rowNumber' + x; rowNumber.style.top = '10px'; rowNumber.style.left = '10px'; rowNumber.style.width = 'auto'; rowNumber.style.background = '#7d7d7d8c'; rowNumber.innerHTML = `-`; rowNumber.addEventListener('click', e => { if (dices.validatePass() == false) return; var getName = e.target.id; getName = getName.replace('free-rowNumber', ''); var count23456 = 0; for (let key in dices.R) { if (parseInt(dices.R[key]) == parseInt(getName)) { count23456++; } } this.state.rowDown.push(count23456 * parseInt(getName)); e.target.innerHTML = count23456 * parseInt(getName); if (parseInt(getName) == 6) { myDom.calcFreeNumbers(); } dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); }); myRoot.appendChild(rowNumber); } var rowNumberSum = document.createElement('div'); rowNumberSum.id = 'free-rowNumberSum'; rowNumberSum.style.width = 'auto'; rowNumberSum.style.background = '#7d7d7d8c'; rowNumberSum.innerHTML = `-`; myRoot.appendChild(rowNumberSum); var rowMax = document.createElement('div'); rowMax.id = 'free-rowMax'; rowMax.style.width = 'auto'; rowMax.style.background = '#7d7d7d8c'; rowMax.innerHTML = `-`; rowMax.addEventListener("click", this.calcFreeRowMax); myRoot.appendChild(rowMax); var rowMin = document.createElement('div'); rowMin.id = 'free-rowMin'; rowMin.style.width = 'auto'; rowMin.style.background = '#7d7d7d8c'; rowMin.innerHTML = `-`; rowMin.addEventListener('click', this.calcFreeRowMin); myRoot.appendChild(rowMin); var rowMaxMinSum = document.createElement('div'); rowMaxMinSum.id = 'free-rowMaxMinSum'; rowMaxMinSum.style.width = 'auto'; rowMaxMinSum.style.background = '#7d7d7d8c'; rowMaxMinSum.innerHTML = `-`; myRoot.appendChild(rowMaxMinSum); var largeStraight = document.createElement('div'); largeStraight.id = 'free-largeStraight'; largeStraight.style.width = 'auto'; largeStraight.style.background = '#7d7d7d8c'; largeStraight.innerHTML = `-`; largeStraight.addEventListener('click', this.attachFreeKenta); myRoot.appendChild(largeStraight); var threeOfAKind = document.createElement('div'); threeOfAKind.id = 'free-threeOfAKind'; threeOfAKind.style.width = 'auto'; threeOfAKind.style.background = '#7d7d7d8c'; threeOfAKind.innerHTML = `-`; threeOfAKind.addEventListener('click', this.attachFreeTrilling); myRoot.appendChild(threeOfAKind); var fullHouse = document.createElement('div'); fullHouse.id = 'free-fullHouse'; fullHouse.style.width = 'auto'; fullHouse.style.background = '#7d7d7d8c'; fullHouse.innerHTML = `-`; fullHouse.addEventListener('click', this.attachFreeFullHouse); myRoot.appendChild(fullHouse); var poker = document.createElement('div'); poker.id = 'free-poker'; poker.style.width = 'auto'; poker.style.background = '#7d7d7d8c'; poker.innerHTML = `-`; poker.addEventListener('click', this.attachFreePoker); myRoot.appendChild(poker); var jamb = document.createElement('div'); jamb.id = 'free-jamb'; jamb.style.width = 'auto'; jamb.style.background = '#7d7d7d8c'; jamb.innerHTML = `-`; jamb.addEventListener('click', this.attachFreeJamb); myRoot.appendChild(jamb); var rowSum = document.createElement('div'); rowSum.id = 'free-rowSum'; rowSum.style.width = 'auto'; rowSum.style.background = '#7d7d7d8c'; rowSum.innerHTML = `-`; myRoot.appendChild(rowSum); }, createRowDown: function (myRoot) { for (var x = 1; x < 7; x++) { var rowNumber = document.createElement('div'); rowNumber.id = 'down-rowNumber' + x; rowNumber.style.top = '10px'; rowNumber.style.left = '10px'; rowNumber.style.width = 'auto'; rowNumber.style.background = '#7d7d7d8c'; rowNumber.innerHTML = `-`; this.memoNumberRow.push(rowNumber); // initial if (x == 1) { rowNumber.classList.add('canPlay'); } rowNumber.addEventListener('click', e => { if (dices.validatePass() == false) return; var getName = e.target.id; getName = getName.replace('down-rowNumber', ''); if (this.state.rowDown.length == 0) { console.log('LOG ', getName); if (parseInt(getName) == 1) { var count1 = 0; for (let key in dices.R) { if (parseInt(dices.R[key]) == 1) { console.log('yeap', dices.R); count1++; } } this.state.rowDown.push(count1); e.target.innerHTML = count1; e.target.classList.remove('canPlay'); this.memoNumberRow[1].classList.add('canPlay'); dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); } else { console.log('BLOCK'); } } else { if (this.state.rowDown.length > 0) { if (parseInt(getName) == this.state.rowDown.length + 1) { console.log('moze za ', parseInt(getName)); var count23456 = 0; for (let key in dices.R) { if (parseInt(dices.R[key]) == parseInt(getName)) { console.log('yeap', dices.R); count23456++; } } this.state.rowDown.push(count23456 * parseInt(getName)); // e.target.innerHTML = count23456 * parseInt(getName); if (parseInt(getName) == 6) { // calc sum console.log('calc sum for numb ~ '); // this.state.rowDown.length + 1 myDom.calcDownNumbers(); e.target.classList.remove('canPlay'); this.rowMax.classList.add('canPlay'); } else { e.target.classList.remove('canPlay'); this.memoNumberRow[parseInt(getName)].classList.add('canPlay'); } dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); } else { console.log('BLOCK'); } } } }); myRoot.appendChild(rowNumber); } var rowNumberSum = document.createElement('div'); rowNumberSum.id = 'down-rowNumberSum'; rowNumberSum.style.width = 'auto'; rowNumberSum.style.background = '#7d7d7d8c'; rowNumberSum.innerHTML = `-`; myRoot.appendChild(rowNumberSum); var rowMax = document.createElement('div'); rowMax.id = 'down-rowMax'; rowMax.style.width = 'auto'; rowMax.style.background = '#7d7d7d8c'; rowMax.innerHTML = `-`; myRoot.appendChild(rowMax); this.rowMax = rowMax; // this.rowMax.addEventListener("click", (e) => { // e.target.classList.remove('canPlay') // this.rowMin.classList.add('canPlay') // }) var rowMin = document.createElement('div'); rowMin.id = 'down-rowMin'; rowMin.style.width = 'auto'; rowMin.style.background = '#7d7d7d8c'; rowMin.innerHTML = `-`; this.rowMin = rowMin; myRoot.appendChild(rowMin); this.rowMin = rowMin; var rowMaxMinSum = document.createElement('div'); rowMaxMinSum.id = 'down-rowMaxMinSum'; rowMaxMinSum.style.width = 'auto'; rowMaxMinSum.style.background = '#7d7d7d8c'; rowMaxMinSum.innerHTML = `-`; myRoot.appendChild(rowMaxMinSum); var largeStraight = document.createElement('div'); largeStraight.id = 'down-largeStraight'; largeStraight.style.width = 'auto'; largeStraight.style.background = '#7d7d7d8c'; largeStraight.innerHTML = `-`; myRoot.appendChild(largeStraight); var threeOfAKind = document.createElement('div'); threeOfAKind.id = 'down-threeOfAKind'; threeOfAKind.style.width = 'auto'; threeOfAKind.style.background = '#7d7d7d8c'; threeOfAKind.innerHTML = `-`; myRoot.appendChild(threeOfAKind); var fullHouse = document.createElement('div'); fullHouse.id = 'down-fullHouse'; fullHouse.style.width = 'auto'; fullHouse.style.background = '#7d7d7d8c'; fullHouse.innerHTML = `-`; myRoot.appendChild(fullHouse); var poker = document.createElement('div'); poker.id = 'down-poker'; poker.style.width = 'auto'; poker.style.background = '#7d7d7d8c'; poker.innerHTML = `-`; myRoot.appendChild(poker); var jamb = document.createElement('div'); jamb.id = 'down-jamb'; jamb.style.width = 'auto'; jamb.style.background = '#7d7d7d8c'; jamb.innerHTML = `-`; myRoot.appendChild(jamb); var rowSum = document.createElement('div'); rowSum.id = 'down-rowSum'; rowSum.style.width = 'auto'; rowSum.style.background = '#7d7d7d8c'; rowSum.innerHTML = `-`; myRoot.appendChild(rowSum); }, calcDownNumbers: function () { var s = 0; this.state.rowDown.forEach(i => { console.log(parseFloat(i)); s += parseFloat(i); }); (0, _utils.byId)('down-rowNumberSum').style.background = 'rgb(113 0 0 / 55%)'; (0, _utils.byId)('down-rowNumberSum').innerHTML = s; // console.log('this.rowMax also set free to plat status', this.rowMax) dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); this.rowMax.addEventListener("click", this.calcDownRowMax); }, // free row start calcFreeNumbers: function () { var s = 0; this.state.rowDown.forEach(i => { console.log(parseFloat(i)); s += parseFloat(i); }); (0, _utils.byId)('free-rowNumberSum').style.background = 'rgb(113 0 0 / 55%)'; (0, _utils.byId)('free-rowNumberSum').innerHTML = s; // console.log('this.rowMax also set free to plat status', this.rowMax) dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); (0, _utils.byId)('free-rowMax').addEventListener("click", this.calc); }, calcFreeRowMax: e => { if (dices.validatePass() == false) return; var test = 0; let keyLessNum = Object.keys(dices.R).reduce((key, v) => dices.R[v] < dices.R[key] ? v : key); for (var key in dices.R) { if (key != keyLessNum) { test += parseFloat(dices.R[key]); } } e.target.innerHTML = test; // now attach next event. dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); (0, _utils.byId)('free-rowMax').removeEventListener("click", (void 0).calcFreeRowMax); }, calcFreeRowMin: () => { if (dices.validatePass() == false) return; var maxTestKey = Object.keys(dices.R).reduce(function (a, b) { return dices.R[a] > dices.R[b] ? a : b; }); var test = 0; for (var key in dices.R) { if (key != maxTestKey) { test += parseFloat(dices.R[key]); } else { console.log('not calc dice ', dices.R[key]); } } (0, _utils.byId)('free-rowMin').innerHTML = test; (0, _utils.byId)('free-rowMin').removeEventListener('click', (void 0).calcFreeRowMin); // calc max min dont forget rules for bonus +30 var SUMMINMAX = parseFloat((0, _utils.byId)('free-rowMax').innerHTML) - parseFloat((0, _utils.byId)('free-rowMin').innerHTML); (0, _utils.byId)('free-rowMaxMinSum').innerHTML = SUMMINMAX; myDom.incrasePoints(SUMMINMAX); dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); }, attachFreeKenta: function () { if (dices.validatePass() == false) return; console.log('Test free kenta :', dices.R); var result = app.myDom.checkForDuplicate()[0]; var testArray = app.myDom.checkForDuplicate()[1]; console.log('TEST duplik: ' + result); if (result.length == 2) { console.log('TEST duplik less 3 : ' + result); var locPrevent = false; testArray.forEach((item, index, array) => { if (result[0].value == item.value && locPrevent == false) { console.log('detect by value item.value', item.value); locPrevent = true; array.splice(index, 1); } }); // if we catch 1 and 6 in same stack then it is not possible for kenta... var test1 = false, test6 = false; testArray.forEach((item, index, array) => { if (item.value == 1) { test1 = true; } else if (item.value == 6) { test6 = true; } }); if (test1 == true && test6 == true) { (0, _utils.byId)('free-largeStraight').innerHTML = `0`; } else if (test1 == true) { (0, _utils.byId)('free-largeStraight').innerHTML = 15 + 50; myDom.incrasePoints(15 + 50); } else if (test6 == true) { (0, _utils.byId)('free-largeStraight').innerHTML = 20 + 50; myDom.incrasePoints(20 + 50); } } else if (result < 2) { (0, _utils.byId)('free-largeStraight').innerHTML = 66; myDom.incrasePoints(66); } else { // zero value (0, _utils.byId)('free-largeStraight').innerHTML = `0`; } (0, _utils.byId)('free-largeStraight').removeEventListener('click', this.attachFreeKenta); dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); }, attachFreeTrilling: function () { if (dices.validatePass() == false) return; var result = app.myDom.checkForDuplicate()[0]; // var testArray = app.myDom.checkForDuplicate()[1]; // console.log('DUPLICATE FOR TRILING ', result); if (result.length > 2) { var testWin = 0; var TEST = app.myDom.checkForAllDuplicate(); console.log('DUPLICATE FOR TRILING TEST ', TEST); for (var key in TEST) { if (TEST[key] > 2) { // win var getDiceID = parseInt(key.replace('value__', '')); testWin = getDiceID * 3; } } console.log('DUPLICATE FOR TRILING 30 + TEST ', testWin); if (testWin > 0) { (0, _utils.byId)('free-threeOfAKind').innerHTML = 20 + testWin; myDom.incrasePoints(20 + testWin); } } else { (0, _utils.byId)('free-threeOfAKind').innerHTML = 0; } (0, _utils.byId)('free-threeOfAKind').removeEventListener('click', this.attachFreeTrilling); dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); }, attachFreeFullHouse: function () { if (dices.validatePass() == false) return; var TEST = app.myDom.checkForAllDuplicate(); // console.log('DUPLICATE FOR FULL HOUSE 30 + TEST '); var win = 0; var testPair = false; var testTrilling = false; var testWinPair = 0; var testWinTrilling = 0; for (var key in TEST) { if (TEST[key] == 2) { // win var getDiceID = parseInt(key.replace('value__', '')); testWinPair = getDiceID * 2; testPair = true; } else if (TEST[key] == 3) { var getDiceID = parseInt(key.replace('value__', '')); testWinTrilling = getDiceID * 3; testTrilling = true; } } if (testPair == true && testTrilling == true) { win = testWinPair + testWinTrilling; (0, _utils.byId)('free-fullHouse').innerHTML = win + 30; myDom.incrasePoints(win + 30); } else { (0, _utils.byId)('free-fullHouse').innerHTML = 0; } (0, _utils.byId)('free-fullHouse').removeEventListener('click', this.attachFreeFullHouse); dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); }, attachFreePoker: function () { if (dices.validatePass() == false) return; var TEST = app.myDom.checkForAllDuplicate(); // console.log('DUPLICATE FOR poker 40 + TEST '); for (var key in TEST) { if (TEST[key] == 4 || TEST[key] > 4) { var getDiceID = parseInt(key.replace('value__', '')); var win = getDiceID * 4; (0, _utils.byId)('free-poker').innerHTML = win + 40; myDom.incrasePoints(win + 40); } } (0, _utils.byId)('free-poker').removeEventListener('click', this.attachFreePoker); dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); }, attachFreeJamb: function () { if (dices.validatePass() == false) return; // console.log('<GAMEPLAY><FREE ROW IS FEELED>') var TEST = app.myDom.checkForAllDuplicate(); for (var key in TEST) { if (TEST[key] == 5 || TEST[key] > 5) { // win var getDiceID = parseInt(key.replace('value__', '')); var win = getDiceID * 5; (0, _utils.byId)('free-poker').innerHTML = win + 50; myDom.incrasePoints(win + 50); } } (0, _utils.byId)('free-jamb').removeEventListener('click', this.attachFreeJamb); dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); }, // end of free row calcDownRowMax: e => { if (dices.validatePass() == false) return; e.target.classList.remove('canPlay'); (void 0).rowMin.classList.add('canPlay'); var test = 0; let keyLessNum = Object.keys(dices.R).reduce((key, v) => dices.R[v] < dices.R[key] ? v : key); // console.log('FIND MIN DICE TO REMOVE FROM SUM ', keyLessNum); for (var key in dices.R) { if (key != keyLessNum) { test += parseFloat(dices.R[key]); } } e.target.innerHTML = test; // now attach next event. dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); (void 0).rowMax.removeEventListener("click", (void 0).calcDownRowMax); (0, _utils.byId)('down-rowMin').addEventListener('click', (void 0).calcDownRowMin); }, incrasePoints: function (arg) { (0, _utils.byId)('user-points').innerHTML = parseInt((0, _utils.byId)('user-points').innerHTML) + parseInt(arg); }, calcDownRowMin: () => { if (dices.validatePass() == false) return; (void 0).rowMin.classList.remove('canPlay'); console.log('MIN ENABLED'); var maxTestKey = Object.keys(dices.R).reduce(function (a, b) { return dices.R[a] > dices.R[b] ? a : b; }); var test = 0; for (var key in dices.R) { if (key != maxTestKey) { test += parseFloat(dices.R[key]); } else { console.log('not calc dice ', dices.R[key]); } } (void 0).rowMin.innerHTML = test; (0, _utils.byId)('down-rowMin').removeEventListener('click', (void 0).calcDownRowMin); // calc max min dont forget rules for bonus +30 var SUMMINMAX = parseFloat((void 0).rowMax.innerHTML) - parseFloat((void 0).rowMin.innerHTML); (0, _utils.byId)('down-rowMaxMinSum').innerHTML = SUMMINMAX; myDom.incrasePoints(SUMMINMAX); dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); (0, _utils.byId)('down-largeStraight').classList.add('canPlay'); (0, _utils.byId)('down-largeStraight').addEventListener('click', (void 0).attachKenta); }, checkForDuplicate: function () { var testArray = []; for (var key in dices.R) { var gen = { myId: key, value: dices.R[key] }; testArray.push(gen); } var result = Object.values(testArray.reduce((c, v) => { let k = v.value; c[k] = c[k] || []; c[k].push(v); return c; }, {})).reduce((c, v) => v.length > 1 ? c.concat(v) : c, []); return [result, testArray]; }, checkForAllDuplicate: function () { var testArray = []; for (var key in dices.R) { var gen = { myId: key, value: dices.R[key] }; testArray.push(gen); } // console.log('testArray ', testArray) var result = Object.values(testArray.reduce((c, v) => { let k = v.value; c[k] = c[k] || []; c[k].push(v); return c; }, {})).reduce((c, v) => v.length > 1 ? c.concat(v) : c, []); var discret = {}; result.forEach((item, index, array) => { if (typeof discret['value__' + item.value] === 'undefined') { discret['value__' + item.value] = 1; } else { discret['value__' + item.value] += 1; } }); return discret; }, attachKenta: function () { console.log('Test kenta ', dices.R); (0, _utils.byId)('down-largeStraight').classList.remove('canPlay'); var result = app.myDom.checkForDuplicate()[0]; var testArray = app.myDom.checkForDuplicate()[1]; // console.log('TEST duplik: ' + result); if (result.length == 2) { console.log('TEST duplik less 3 : ' + result); var locPrevent = false; testArray.forEach((item, index, array) => { if (result[0].value == item.value && locPrevent == false) { console.log('detect by value item.value', item.value); locPrevent = true; array.splice(index, 1); } }); // if we catch 1 and 6 in same stack then it is not possible for kenta... var test1 = false, test6 = false; testArray.forEach((item, index, array) => { if (item.value == 1) { test1 = true; } else if (item.value == 6) { test6 = true; } }); if (test1 == true && test6 == true) { (0, _utils.byId)('down-largeStraight').innerHTML = `0`; } else if (test1 == true) { (0, _utils.byId)('down-largeStraight').innerHTML = 15 + 50; myDom.incrasePoints(15 + 50); } else if (test6 == true) { (0, _utils.byId)('down-largeStraight').innerHTML = 20 + 50; myDom.incrasePoints(20 + 50); } } else if (result < 2) { (0, _utils.byId)('down-largeStraight').innerHTML = 66; myDom.incrasePoints(66); } else { // zero value (0, _utils.byId)('down-largeStraight').innerHTML = `0`; } (0, _utils.byId)('down-threeOfAKind').addEventListener('click', this.attachDownTrilling); (0, _utils.byId)('down-largeStraight').removeEventListener('click', this.attachKenta); dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); }, attachDownTrilling: function () { var result = app.myDom.checkForDuplicate()[0]; // var testArray = app.myDom.checkForDuplicate()[1]; // console.log('DUPLICATE FOR TRILING ', result); if (result.length > 2) { var testWin = 0; var TEST = app.myDom.checkForAllDuplicate(); console.log('DUPLICATE FOR TRILING TEST ', TEST); for (var key in TEST) { if (TEST[key] > 2) { // win var getDiceID = parseInt(key.replace('value__', '')); testWin = getDiceID * 3; } } console.log('DUPLICATE FOR TRILING 30 + TEST ', testWin); (0, _utils.byId)('down-threeOfAKind').innerHTML = 20 + testWin; myDom.incrasePoints(20 + testWin); } else { (0, _utils.byId)('down-threeOfAKind').innerHTML = 0; } (0, _utils.byId)('down-threeOfAKind').removeEventListener('click', this.attachDownTrilling); (0, _utils.byId)('down-fullHouse').addEventListener('click', this.attachDownFullHouse); dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); }, attachDownFullHouse: function () { var TEST = app.myDom.checkForAllDuplicate(); // console.log('DUPLICATE FOR FULL HOUSE 30 + TEST '); var win = 0; var testPair = false; var testTrilling = false; var testWinPair = 0; var testWinTrilling = 0; for (var key in TEST) { if (TEST[key] == 2) { // win var getDiceID = parseInt(key.replace('value__', '')); testWinPair = getDiceID * 2; testPair = true; } else if (TEST[key] == 3) { var getDiceID = parseInt(key.replace('value__', '')); testWinTrilling = getDiceID * 3; testTrilling = true; } } if (testPair == true && testTrilling == true) { win = testWinPair + testWinTrilling; (0, _utils.byId)('down-fullHouse').innerHTML = win + 30; myDom.incrasePoints(win + 30); } else { (0, _utils.byId)('down-fullHouse').innerHTML = 0; } (0, _utils.byId)('down-poker').addEventListener('click', this.attachDownPoker); (0, _utils.byId)('down-fullHouse').removeEventListener('click', this.attachDownFullHouse); dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); }, attachDownPoker: function () { var TEST = app.myDom.checkForAllDuplicate(); // console.log('DUPLICATE FOR poker 40 + TEST '); for (var key in TEST) { if (TEST[key] == 4 || TEST[key] > 4) { // win var getDiceID = parseInt(key.replace('value__', '')); var win = getDiceID * 4; (0, _utils.byId)('down-poker').innerHTML = win + 40; myDom.incrasePoints(win + 40); } } (0, _utils.byId)('down-poker').removeEventListener('click', this.attachDownPoker); (0, _utils.byId)('down-jamb').addEventListener('click', this.attachDownJamb); dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); }, attachDownJamb: function () { (0, _utils.byId)('down-jamb').removeEventListener('click', this.attachDownJamb); console.log('<GAMEPLAY><DOWN ROW IS FEELED>'); var TEST = app.myDom.checkForAllDuplicate(); for (var key in TEST) { if (TEST[key] == 5 || TEST[key] > 5) { // win var getDiceID = parseInt(key.replace('value__', '')); var win = getDiceID * 5; (0, _utils.byId)('down-poker').innerHTML = win + 50; myDom.incrasePoints(win + 50); } } dices.STATUS = "FREE_TO_PLAY"; dispatchEvent(new CustomEvent('FREE_TO_PLAY', {})); } }; },{"../../../src/engine/loader-obj.js":7,"../../../src/engine/utils.js":12,"../../../src/world.js":20}],2:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.application = void 0; var _world = _interopRequireDefault(require("./src/world.js")); var _loaderObj = require("./src/engine/loader-obj.js"); var _utils = require("./src/engine/utils.js"); var _jamb = require("./examples/games/jamb/jamb.js"); var _sounds = require("./src/sounds/sounds.js"); var _raycast = require("./src/engine/raycast.js"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } let application = exports.application = new _world.default({ useSingleRenderPass: true, canvasSize: 'fullscreen', mainCameraParams: { type: 'WASD', responseCoef: 1000 } }, () => { // Dom operations application.myDom = _jamb.myDom; _jamb.myDom.createJamb(); _jamb.myDom.createBlocker(); application.dices = _jamb.dices; // this code must be on top application.matrixAmmo.detectCollision = function () { this.lastRoll = ''; this.presentScore = ''; let dispatcher = this.dynamicsWorld.getDispatcher(); let numManifolds = dispatcher.getNumManifolds(); for (let i = 0; i < numManifolds; i++) { let contactManifold = dispatcher.getManifoldByIndexInternal(i); // let numContacts = contactManifold.getNumContacts(); if (this.ground.kB == contactManifold.getBody0().kB || this.ground.kB == contactManifold.getBody1().kB) { // console.log(this.ground ,'GROUND IS IN CONTACT WHO IS BODY1 ', contactManifold.getBody1()) // CHECK ROTATION BEST WAY - VISAL PART IS NOT INTEREST NOW if (this.ground.kB == contactManifold.getBody0().kB) { var MY_DICE_NAME = this.getNameByBody(contactManifold.getBody1()); var testR = contactManifold.getBody1().getWorldTransform().getRotation(); } if (this.ground.kB == contactManifold.getBody1().kB) { var MY_DICE_NAME = this.getNameByBody(contactManifold.getBody0()); var testR = contactManifold.getBody0().getWorldTransform().getRotation(); } var passed = false; if (Math.abs(testR.y()) < 0.00001) { this.lastRoll = "3"; this.presentScore += 4; passed = true; } if (Math.abs(testR.x()) < 0.00001) { this.lastRoll = "5"; this.presentScore += 3; passed = true; } if (testR.x().toString().substring(0, 5) == testR.y().toString().substring(1, 6)) { this.lastRoll = "6"; this.presentScore += 2; passed = true; } if (testR.x().toString().substring(0, 5) == testR.y().toString().substring(0, 5)) { this.lastRoll = "2"; this.presentScore += 1; passed = true; } if (testR.z().toString().substring(0, 5) == testR.y().toString().substring(1, 6)) { this.lastRoll = "4"; this.presentScore += 6; passed = true; } if (testR.z().toString().substring(0, 5) == testR.y().toString().substring(0, 5)) { this.lastRoll = "1"; this.presentScore += 5; passed = true; } if (passed == true) dispatchEvent(new CustomEvent(`dice-${this.lastRoll}`, { detail: { result: `dice-${this.lastRoll}`, cubeId: MY_DICE_NAME } })); } } }; (0, _raycast.addRaycastListener)(); addEventListener("ray.hit.event", e => { console.log("hit cube ", e.detail.hitObject.name); if (application.dices.STATUS == "FREE_TO_PLAY") { console.log("hit cube status free to play prevent pick. ", e.detail.hitObject.name); } else if (application.dices.STATUS == "SELECT_DICES_1") { console.log("hit cube status SELECT1 pick.", e.detail.hitObject.name); application.dices.pickDice(e.detail.hitObject.name); } }); // OR add manual see readme addEventListener('mousemove', e => { // console.log('only on click') _raycast.touchCoordinate.enabled = true; }); // Sounds application.matrixSounds.createAudio('start', 'res/audios/start.mp3', 1); application.matrixSounds.createAudio('block', 'res/audios/block.mp3', 6); application.matrixSounds.createAudio('dice1', 'res/audios/dice1.mp3', 6); application.matrixSounds.createAudio('dice2', 'res/audios/dice2.mp3', 6); addEventListener('AmmoReady', () => { (0, _loaderObj.downloadMeshes)({ cube: "./res/meshes/jamb/dice.obj" }, onLoadObj, { scale: [1, 1, 1], swap: [null] }); (0, _loaderObj.downloadMeshes)({ bg: "./res/meshes/jamb/bg.obj" }, onLoadObjFloor, { scale: [3, 1, 3], swap: [null] }); (0, _loaderObj.downloadMeshes)({ mainTitle: "./res/meshes/jamb/jamb-title.obj" }, onLoadObjOther, { scale: [3, 2, 3], swap: [null] }); (0, _loaderObj.downloadMeshes)({ cube: "./res/meshes/jamb/dice.obj" }, onLoadObjWallCenter, { scale: [50, 10, 10], swap: [null] }); (0, _loaderObj.downloadMeshes)({ cube: "./res/meshes/jamb/dice.obj" }, m => { for (var key in m) { // console.log(`%c Loaded objs -> : ${key} `, LOG_MATRIX); } // right application.addMeshObj({ position: { x: 25, y: 5.5, z: -25 }, rotation: { x: 0, y: -22, z: 0 }, scale: [25, 10, 4], texturesPaths: ['./res/meshes/jamb/text.png'], name: 'wallRight', mesh: m.cube, physics: { mass: 0, enabled: true, geometry: "Cube" } }); application.addMeshObj({ position: { x: -25, y: 5.5, z: -25 }, rotation: { x: 0, y: 22, z: 0 }, scale: [25, 10, 4], texturesPaths: ['./res/meshes/jamb/text.png'], name: 'wallLeft', mesh: m.cube, physics: { mass: 0, enabled: true, geometry: "Cube" } }); }, { scale: [25, 10, 4], swap: [null] }); }); function onLoadObjWallCenter(m) { application.myLoadedMeshesWalls = m; for (var key in m) { // console.log(`%c Loaded objs -> : ${key} `, LOG_MATRIX); } // WALLS Center application.addMeshObj({ position: { x: 0, y: 5, z: -45 }, rotation: { x: 0, y: 0, z: 0 }, scale: [50, 10, 10], texturesPaths: ['./res/meshes/jamb/text.png'], name: 'wallCenter', mesh: m.cube, physics: { mass: 0, enabled: true, geometry: "Cube" } }); } function onLoadObjOther(m) { application.myLoadedMeshes = m; for (var key in m) { // console.log(`%c Loaded objs -> : ${key} `, LOG_MATRIX); } // Add logo text top application.addMeshObj({ position: { x: 0, y: 6, z: -15 }, rotation: { x: 0, y: 0, z: 0 }, texturesPaths: ['./res/meshes/jamb/text.png'], name: 'mainTitle', mesh: m.mainTitle, physics: { mass: 0, enabled: true, geometry: "Cube" } }); // console.log('camera set') // application.cameras.WASD.pitch = 0.2 setTimeout(() => { app.cameras.WASD.velocity[1] = 18; // BODY , x, y, z, rotX, rotY, RotZ app.matrixAmmo.setKinematicTransform(app.matrixAmmo.getBodyByName('mainTitle'), 0, 0, 0, 1); app.matrixAmmo.setKinematicTransform(app.matrixAmmo.getBodyByName('bg'), 0, -10, 0, 0, 0, 0); // Better access getBodyByName console.log(' app.matrixAmmo. ', app.matrixAmmo.getBodyByName('CubePhysics1')); }, 1225); } function onLoadObjFloor(m) { application.myLoadedMeshes = m; for (var key in m) { // console.log(`%c Loaded objs -> : ${key} `, LOG_MATRIX); } application.addMeshObj({ scale: [10, 0.1, 0.1], position: { x: 0, y: 6, z: -10 }, rotation: { x: 0, y: 0, z: 0 }, // rotationSpeed: {x: 0, y: 0, z: 0}, texturesPaths: ['./res/meshes/jamb/bg.png'], name: 'bg', mesh: m.bg, physics: { collide: false, mass: 0, enabled: true, geometry: "Cube" } }); } function onLoadObj(m) { application.myLoadedMeshes = m; for (var key in m) { // console.log(`%c Loaded objs -> : ${key} `, LOG_MATRIX); } // Add dices application.addMeshObj({ position: { x: 0, y: 6, z: -10 }, rotation: { x: 0, y: 0, z: 0 }, rotationSpeed: { x: 0, y: 0, z: 0 }, texturesPaths: ['./res/meshes/jamb/dice.png'], useUVShema4x2: true, name: 'CubePhysics1', mesh: m.cube, raycast: { enabled: true, radius: 2 }, physics: { enabled: true, geometry: "Cube" } }); application.addMeshObj({ position: { x: -5, y: 4, z: -14 }, rotation: { x: 0, y: 0, z: 0 }, rotationSpeed: { x: 0, y: 0, z: 0 }, texturesPaths: ['./res/meshes/jamb/dice.png'], useUVShema4x2: true, name: 'CubePhysics2', mesh: m.cube, raycast: { enabled: true, radius: 2 }, physics: { enabled: true, geometry: "Cube" } }); application.addMeshObj({ position: { x: 4, y: 8, z: -10 }, rotation: { x: 0, y: 0, z: 0 }, rotationSpeed: { x: 0, y: 0, z: 0 }, texturesPaths: ['./res/meshes/jamb/dice.png'], useUVShema4x2: true, name: 'CubePhysics3', mesh: m.cube, raycast: { enabled: true, radius: 2 }, physics: { enabled: true, geometry: "Cube" } }); application.addMeshObj({ position: { x: 3, y: 4, z: -10