matrix-engine-wgpu 1.0.6 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/.codesandbox/tasks.json +46 -0
  2. package/.devcontainer/devcontainer.json +22 -0
  3. package/.github/dependabot.yml +12 -0
  4. package/REFERENCE.md +3 -5
  5. package/dev.md +460 -0
  6. package/empty.js +7 -6
  7. package/examples/games/jamb/jamb.js +1127 -0
  8. package/examples/load-obj-file.js +65 -28
  9. package/examples/unlit-textures.js +26 -23
  10. package/examples.js +35 -3
  11. package/main.js +442 -48
  12. package/non-project-files/dev.txt +21 -0
  13. package/non-project-files/image1.png +0 -0
  14. package/non-project-files/image6.png +0 -0
  15. package/package.json +28 -13
  16. package/public/app.js +11405 -9375
  17. package/public/css/style.css +371 -110
  18. package/public/empty.html +1 -1
  19. package/public/empty.js +9887 -9264
  20. package/public/examples.html +10 -8
  21. package/public/examples.js +553 -193
  22. package/public/index.html +3 -5
  23. package/public/manifest copy.web +35 -0
  24. package/public/res/audios/block.mp3 +0 -0
  25. package/public/res/audios/dice1.mp3 +0 -0
  26. package/public/res/audios/dice2.mp3 +0 -0
  27. package/public/res/audios/start.mp3 +0 -0
  28. package/public/res/meshes/jamb/bg.blend +0 -0
  29. package/public/res/meshes/jamb/bg.blend1 +0 -0
  30. package/public/res/meshes/jamb/bg.mtl +12 -0
  31. package/public/res/meshes/jamb/bg.obj +17 -0
  32. package/public/res/meshes/jamb/bg.png +0 -0
  33. package/public/res/meshes/jamb/dice-default.png +0 -0
  34. package/public/res/meshes/jamb/dice-mark.png +0 -0
  35. package/public/res/meshes/jamb/dice.mtl +12 -0
  36. package/public/res/meshes/jamb/dice.obj +40 -0
  37. package/public/res/meshes/jamb/dice.png +0 -0
  38. package/public/res/meshes/jamb/jamb-title.mtl +12 -0
  39. package/public/res/meshes/jamb/jamb-title.obj +26008 -0
  40. package/public/res/meshes/jamb/jamb.blend +0 -0
  41. package/public/res/meshes/jamb/jamb.blend1 +0 -0
  42. package/public/res/meshes/jamb/logo.png +0 -0
  43. package/public/res/meshes/jamb/nidzaDice.blend +0 -0
  44. package/public/res/meshes/jamb/nidzaDice.blend1 +0 -0
  45. package/public/res/meshes/jamb/pile.blend +0 -0
  46. package/public/res/meshes/jamb/simpleCube.blend +0 -0
  47. package/public/res/meshes/jamb/simpleCube.blend1 +0 -0
  48. package/public/res/meshes/jamb/sounds/roll1.wav +0 -0
  49. package/public/res/meshes/jamb/text.png +0 -0
  50. package/public/res/multilang/en.json +27 -0
  51. package/public/res/multilang/sr.json +27 -0
  52. package/public/test.html +636 -0
  53. package/public/three-test.js +165 -0
  54. package/public/worker.html +1 -1
  55. package/readme.md +189 -115
  56. package/src/engine/cube.js +10 -1
  57. package/src/engine/engine.js +1 -5
  58. package/src/engine/loader-obj.js +9 -6
  59. package/src/engine/matrix-class.js +237 -204
  60. package/src/engine/mesh-obj.js +605 -515
  61. package/src/engine/raycast-test.js +93 -0
  62. package/src/engine/utils.js +69 -3
  63. package/src/multilang/lang.js +35 -0
  64. package/src/physics/matrix-ammo.js +168 -15
  65. package/src/shaders/fragment.wgsl.js +4 -2
  66. package/src/shaders/shaders.js +1 -1
  67. package/src/shaders/vertexShadow.wgsl.js +1 -1
  68. package/src/sounds/sounds.js +47 -0
  69. package/src/world.js +311 -248
@@ -0,0 +1,1127 @@
1
+ import MatrixEngineWGPU from "../../../src/world.js";
2
+ import {downloadMeshes} from '../../../src/engine/loader-obj.js';
3
+ import {LOG_FUNNY, LOG_INFO, LOG_MATRIX, byId, mb} from "../../../src/engine/utils.js";
4
+
5
+ export let dices = {
6
+ C: 0,
7
+ STATUS: 'FREE_TO_PLAY',
8
+ STATUS_H2: 'WAIT',
9
+ STATUS_H3: 'WAIT',
10
+ R: {},
11
+ checkAll: function() {
12
+ this.C++;
13
+ if(typeof this.R.CubePhysics1 != 'undefined' &&
14
+ typeof this.R.CubePhysics2 != 'undefined' &&
15
+ typeof this.R.CubePhysics3 != 'undefined' &&
16
+ typeof this.R.CubePhysics4 != 'undefined' &&
17
+ typeof this.R.CubePhysics5 != 'undefined' &&
18
+ typeof this.R.CubePhysics6 != 'undefined' && this.C > 1200) {
19
+ dispatchEvent(new CustomEvent('all-done', {detail: {}}))
20
+ this.C = 0;
21
+ }
22
+ },
23
+ validatePass: function() {
24
+ if(dices.STATUS == "IN_PLAY" || dices.STATUS == "FREE_TO_PLAY") {
25
+ // console.log('%cBLOCK', LOG_FUNNY)
26
+ if(dices.STATUS == "IN_PLAY") mb.error(`STATUS IS ${dices.STATUS}, please wait for results...`);
27
+ if(dices.STATUS == "FREE_TO_PLAY") mb.error(`STATUS IS ${dices.STATUS}, you need to roll dice first.`);
28
+ app.matrixSounds.play('block')
29
+ return false;
30
+ } else {
31
+ return true;
32
+ }
33
+ }
34
+ };
35
+
36
+ export let myDom = {
37
+
38
+ state: {
39
+ rowDown: []
40
+ },
41
+
42
+ memoNumberRow: [],
43
+
44
+ hideSettings: function() {
45
+ byId('blocker').style.display = 'none';
46
+ byId('messageBox').style.display = 'none';
47
+ },
48
+
49
+ createMenu: function() {
50
+
51
+ var root = document.createElement('div')
52
+ root.id = 'hud';
53
+ root.style.position = 'absolute';
54
+ root.style.right = '10%';
55
+ root.style.top = '10%';
56
+
57
+ var help = document.createElement('div')
58
+ help.id = 'HELP';
59
+ help.classList.add('btn2')
60
+ help.innerHTML = `<span data-label="help"></span>`;
61
+
62
+ var settings = document.createElement('div')
63
+ settings.id = 'settings';
64
+ settings.classList.add('btn2')
65
+ settings.innerHTML = `<span data-label="settings"></span>`;
66
+ settings.addEventListener('click', () => {
67
+
68
+ byId('messageBox').innerHTML = `
69
+ <div>
70
+ <span data-label="settings"></span>
71
+ <div>
72
+
73
+ <div>
74
+ <span data-label="sounds"></span>
75
+
76
+ <label class="switch">
77
+ <input type="checkbox">
78
+ <span class="sliderSwitch round"></span>
79
+ </label>
80
+
81
+ </div>
82
+
83
+ <div>
84
+ <button class="btn2" onclick="app.myDom.hideSettings()">
85
+ <span data-label="hide"></span>
86
+ </button>
87
+ </div>
88
+
89
+ </div>
90
+ </div>
91
+ `;
92
+
93
+ byId('blocker').style.display = 'flex';
94
+ byId('messageBox').style.display = 'flex';
95
+
96
+ dispatchEvent(new CustomEvent('updateLang', {}))
97
+ })
98
+
99
+ var roll = document.createElement('div')
100
+ roll.id = 'hud-roll';
101
+ roll.classList.add('btn');
102
+ roll.innerHTML = `<span data-label="roll"></span>`;
103
+ roll.addEventListener('click', () => {
104
+ app.ROLL()
105
+ })
106
+
107
+ var separator = document.createElement('div')
108
+ separator.innerHTML = `=======`;
109
+
110
+ root.append(settings)
111
+ root.append(help)
112
+ root.append(separator)
113
+ root.append(roll)
114
+
115
+ document.body.appendChild(root)
116
+
117
+ // global access
118
+ // app.label.update()
119
+ dispatchEvent(new CustomEvent('updateLang', {}))
120
+ },
121
+
122
+ createBlocker: function() {
123
+ var root = document.createElement('div')
124
+ root.id = 'blocker';
125
+
126
+ var messageBox = document.createElement('div')
127
+ messageBox.id = 'messageBox';
128
+
129
+ // console.log('TEST', app.label.get)
130
+ messageBox.innerHTML = `
131
+ <span data-label="welcomeMsg"></span>
132
+ <a href="https://github.com/zlatnaspirala/matrix-engine-wgpu">zlatnaspirala/matrix-engine-wgpu</a><br><br>
133
+ <button class="btn" ><span style="font-size:30px;margin:15px;padding:10px" data-label="startGame"></span></button> <br>
134
+ <div><span data-label="changeLang"></span></div>
135
+ <button class="btn" onclick="
136
+ app.label.loadMultilang('en').then(r => {
137
+ app.label.get = r;
138
+ app.label.update()
139
+ });
140
+ " ><span data-label="english"></span></button>
141
+ <button class="btn" onclick="app.label.loadMultilang('sr').then(r => {
142
+ app.label.get = r
143
+ app.label.update() })" ><span data-label="serbian"></span></button>
144
+ `;
145
+
146
+
147
+ let initialMsgBoxEvent = function() {
148
+ console.log('click on msgbox')
149
+ byId('messageBox').innerHTML = ``;
150
+ byId('blocker').style.display = 'none';
151
+ myDom.createMenu();
152
+ messageBox.removeEventListener('click', initialMsgBoxEvent)
153
+ };
154
+
155
+ messageBox.addEventListener('click', initialMsgBoxEvent)
156
+ root.append(messageBox)
157
+
158
+ document.body.appendChild(root);
159
+
160
+ app.label.update();
161
+ },
162
+
163
+ createJamb: function() {
164
+ var root = document.createElement('div')
165
+ root.id = 'jambTable';
166
+ root.style.position = 'absolute';
167
+ root.style.display = 'flex';
168
+ root.style.top = '10px';
169
+ root.style.left = '10px';
170
+ root.style.width = '200px';
171
+ root.style.background = '#7d7d7d8c';
172
+
173
+ var rowHeader = document.createElement('div')
174
+ rowHeader.id = 'rowHeader';
175
+ rowHeader.style.top = '10px';
176
+ rowHeader.style.left = '10px';
177
+ rowHeader.style.width = '200px';
178
+ rowHeader.innerHTML = '<span data-label="cornerText"></span><span id="user-points">0</span>';
179
+ root.appendChild(rowHeader);
180
+ rowHeader.classList.add('myTheme1')
181
+
182
+ var rowDown = document.createElement('div')
183
+ rowDown.id = 'rowDown';
184
+ rowDown.style.top = '10px';
185
+ rowDown.style.left = '10px';
186
+ rowDown.style.width = '200px';
187
+ rowDown.innerHTML = '↓';
188
+ rowDown.classList.add('myTheme1')
189
+ root.appendChild(rowDown);
190
+
191
+ var rowFree = document.createElement('div')
192
+ rowFree.id = 'rowFree';
193
+ rowFree.style.top = '10px';
194
+ rowFree.style.left = '10px';
195
+ rowFree.style.width = '200px';
196
+ rowFree.innerHTML = '↕';
197
+ rowFree.classList.add('myTheme1')
198
+ root.appendChild(rowFree);
199
+
200
+ var rowUp = document.createElement('div')
201
+ rowUp.id = 'rowUp';
202
+ rowUp.style.top = '10px';
203
+ rowUp.style.left = '10px';
204
+ rowUp.style.width = '200px';
205
+ rowUp.innerHTML = '↑';
206
+ rowUp.classList.add('myTheme1')
207
+ root.appendChild(rowUp);
208
+
209
+ var rowHand = document.createElement('div')
210
+ rowHand.id = 'rowHand';
211
+ rowHand.style.top = '10px';
212
+ rowHand.style.left = '10px';
213
+ rowHand.style.width = '200px';
214
+ rowHand.innerHTML = '<span data-label="hand"></span>';
215
+ rowHand.classList.add('myTheme1')
216
+ root.appendChild(rowHand);
217
+
218
+ // INJECT TABLE HEADER ROW
219
+ this.createLeftHeaderRow(rowHeader);
220
+ this.createRowDown(rowDown);
221
+ this.createRowFree(rowFree);
222
+ this.createRow(rowUp);
223
+ this.createRow(rowHand);
224
+
225
+ document.body.appendChild(root);
226
+ // console.log('JambTable added.')
227
+ },
228
+
229
+ createLeftHeaderRow: function(myRoot) {
230
+
231
+ for(var x = 1;x < 7;x++) {
232
+ var rowNumber = document.createElement('div')
233
+ rowNumber.id = 'rowNumber' + x;
234
+ rowNumber.style.top = '10px';
235
+ rowNumber.style.left = '10px';
236
+ rowNumber.style.width = 'auto';
237
+ rowNumber.style.background = '#7d7d7d8c';
238
+ rowNumber.innerHTML = `<span>${x}</span>`;
239
+ myRoot.appendChild(rowNumber);
240
+ }
241
+
242
+ var rowNumberSum = document.createElement('div')
243
+ rowNumberSum.id = 'H_rowNumberSum';
244
+
245
+ rowNumberSum.style.width = 'auto';
246
+ rowNumberSum.style.background = '#7d7d7d8c';
247
+ rowNumberSum.innerHTML = `Σ`;
248
+ myRoot.appendChild(rowNumberSum);
249
+
250
+ var rowMax = document.createElement('div')
251
+ rowMax.id = 'H_rowMax';
252
+ rowMax.style.width = 'auto';
253
+ rowMax.style.background = '#7d7d7d8c';
254
+ rowMax.innerHTML = `<span data-label="MAX"></span>`;
255
+ myRoot.appendChild(rowMax);
256
+
257
+ var rowMin = document.createElement('div')
258
+ rowMin.id = 'H_rowMax';
259
+ rowMin.style.width = 'auto';
260
+ rowMin.style.background = '#7d7d7d8c';
261
+ rowMin.innerHTML = `<span data-label="MIN"></span>`;
262
+ myRoot.appendChild(rowMin);
263
+
264
+ var rowMaxMinSum = document.createElement('div')
265
+ rowMaxMinSum.id = 'H_rowMaxMinSum';
266
+ rowMaxMinSum.style.width = 'auto';
267
+ rowMaxMinSum.style.background = '#7d7d7d8c';
268
+ rowMaxMinSum.innerHTML = `Σ`;
269
+ myRoot.appendChild(rowMaxMinSum);
270
+
271
+ var largeStraight = document.createElement('div')
272
+ largeStraight.id = 'H_largeStraight';
273
+ largeStraight.style.width = 'auto';
274
+ largeStraight.style.background = '#7d7d7d8c';
275
+ largeStraight.innerHTML = `<span data-label="straight"></span>`;
276
+ myRoot.appendChild(largeStraight);
277
+
278
+ var threeOfAKind = document.createElement('div')
279
+ threeOfAKind.id = 'H_threeOfAKind';
280
+ threeOfAKind.style.width = 'auto';
281
+ threeOfAKind.style.background = '#7d7d7d8c';
282
+ threeOfAKind.innerHTML = `<span data-label="threeOf"></span>`;
283
+ myRoot.appendChild(threeOfAKind);
284
+
285
+ var fullHouse = document.createElement('div')
286
+ fullHouse.id = 'H_fullHouse';
287
+ fullHouse.style.width = 'auto';
288
+ fullHouse.style.background = '#7d7d7d8c';
289
+ fullHouse.innerHTML = `<span data-label="fullhouse"></span>`;
290
+ myRoot.appendChild(fullHouse);
291
+
292
+ var poker = document.createElement('div')
293
+ poker.id = 'H_poker';
294
+ poker.style.width = 'auto';
295
+ poker.style.background = '#7d7d7d8c';
296
+ poker.innerHTML = `<span data-label="poker"></span>`;
297
+ myRoot.appendChild(poker);
298
+
299
+ var jamb = document.createElement('div')
300
+ jamb.id = 'H_jamb';
301
+ jamb.style.width = 'auto';
302
+ jamb.style.background = '#7d7d7d8c';
303
+ jamb.innerHTML = `<span data-label="jamb"></span>`;
304
+ myRoot.appendChild(jamb);
305
+
306
+ var rowSum = document.createElement('div')
307
+ rowSum.id = 'H_rowSum';
308
+ rowSum.style.width = 'auto';
309
+ rowSum.style.background = '#7d7d7d8c';
310
+ rowSum.innerHTML = `Σ`;
311
+ myRoot.appendChild(rowSum);
312
+
313
+ var rowSumFINAL = document.createElement('div')
314
+ rowSumFINAL.id = 'H_rowSumFINAL';
315
+ rowSumFINAL.style.width = 'auto';
316
+ rowSumFINAL.style.background = '#7d7d7d8c';
317
+ rowSumFINAL.innerHTML = `<spam data-label="final"></span>`;
318
+ myRoot.appendChild(rowSumFINAL);
319
+ },
320
+
321
+ createRow: function(myRoot) {
322
+ for(var x = 1;x < 7;x++) {
323
+ var rowNumber = document.createElement('div')
324
+ rowNumber.id = 'rowNumber' + x;
325
+ rowNumber.style.top = '10px';
326
+ rowNumber.style.left = '10px';
327
+ rowNumber.style.width = 'auto';
328
+ rowNumber.style.background = '#7d7d7d8c';
329
+ rowNumber.innerHTML = `-`;
330
+ rowNumber.addEventListener('click', () => {
331
+ console.log('LOG THIS ', this)
332
+ // works
333
+ // rowDown
334
+ if(this.state.rowDown.length == 0) {
335
+ console.log('it is no play yet in this row ', this)
336
+
337
+ }
338
+ })
339
+ myRoot.appendChild(rowNumber);
340
+ }
341
+
342
+ var rowNumberSum = document.createElement('div')
343
+ rowNumberSum.id = 'rowNumberSum';
344
+
345
+ rowNumberSum.style.width = 'auto';
346
+ rowNumberSum.style.background = '#7d7d7d8c';
347
+ rowNumberSum.innerHTML = `-`;
348
+ myRoot.appendChild(rowNumberSum);
349
+
350
+ var rowMax = document.createElement('div')
351
+ rowMax.id = 'rowMax';
352
+ rowMax.style.width = 'auto';
353
+ rowMax.style.background = '#7d7d7d8c';
354
+ rowMax.innerHTML = `-`;
355
+ myRoot.appendChild(rowMax);
356
+
357
+ var rowMin = document.createElement('div')
358
+ rowMin.id = 'rowMax';
359
+ rowMin.style.width = 'auto';
360
+ rowMin.style.background = '#7d7d7d8c';
361
+ rowMin.innerHTML = `-`;
362
+ myRoot.appendChild(rowMin);
363
+
364
+ var rowMaxMinSum = document.createElement('div')
365
+ rowMaxMinSum.id = 'rowMaxMinSum';
366
+ rowMaxMinSum.style.width = 'auto';
367
+ rowMaxMinSum.style.background = '#7d7d7d8c';
368
+ rowMaxMinSum.innerHTML = `-`;
369
+ myRoot.appendChild(rowMaxMinSum);
370
+
371
+ var largeStraight = document.createElement('div')
372
+ largeStraight.id = 'largeStraight';
373
+ largeStraight.style.width = 'auto';
374
+ largeStraight.style.background = '#7d7d7d8c';
375
+ largeStraight.innerHTML = `-`;
376
+ myRoot.appendChild(largeStraight);
377
+
378
+ var threeOfAKind = document.createElement('div')
379
+ threeOfAKind.id = 'down_threeOfAKind';
380
+ threeOfAKind.style.width = 'auto';
381
+ threeOfAKind.style.background = '#7d7d7d8c';
382
+ threeOfAKind.innerHTML = `-`;
383
+ myRoot.appendChild(threeOfAKind);
384
+
385
+ var fullHouse = document.createElement('div')
386
+ fullHouse.id = 'fullHouse';
387
+ fullHouse.style.width = 'auto';
388
+ fullHouse.style.background = '#7d7d7d8c';
389
+ fullHouse.innerHTML = `-`;
390
+ myRoot.appendChild(fullHouse);
391
+
392
+ var poker = document.createElement('div')
393
+ poker.id = 'poker';
394
+ poker.style.width = 'auto';
395
+ poker.style.background = '#7d7d7d8c';
396
+ poker.innerHTML = `-`;
397
+ myRoot.appendChild(poker);
398
+
399
+ var jamb = document.createElement('div')
400
+ jamb.id = 'jamb';
401
+ jamb.style.width = 'auto';
402
+ jamb.style.background = '#7d7d7d8c';
403
+ jamb.innerHTML = `-`;
404
+ myRoot.appendChild(jamb);
405
+
406
+ var rowSum = document.createElement('div')
407
+ rowSum.id = 'rowSum';
408
+ rowSum.style.width = 'auto';
409
+ rowSum.style.background = '#7d7d7d8c';
410
+ rowSum.innerHTML = `-`;
411
+ myRoot.appendChild(rowSum);
412
+
413
+
414
+ },
415
+
416
+ createRowFree: function(myRoot) {
417
+ for(var x = 1;x < 7;x++) {
418
+ var rowNumber = document.createElement('div')
419
+ rowNumber.id = 'free-rowNumber' + x;
420
+ rowNumber.style.top = '10px';
421
+ rowNumber.style.left = '10px';
422
+ rowNumber.style.width = 'auto';
423
+ rowNumber.style.background = '#7d7d7d8c';
424
+ rowNumber.innerHTML = `-`;
425
+ rowNumber.addEventListener('click', (e) => {
426
+ if(dices.validatePass() == false) return;
427
+ var getName = e.target.id;
428
+ getName = getName.replace('free-rowNumber', '')
429
+ var count23456 = 0;
430
+ for(let key in dices.R) {
431
+ if(parseInt(dices.R[key]) == parseInt(getName)) {
432
+ count23456++;
433
+ }
434
+ }
435
+ this.state.rowDown.push((count23456 * parseInt(getName)))
436
+ e.target.innerHTML = (count23456 * parseInt(getName));
437
+ if(parseInt(getName) == 6) {
438
+ myDom.calcFreeNumbers()
439
+ }
440
+ dices.STATUS = "FREE_TO_PLAY";
441
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
442
+ })
443
+ myRoot.appendChild(rowNumber);
444
+ }
445
+
446
+ var rowNumberSum = document.createElement('div')
447
+ rowNumberSum.id = 'free-rowNumberSum';
448
+ rowNumberSum.style.width = 'auto';
449
+ rowNumberSum.style.background = '#7d7d7d8c';
450
+ rowNumberSum.innerHTML = `-`;
451
+ myRoot.appendChild(rowNumberSum);
452
+
453
+ var rowMax = document.createElement('div')
454
+ rowMax.id = 'free-rowMax';
455
+ rowMax.style.width = 'auto';
456
+ rowMax.style.background = '#7d7d7d8c';
457
+ rowMax.innerHTML = `-`;
458
+ rowMax.addEventListener("click", this.calcFreeRowMax);
459
+ myRoot.appendChild(rowMax);
460
+
461
+ var rowMin = document.createElement('div')
462
+ rowMin.id = 'free-rowMin';
463
+ rowMin.style.width = 'auto';
464
+ rowMin.style.background = '#7d7d7d8c';
465
+ rowMin.innerHTML = `-`;
466
+ rowMin.addEventListener('click', this.calcFreeRowMin);
467
+ myRoot.appendChild(rowMin);
468
+
469
+ var rowMaxMinSum = document.createElement('div')
470
+ rowMaxMinSum.id = 'free-rowMaxMinSum';
471
+ rowMaxMinSum.style.width = 'auto';
472
+ rowMaxMinSum.style.background = '#7d7d7d8c';
473
+ rowMaxMinSum.innerHTML = `-`;
474
+ myRoot.appendChild(rowMaxMinSum);
475
+
476
+ var largeStraight = document.createElement('div')
477
+ largeStraight.id = 'free-largeStraight';
478
+ largeStraight.style.width = 'auto';
479
+ largeStraight.style.background = '#7d7d7d8c';
480
+ largeStraight.innerHTML = `-`;
481
+ largeStraight.addEventListener('click', this.attachFreeKenta);
482
+ myRoot.appendChild(largeStraight);
483
+
484
+ var threeOfAKind = document.createElement('div')
485
+ threeOfAKind.id = 'free-threeOfAKind';
486
+ threeOfAKind.style.width = 'auto';
487
+ threeOfAKind.style.background = '#7d7d7d8c';
488
+ threeOfAKind.innerHTML = `-`;
489
+ threeOfAKind.addEventListener('click', this.attachFreeTrilling)
490
+ myRoot.appendChild(threeOfAKind);
491
+
492
+ var fullHouse = document.createElement('div')
493
+ fullHouse.id = 'free-fullHouse';
494
+ fullHouse.style.width = 'auto';
495
+ fullHouse.style.background = '#7d7d7d8c';
496
+ fullHouse.innerHTML = `-`;
497
+ fullHouse.addEventListener('click', this.attachFreeFullHouse)
498
+ myRoot.appendChild(fullHouse);
499
+
500
+ var poker = document.createElement('div')
501
+ poker.id = 'free-poker';
502
+ poker.style.width = 'auto';
503
+ poker.style.background = '#7d7d7d8c';
504
+ poker.innerHTML = `-`;
505
+ poker.addEventListener('click', this.attachFreePoker)
506
+ myRoot.appendChild(poker);
507
+
508
+ var jamb = document.createElement('div')
509
+ jamb.id = 'free-jamb';
510
+ jamb.style.width = 'auto';
511
+ jamb.style.background = '#7d7d7d8c';
512
+ jamb.innerHTML = `-`;
513
+ jamb.addEventListener('click', this.attachFreeJamb)
514
+ myRoot.appendChild(jamb);
515
+
516
+ var rowSum = document.createElement('div')
517
+ rowSum.id = 'free-rowSum';
518
+ rowSum.style.width = 'auto';
519
+ rowSum.style.background = '#7d7d7d8c';
520
+ rowSum.innerHTML = `-`;
521
+ myRoot.appendChild(rowSum);
522
+ },
523
+
524
+ createRowDown: function(myRoot) {
525
+ for(var x = 1;x < 7;x++) {
526
+ var rowNumber = document.createElement('div')
527
+ rowNumber.id = 'down-rowNumber' + x;
528
+ rowNumber.style.top = '10px';
529
+ rowNumber.style.left = '10px';
530
+ rowNumber.style.width = 'auto';
531
+ rowNumber.style.background = '#7d7d7d8c';
532
+ rowNumber.innerHTML = `-`;
533
+
534
+ this.memoNumberRow.push(rowNumber)
535
+ // initial
536
+ if(x == 1) {
537
+ rowNumber.classList.add('canPlay')
538
+ }
539
+
540
+ rowNumber.addEventListener('click', (e) => {
541
+
542
+ if(dices.validatePass() == false) return;
543
+
544
+ var getName = e.target.id;
545
+ getName = getName.replace('down-rowNumber', '')
546
+ if(this.state.rowDown.length == 0) {
547
+ console.log('LOG ', getName)
548
+ if(parseInt(getName) == 1) {
549
+ var count1 = 0;
550
+ for(let key in dices.R) {
551
+ if(parseInt(dices.R[key]) == 1) {
552
+ console.log('yeap', dices.R)
553
+ count1++;
554
+ }
555
+ }
556
+ this.state.rowDown.push(count1)
557
+ e.target.innerHTML = count1;
558
+ e.target.classList.remove('canPlay')
559
+ this.memoNumberRow[1].classList.add('canPlay')
560
+ dices.STATUS = "FREE_TO_PLAY";
561
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
562
+ } else {
563
+ console.log('BLOCK')
564
+
565
+ }
566
+ } else {
567
+ if(this.state.rowDown.length > 0) {
568
+ if(parseInt(getName) == this.state.rowDown.length + 1) {
569
+ console.log('moze za ', parseInt(getName))
570
+ var count23456 = 0;
571
+ for(let key in dices.R) {
572
+ if(parseInt(dices.R[key]) == parseInt(getName)) {
573
+ console.log('yeap', dices.R)
574
+ count23456++;
575
+ }
576
+ }
577
+ this.state.rowDown.push((count23456 * parseInt(getName)))
578
+ //
579
+ e.target.innerHTML = (count23456 * parseInt(getName));
580
+ if(parseInt(getName) == 6) {
581
+ // calc sum
582
+ console.log('calc sum for numb ~ ')
583
+ // this.state.rowDown.length + 1
584
+ myDom.calcDownNumbers()
585
+ e.target.classList.remove('canPlay')
586
+ this.rowMax.classList.add('canPlay')
587
+ } else {
588
+ e.target.classList.remove('canPlay')
589
+ this.memoNumberRow[parseInt(getName)].classList.add('canPlay')
590
+ }
591
+ dices.STATUS = "FREE_TO_PLAY";
592
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
593
+ } else {
594
+ console.log('BLOCK')
595
+ }
596
+ }
597
+ }
598
+ })
599
+ myRoot.appendChild(rowNumber);
600
+ }
601
+
602
+ var rowNumberSum = document.createElement('div')
603
+ rowNumberSum.id = 'down-rowNumberSum';
604
+
605
+ rowNumberSum.style.width = 'auto';
606
+ rowNumberSum.style.background = '#7d7d7d8c';
607
+ rowNumberSum.innerHTML = `-`;
608
+ myRoot.appendChild(rowNumberSum);
609
+
610
+ var rowMax = document.createElement('div')
611
+ rowMax.id = 'down-rowMax';
612
+ rowMax.style.width = 'auto';
613
+ rowMax.style.background = '#7d7d7d8c';
614
+ rowMax.innerHTML = `-`;
615
+ myRoot.appendChild(rowMax);
616
+ this.rowMax = rowMax;
617
+ // this.rowMax.addEventListener("click", (e) => {
618
+ // e.target.classList.remove('canPlay')
619
+ // this.rowMin.classList.add('canPlay')
620
+ // })
621
+
622
+ var rowMin = document.createElement('div')
623
+ rowMin.id = 'down-rowMin';
624
+ rowMin.style.width = 'auto';
625
+ rowMin.style.background = '#7d7d7d8c';
626
+ rowMin.innerHTML = `-`;
627
+ this.rowMin = rowMin;
628
+ myRoot.appendChild(rowMin);
629
+ this.rowMin = rowMin;
630
+ var rowMaxMinSum = document.createElement('div')
631
+ rowMaxMinSum.id = 'down-rowMaxMinSum';
632
+ rowMaxMinSum.style.width = 'auto';
633
+ rowMaxMinSum.style.background = '#7d7d7d8c';
634
+ rowMaxMinSum.innerHTML = `-`;
635
+ myRoot.appendChild(rowMaxMinSum);
636
+
637
+ var largeStraight = document.createElement('div')
638
+ largeStraight.id = 'down-largeStraight';
639
+ largeStraight.style.width = 'auto';
640
+ largeStraight.style.background = '#7d7d7d8c';
641
+ largeStraight.innerHTML = `-`;
642
+ myRoot.appendChild(largeStraight);
643
+
644
+ var threeOfAKind = document.createElement('div')
645
+ threeOfAKind.id = 'down-threeOfAKind';
646
+ threeOfAKind.style.width = 'auto';
647
+ threeOfAKind.style.background = '#7d7d7d8c';
648
+ threeOfAKind.innerHTML = `-`;
649
+ myRoot.appendChild(threeOfAKind);
650
+
651
+ var fullHouse = document.createElement('div')
652
+ fullHouse.id = 'down-fullHouse';
653
+ fullHouse.style.width = 'auto';
654
+ fullHouse.style.background = '#7d7d7d8c';
655
+ fullHouse.innerHTML = `-`;
656
+ myRoot.appendChild(fullHouse);
657
+
658
+ var poker = document.createElement('div')
659
+ poker.id = 'down-poker';
660
+ poker.style.width = 'auto';
661
+ poker.style.background = '#7d7d7d8c';
662
+ poker.innerHTML = `-`;
663
+ myRoot.appendChild(poker);
664
+
665
+ var jamb = document.createElement('div')
666
+ jamb.id = 'down-jamb';
667
+ jamb.style.width = 'auto';
668
+ jamb.style.background = '#7d7d7d8c';
669
+ jamb.innerHTML = `-`;
670
+ myRoot.appendChild(jamb);
671
+
672
+ var rowSum = document.createElement('div')
673
+ rowSum.id = 'down-rowSum';
674
+ rowSum.style.width = 'auto';
675
+ rowSum.style.background = '#7d7d7d8c';
676
+ rowSum.innerHTML = `-`;
677
+ myRoot.appendChild(rowSum);
678
+ },
679
+
680
+ calcDownNumbers: function() {
681
+ var s = 0;
682
+ this.state.rowDown.forEach((i) => {
683
+ console.log(parseFloat(i))
684
+ s += parseFloat(i)
685
+ })
686
+ byId('down-rowNumberSum').style.background = 'rgb(113 0 0 / 55%)';
687
+ byId('down-rowNumberSum').innerHTML = s;
688
+ // console.log('this.rowMax also set free to plat status', this.rowMax)
689
+ dices.STATUS = "FREE_TO_PLAY";
690
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
691
+ this.rowMax.addEventListener("click", this.calcDownRowMax)
692
+ },
693
+
694
+ // free row start
695
+
696
+ calcFreeNumbers: function() {
697
+ var s = 0;
698
+ this.state.rowDown.forEach((i) => {
699
+ console.log(parseFloat(i))
700
+ s += parseFloat(i)
701
+ })
702
+ byId('free-rowNumberSum').style.background = 'rgb(113 0 0 / 55%)';
703
+ byId('free-rowNumberSum').innerHTML = s;
704
+ // console.log('this.rowMax also set free to plat status', this.rowMax)
705
+ dices.STATUS = "FREE_TO_PLAY";
706
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
707
+ byId('free-rowMax').addEventListener("click", this.calc)
708
+ },
709
+
710
+ calcFreeRowMax: (e) => {
711
+ if(dices.validatePass() == false) return;
712
+ var test = 0;
713
+ let keyLessNum = Object.keys(dices.R).reduce((key, v) => dices.R[v] < dices.R[key] ? v : key);
714
+ for(var key in dices.R) {
715
+ if(key != keyLessNum) {
716
+ test += parseFloat(dices.R[key]);
717
+ }
718
+ }
719
+ e.target.innerHTML = test;
720
+ // now attach next event.
721
+ dices.STATUS = "FREE_TO_PLAY";
722
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}));
723
+ byId('free-rowMax').removeEventListener("click", this.calcFreeRowMax);
724
+ },
725
+
726
+ calcFreeRowMin: () => {
727
+ if(dices.validatePass() == false) return;
728
+ var maxTestKey = Object.keys(dices.R).reduce(function(a, b) {return dices.R[a] > dices.R[b] ? a : b});
729
+ var test = 0;
730
+ for(var key in dices.R) {
731
+ if(key != maxTestKey) {
732
+ test += parseFloat(dices.R[key])
733
+ } else {
734
+ console.log('not calc dice ', dices.R[key])
735
+ }
736
+ }
737
+ byId('free-rowMin').innerHTML = test;
738
+ byId('free-rowMin').removeEventListener('click', this.calcFreeRowMin);
739
+ // calc max min dont forget rules for bonus +30
740
+ var SUMMINMAX = parseFloat(byId('free-rowMax').innerHTML) - parseFloat(byId('free-rowMin').innerHTML)
741
+ byId('free-rowMaxMinSum').innerHTML = SUMMINMAX;
742
+ myDom.incrasePoints(SUMMINMAX);
743
+ dices.STATUS = "FREE_TO_PLAY";
744
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
745
+ },
746
+
747
+ attachFreeKenta: function() {
748
+ if(dices.validatePass() == false) return;
749
+
750
+ console.log('Test free kenta :', dices.R)
751
+ var result = app.myDom.checkForDuplicate()[0];
752
+ var testArray = app.myDom.checkForDuplicate()[1];
753
+ console.log('TEST duplik: ' + result);
754
+ if(result.length == 2) {
755
+ console.log('TEST duplik less 3 : ' + result);
756
+ var locPrevent = false;
757
+ testArray.forEach((item, index, array) => {
758
+ if(result[0].value == item.value && locPrevent == false) {
759
+ console.log('detect by value item.value', item.value)
760
+ locPrevent = true;
761
+ array.splice(index, 1);
762
+ }
763
+ })
764
+ // if we catch 1 and 6 in same stack then it is not possible for kenta...
765
+ var test1 = false, test6 = false;
766
+ testArray.forEach((item, index, array) => {
767
+ if(item.value == 1) {
768
+ test1 = true;
769
+ } else if(item.value == 6) {
770
+ test6 = true;
771
+ }
772
+ })
773
+ if(test1 == true && test6 == true) {
774
+ byId('free-largeStraight').innerHTML = `0`;
775
+ } else if(test1 == true) {
776
+ byId('free-largeStraight').innerHTML = 15 + 50;
777
+ myDom.incrasePoints(15 + 50);
778
+ } else if(test6 == true) {
779
+ byId('free-largeStraight').innerHTML = 20 + 50;
780
+ myDom.incrasePoints(20 + 50);
781
+ }
782
+ } else if(result < 2) {
783
+ byId('free-largeStraight').innerHTML = 66;
784
+ myDom.incrasePoints(66);
785
+ } else {
786
+ // zero value
787
+ byId('free-largeStraight').innerHTML = `0`;
788
+ }
789
+ byId('free-largeStraight').removeEventListener('click', this.attachFreeKenta)
790
+ dices.STATUS = "FREE_TO_PLAY";
791
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
792
+ },
793
+
794
+ attachFreeTrilling: function() {
795
+ if(dices.validatePass() == false) return;
796
+
797
+ var result = app.myDom.checkForDuplicate()[0];
798
+ // var testArray = app.myDom.checkForDuplicate()[1];
799
+ // console.log('DUPLICATE FOR TRILING ', result);
800
+ if(result.length > 2) {
801
+ var testWin = 0;
802
+ var TEST = app.myDom.checkForAllDuplicate();
803
+ console.log('DUPLICATE FOR TRILING TEST ', TEST);
804
+ for(var key in TEST) {
805
+ if(TEST[key] > 2) {
806
+ // win
807
+ var getDiceID = parseInt(key.replace('value__', ''))
808
+ testWin = getDiceID * 3;
809
+ }
810
+ }
811
+ console.log('DUPLICATE FOR TRILING 30 + TEST ', testWin);
812
+ if(testWin > 0) {
813
+ byId('free-threeOfAKind').innerHTML = 20 + testWin;
814
+ myDom.incrasePoints(20 + testWin);
815
+ }
816
+ } else {
817
+ byId('free-threeOfAKind').innerHTML = 0;
818
+ }
819
+ byId('free-threeOfAKind').removeEventListener('click', this.attachFreeTrilling)
820
+ dices.STATUS = "FREE_TO_PLAY";
821
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
822
+ },
823
+
824
+ attachFreeFullHouse: function() {
825
+
826
+ if(dices.validatePass() == false) return;
827
+
828
+ var TEST = app.myDom.checkForAllDuplicate();
829
+ // console.log('DUPLICATE FOR FULL HOUSE 30 + TEST ');
830
+ var win = 0;
831
+ var testPair = false;
832
+ var testTrilling = false;
833
+ var testWinPair = 0;
834
+ var testWinTrilling = 0;
835
+ for(var key in TEST) {
836
+ if(TEST[key] == 2) {
837
+ // win
838
+ var getDiceID = parseInt(key.replace('value__', ''))
839
+ testWinPair = getDiceID * 2;
840
+ testPair = true;
841
+ } else if(TEST[key] == 3) {
842
+ var getDiceID = parseInt(key.replace('value__', ''))
843
+ testWinTrilling = getDiceID * 3;
844
+ testTrilling = true;
845
+ }
846
+ }
847
+ if(testPair == true && testTrilling == true) {
848
+ win = testWinPair + testWinTrilling;
849
+ byId('free-fullHouse').innerHTML = win + 30;
850
+ myDom.incrasePoints(win + 30);
851
+ } else {
852
+ byId('free-fullHouse').innerHTML = 0;
853
+ }
854
+
855
+ byId('free-fullHouse').removeEventListener('click', this.attachFreeFullHouse)
856
+ dices.STATUS = "FREE_TO_PLAY";
857
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
858
+ },
859
+
860
+ attachFreePoker: function() {
861
+ if(dices.validatePass() == false) return;
862
+
863
+ var TEST = app.myDom.checkForAllDuplicate();
864
+ // console.log('DUPLICATE FOR poker 40 + TEST ');
865
+ for(var key in TEST) {
866
+ if(TEST[key] == 4 || TEST[key] > 4) {
867
+ var getDiceID = parseInt(key.replace('value__', ''))
868
+ var win = getDiceID * 4;
869
+ byId('free-poker').innerHTML = win + 40;
870
+ myDom.incrasePoints(win + 40);
871
+ }
872
+ }
873
+ byId('free-poker').removeEventListener('click', this.attachFreePoker)
874
+ dices.STATUS = "FREE_TO_PLAY";
875
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
876
+ },
877
+
878
+ attachFreeJamb: function() {
879
+ if(dices.validatePass() == false) return;
880
+ // console.log('<GAMEPLAY><FREE ROW IS FEELED>')
881
+ var TEST = app.myDom.checkForAllDuplicate();
882
+ for(var key in TEST) {
883
+ if(TEST[key] == 5 || TEST[key] > 5) {
884
+ // win
885
+ var getDiceID = parseInt(key.replace('value__', ''))
886
+ var win = getDiceID * 5;
887
+ byId('free-poker').innerHTML = win + 50;
888
+ myDom.incrasePoints(win + 50);
889
+ }
890
+ }
891
+ byId('free-jamb').removeEventListener('click', this.attachFreeJamb)
892
+ dices.STATUS = "FREE_TO_PLAY";
893
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
894
+ },
895
+ // end of free row
896
+
897
+ calcDownRowMax: (e) => {
898
+ if(dices.validatePass() == false) return;
899
+ e.target.classList.remove('canPlay');
900
+ this.rowMin.classList.add('canPlay');
901
+ var test = 0;
902
+ let keyLessNum = Object.keys(dices.R).reduce((key, v) => dices.R[v] < dices.R[key] ? v : key);
903
+ // console.log('FIND MIN DICE TO REMOVE FROM SUM ', keyLessNum);
904
+ for(var key in dices.R) {
905
+ if(key != keyLessNum) {
906
+ test += parseFloat(dices.R[key]);
907
+ }
908
+ }
909
+ e.target.innerHTML = test;
910
+ // now attach next event.
911
+ dices.STATUS = "FREE_TO_PLAY";
912
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}));
913
+ this.rowMax.removeEventListener("click", this.calcDownRowMax);
914
+ byId('down-rowMin').addEventListener('click', this.calcDownRowMin);
915
+ },
916
+
917
+ incrasePoints: function(arg) {
918
+ byId('user-points').innerHTML = parseInt(byId('user-points').innerHTML) + parseInt(arg);
919
+ },
920
+
921
+ calcDownRowMin: () => {
922
+ if(dices.validatePass() == false) return;
923
+ this.rowMin.classList.remove('canPlay')
924
+ console.log('MIN ENABLED')
925
+ var maxTestKey = Object.keys(dices.R).reduce(function(a, b) {return dices.R[a] > dices.R[b] ? a : b});
926
+ var test = 0;
927
+ for(var key in dices.R) {
928
+ if(key != maxTestKey) {
929
+ test += parseFloat(dices.R[key])
930
+ } else {
931
+ console.log('not calc dice ', dices.R[key])
932
+ }
933
+ }
934
+ this.rowMin.innerHTML = test;
935
+ byId('down-rowMin').removeEventListener('click', this.calcDownRowMin);
936
+ // calc max min dont forget rules for bonus +30
937
+ var SUMMINMAX = parseFloat(this.rowMax.innerHTML) - parseFloat(this.rowMin.innerHTML)
938
+ byId('down-rowMaxMinSum').innerHTML = SUMMINMAX;
939
+ myDom.incrasePoints(SUMMINMAX);
940
+ dices.STATUS = "FREE_TO_PLAY";
941
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
942
+ byId('down-largeStraight').classList.add('canPlay');
943
+ byId('down-largeStraight').addEventListener('click', this.attachKenta)
944
+ },
945
+
946
+ checkForDuplicate: function() {
947
+ var testArray = [];
948
+ for(var key in dices.R) {
949
+ var gen = {myId: key, value: dices.R[key]};
950
+ testArray.push(gen);
951
+ }
952
+ var result = Object.values(testArray.reduce((c, v) => {
953
+ let k = v.value;
954
+ c[k] = c[k] || [];
955
+ c[k].push(v);
956
+ return c;
957
+ }, {})).reduce((c, v) => v.length > 1 ? c.concat(v) : c, []);
958
+
959
+ return [result, testArray];
960
+ },
961
+
962
+ checkForAllDuplicate: function() {
963
+ var testArray = [];
964
+ for(var key in dices.R) {
965
+ var gen = {myId: key, value: dices.R[key]};
966
+ testArray.push(gen);
967
+ }
968
+ // console.log('testArray ', testArray)
969
+ var result = Object.values(testArray.reduce((c, v) => {
970
+ let k = v.value;
971
+ c[k] = c[k] || [];
972
+ c[k].push(v);
973
+ return c;
974
+ }, {})).reduce((c, v) => v.length > 1 ? c.concat(v) : c, []);
975
+ var discret = {};
976
+ result.forEach((item, index, array) => {
977
+ if(typeof discret['value__' + item.value] === 'undefined') {
978
+ discret['value__' + item.value] = 1;
979
+ } else {
980
+ discret['value__' + item.value] += 1;
981
+ }
982
+ })
983
+ return discret;
984
+ },
985
+
986
+ attachKenta: function() {
987
+ console.log('Test kenta ', dices.R)
988
+ byId('down-largeStraight').classList.remove('canPlay')
989
+ var result = app.myDom.checkForDuplicate()[0];
990
+ var testArray = app.myDom.checkForDuplicate()[1];
991
+ // console.log('TEST duplik: ' + result);
992
+ if(result.length == 2) {
993
+ console.log('TEST duplik less 3 : ' + result);
994
+ var locPrevent = false;
995
+ testArray.forEach((item, index, array) => {
996
+ if(result[0].value == item.value && locPrevent == false) {
997
+ console.log('detect by value item.value', item.value)
998
+ locPrevent = true;
999
+ array.splice(index, 1);
1000
+ }
1001
+ })
1002
+ // if we catch 1 and 6 in same stack then it is not possible for kenta...
1003
+ var test1 = false, test6 = false;
1004
+ testArray.forEach((item, index, array) => {
1005
+ if(item.value == 1) {
1006
+ test1 = true;
1007
+ } else if(item.value == 6) {
1008
+ test6 = true;
1009
+ }
1010
+ })
1011
+ if(test1 == true && test6 == true) {
1012
+ byId('down-largeStraight').innerHTML = `0`;
1013
+ } else if(test1 == true) {
1014
+ byId('down-largeStraight').innerHTML = 15 + 50;
1015
+ myDom.incrasePoints(15 + 50);
1016
+ } else if(test6 == true) {
1017
+ byId('down-largeStraight').innerHTML = 20 + 50;
1018
+ myDom.incrasePoints(20 + 50);
1019
+ }
1020
+ } else if(result < 2) {
1021
+ byId('down-largeStraight').innerHTML = 66;
1022
+ myDom.incrasePoints(66);
1023
+ } else {
1024
+ // zero value
1025
+ byId('down-largeStraight').innerHTML = `0`;
1026
+ }
1027
+ byId('down-threeOfAKind').addEventListener('click', this.attachDownTrilling)
1028
+ byId('down-largeStraight').removeEventListener('click', this.attachKenta)
1029
+ dices.STATUS = "FREE_TO_PLAY";
1030
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1031
+ },
1032
+
1033
+ attachDownTrilling: function() {
1034
+ var result = app.myDom.checkForDuplicate()[0];
1035
+ // var testArray = app.myDom.checkForDuplicate()[1];
1036
+ // console.log('DUPLICATE FOR TRILING ', result);
1037
+ if(result.length > 2) {
1038
+ var testWin = 0;
1039
+ var TEST = app.myDom.checkForAllDuplicate();
1040
+ console.log('DUPLICATE FOR TRILING TEST ', TEST);
1041
+ for(var key in TEST) {
1042
+ if(TEST[key] > 2) {
1043
+ // win
1044
+ var getDiceID = parseInt(key.replace('value__', ''))
1045
+ testWin = getDiceID * 3;
1046
+ }
1047
+ }
1048
+ console.log('DUPLICATE FOR TRILING 30 + TEST ', testWin);
1049
+ byId('down-threeOfAKind').innerHTML = 20 + testWin;
1050
+ myDom.incrasePoints(20 + testWin);
1051
+ } else {
1052
+ byId('down-threeOfAKind').innerHTML = 0;
1053
+ }
1054
+ byId('down-threeOfAKind').removeEventListener('click', this.attachDownTrilling)
1055
+ byId('down-fullHouse').addEventListener('click', this.attachDownFullHouse)
1056
+ dices.STATUS = "FREE_TO_PLAY";
1057
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1058
+ },
1059
+
1060
+ attachDownFullHouse: function() {
1061
+ var TEST = app.myDom.checkForAllDuplicate();
1062
+ // console.log('DUPLICATE FOR FULL HOUSE 30 + TEST ');
1063
+ var win = 0;
1064
+ var testPair = false;
1065
+ var testTrilling = false;
1066
+ var testWinPair = 0;
1067
+ var testWinTrilling = 0;
1068
+ for(var key in TEST) {
1069
+ if(TEST[key] == 2) {
1070
+ // win
1071
+ var getDiceID = parseInt(key.replace('value__', ''))
1072
+ testWinPair = getDiceID * 2;
1073
+ testPair = true;
1074
+ } else if(TEST[key] == 3) {
1075
+ var getDiceID = parseInt(key.replace('value__', ''))
1076
+ testWinTrilling = getDiceID * 3;
1077
+ testTrilling = true;
1078
+ }
1079
+ }
1080
+ if(testPair == true && testTrilling == true) {
1081
+ win = testWinPair + testWinTrilling;
1082
+ byId('down-fullHouse').innerHTML = win + 30;
1083
+ myDom.incrasePoints(win + 30);
1084
+ } else {
1085
+ byId('down-fullHouse').innerHTML = 0;
1086
+ }
1087
+ byId('down-poker').addEventListener('click', this.attachDownPoker)
1088
+ byId('down-fullHouse').removeEventListener('click', this.attachDownFullHouse)
1089
+ dices.STATUS = "FREE_TO_PLAY";
1090
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1091
+ },
1092
+
1093
+ attachDownPoker: function() {
1094
+ var TEST = app.myDom.checkForAllDuplicate();
1095
+ // console.log('DUPLICATE FOR poker 40 + TEST ');
1096
+ for(var key in TEST) {
1097
+ if(TEST[key] == 4 || TEST[key] > 4) {
1098
+ // win
1099
+ var getDiceID = parseInt(key.replace('value__', ''))
1100
+ var win = getDiceID * 4;
1101
+ byId('down-poker').innerHTML = win + 40;
1102
+ myDom.incrasePoints(win + 40);
1103
+ }
1104
+ }
1105
+ byId('down-poker').removeEventListener('click', this.attachDownPoker)
1106
+ byId('down-jamb').addEventListener('click', this.attachDownJamb)
1107
+ dices.STATUS = "FREE_TO_PLAY";
1108
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1109
+ },
1110
+
1111
+ attachDownJamb: function() {
1112
+ byId('down-jamb').removeEventListener('click', this.attachDownJamb)
1113
+ console.log('<GAMEPLAY><DOWN ROW IS FEELED>')
1114
+ var TEST = app.myDom.checkForAllDuplicate();
1115
+ for(var key in TEST) {
1116
+ if(TEST[key] == 5 || TEST[key] > 5) {
1117
+ // win
1118
+ var getDiceID = parseInt(key.replace('value__', ''))
1119
+ var win = getDiceID * 5;
1120
+ byId('down-poker').innerHTML = win + 50;
1121
+ myDom.incrasePoints(win + 50);
1122
+ }
1123
+ }
1124
+ dices.STATUS = "FREE_TO_PLAY";
1125
+ dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1126
+ }
1127
+ }