matrix-engine-wgpu 1.2.2 → 1.2.4

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 (204) hide show
  1. package/index.js +1 -1
  2. package/package.json +2 -1
  3. package/.codesandbox/tasks.json +0 -46
  4. package/.devcontainer/devcontainer.json +0 -22
  5. package/.github/dependabot.yml +0 -12
  6. package/REFERENCE.md +0 -59
  7. package/app-worker.js +0 -45
  8. package/dev.md +0 -460
  9. package/empty.js +0 -13
  10. package/examples/games/jamb/html-content.js +0 -128
  11. package/examples/games/jamb/jamb.js +0 -1340
  12. package/examples/games/jamb/readme.md +0 -3
  13. package/examples/load-obj-file.js +0 -78
  14. package/examples/unlit-textures.js +0 -31
  15. package/examples.js +0 -39
  16. package/main.js +0 -635
  17. package/non-project-files/cubebuffer-example.js +0 -51
  18. package/non-project-files/dev.txt +0 -21
  19. package/non-project-files/image1.png +0 -0
  20. package/non-project-files/image6.png +0 -0
  21. package/public/ammojs/ammo.js +0 -957
  22. package/public/ammojs/ammo.wasm.js +0 -921
  23. package/public/ammojs/ammo.wasm.wasm +0 -0
  24. package/public/app-worker.js +0 -47
  25. package/public/app.js +0 -12502
  26. package/public/css/style.css +0 -710
  27. package/public/empty.html +0 -25
  28. package/public/empty.js +0 -10387
  29. package/public/examples.html +0 -27
  30. package/public/examples.js +0 -11946
  31. package/public/index.html +0 -20
  32. package/public/manifest copy.web +0 -35
  33. package/public/manifest.web +0 -25
  34. package/public/res/audios/block.mp3 +0 -0
  35. package/public/res/audios/dice-roll.mp3 +0 -0
  36. package/public/res/audios/dice1.mp3 +0 -0
  37. package/public/res/audios/dice2.mp3 +0 -0
  38. package/public/res/audios/kenney/Kenney.url +0 -2
  39. package/public/res/audios/kenney/License.txt +0 -22
  40. package/public/res/audios/kenney/Patreon.url +0 -2
  41. package/public/res/audios/kenney/audios/back_001.ogg +0 -0
  42. package/public/res/audios/kenney/audios/back_002.ogg +0 -0
  43. package/public/res/audios/kenney/audios/back_003.ogg +0 -0
  44. package/public/res/audios/kenney/audios/back_004.ogg +0 -0
  45. package/public/res/audios/kenney/audios/bong_001.ogg +0 -0
  46. package/public/res/audios/kenney/audios/click_001.ogg +0 -0
  47. package/public/res/audios/kenney/audios/click_002.ogg +0 -0
  48. package/public/res/audios/kenney/audios/click_003.ogg +0 -0
  49. package/public/res/audios/kenney/audios/click_004.ogg +0 -0
  50. package/public/res/audios/kenney/audios/click_005.ogg +0 -0
  51. package/public/res/audios/kenney/audios/close_001.ogg +0 -0
  52. package/public/res/audios/kenney/audios/close_002.ogg +0 -0
  53. package/public/res/audios/kenney/audios/close_003.ogg +0 -0
  54. package/public/res/audios/kenney/audios/close_004.ogg +0 -0
  55. package/public/res/audios/kenney/audios/confirmation_001.ogg +0 -0
  56. package/public/res/audios/kenney/audios/confirmation_002.ogg +0 -0
  57. package/public/res/audios/kenney/audios/confirmation_003.ogg +0 -0
  58. package/public/res/audios/kenney/audios/confirmation_004.ogg +0 -0
  59. package/public/res/audios/kenney/audios/drop_001.ogg +0 -0
  60. package/public/res/audios/kenney/audios/drop_002.ogg +0 -0
  61. package/public/res/audios/kenney/audios/drop_003.ogg +0 -0
  62. package/public/res/audios/kenney/audios/drop_004.ogg +0 -0
  63. package/public/res/audios/kenney/audios/error_001.ogg +0 -0
  64. package/public/res/audios/kenney/audios/error_002.ogg +0 -0
  65. package/public/res/audios/kenney/audios/error_003.ogg +0 -0
  66. package/public/res/audios/kenney/audios/error_004.ogg +0 -0
  67. package/public/res/audios/kenney/audios/error_005.ogg +0 -0
  68. package/public/res/audios/kenney/audios/error_006.ogg +0 -0
  69. package/public/res/audios/kenney/audios/error_007.ogg +0 -0
  70. package/public/res/audios/kenney/audios/error_008.ogg +0 -0
  71. package/public/res/audios/kenney/audios/glass_001.ogg +0 -0
  72. package/public/res/audios/kenney/audios/glass_002.ogg +0 -0
  73. package/public/res/audios/kenney/audios/glass_003.ogg +0 -0
  74. package/public/res/audios/kenney/audios/glass_004.ogg +0 -0
  75. package/public/res/audios/kenney/audios/glass_005.ogg +0 -0
  76. package/public/res/audios/kenney/audios/glass_006.ogg +0 -0
  77. package/public/res/audios/kenney/audios/glitch_001.ogg +0 -0
  78. package/public/res/audios/kenney/audios/glitch_002.ogg +0 -0
  79. package/public/res/audios/kenney/audios/glitch_003.ogg +0 -0
  80. package/public/res/audios/kenney/audios/glitch_004.ogg +0 -0
  81. package/public/res/audios/kenney/audios/maximize_001.ogg +0 -0
  82. package/public/res/audios/kenney/audios/maximize_002.ogg +0 -0
  83. package/public/res/audios/kenney/audios/maximize_003.ogg +0 -0
  84. package/public/res/audios/kenney/audios/maximize_004.ogg +0 -0
  85. package/public/res/audios/kenney/audios/maximize_005.ogg +0 -0
  86. package/public/res/audios/kenney/audios/maximize_006.ogg +0 -0
  87. package/public/res/audios/kenney/audios/maximize_007.ogg +0 -0
  88. package/public/res/audios/kenney/audios/maximize_008.ogg +0 -0
  89. package/public/res/audios/kenney/audios/maximize_009.ogg +0 -0
  90. package/public/res/audios/kenney/audios/minimize_001.ogg +0 -0
  91. package/public/res/audios/kenney/audios/minimize_002.ogg +0 -0
  92. package/public/res/audios/kenney/audios/minimize_003.ogg +0 -0
  93. package/public/res/audios/kenney/audios/minimize_004.ogg +0 -0
  94. package/public/res/audios/kenney/audios/minimize_005.ogg +0 -0
  95. package/public/res/audios/kenney/audios/minimize_006.ogg +0 -0
  96. package/public/res/audios/kenney/audios/minimize_007.ogg +0 -0
  97. package/public/res/audios/kenney/audios/minimize_008.ogg +0 -0
  98. package/public/res/audios/kenney/audios/minimize_009.ogg +0 -0
  99. package/public/res/audios/kenney/audios/open_001.ogg +0 -0
  100. package/public/res/audios/kenney/audios/open_002.ogg +0 -0
  101. package/public/res/audios/kenney/audios/open_003.ogg +0 -0
  102. package/public/res/audios/kenney/audios/open_004.ogg +0 -0
  103. package/public/res/audios/kenney/audios/pluck_001.ogg +0 -0
  104. package/public/res/audios/kenney/audios/pluck_002.ogg +0 -0
  105. package/public/res/audios/kenney/audios/question_001.ogg +0 -0
  106. package/public/res/audios/kenney/audios/question_002.ogg +0 -0
  107. package/public/res/audios/kenney/audios/question_003.ogg +0 -0
  108. package/public/res/audios/kenney/audios/question_004.ogg +0 -0
  109. package/public/res/audios/kenney/audios/scratch_001.ogg +0 -0
  110. package/public/res/audios/kenney/audios/scratch_002.ogg +0 -0
  111. package/public/res/audios/kenney/audios/scratch_003.ogg +0 -0
  112. package/public/res/audios/kenney/audios/scratch_004.ogg +0 -0
  113. package/public/res/audios/kenney/audios/scratch_005.ogg +0 -0
  114. package/public/res/audios/kenney/audios/scroll_001.ogg +0 -0
  115. package/public/res/audios/kenney/audios/scroll_002.ogg +0 -0
  116. package/public/res/audios/kenney/audios/scroll_003.ogg +0 -0
  117. package/public/res/audios/kenney/audios/scroll_004.ogg +0 -0
  118. package/public/res/audios/kenney/audios/scroll_005.ogg +0 -0
  119. package/public/res/audios/kenney/audios/select_001.ogg +0 -0
  120. package/public/res/audios/kenney/audios/select_002.ogg +0 -0
  121. package/public/res/audios/kenney/audios/select_003.ogg +0 -0
  122. package/public/res/audios/kenney/audios/select_004.ogg +0 -0
  123. package/public/res/audios/kenney/audios/select_005.ogg +0 -0
  124. package/public/res/audios/kenney/audios/select_006.ogg +0 -0
  125. package/public/res/audios/kenney/audios/select_007.ogg +0 -0
  126. package/public/res/audios/kenney/audios/select_008.ogg +0 -0
  127. package/public/res/audios/kenney/audios/switch_001.ogg +0 -0
  128. package/public/res/audios/kenney/audios/switch_002.ogg +0 -0
  129. package/public/res/audios/kenney/audios/switch_003.ogg +0 -0
  130. package/public/res/audios/kenney/audios/switch_004.ogg +0 -0
  131. package/public/res/audios/kenney/audios/switch_005.ogg +0 -0
  132. package/public/res/audios/kenney/audios/switch_006.ogg +0 -0
  133. package/public/res/audios/kenney/audios/switch_007.ogg +0 -0
  134. package/public/res/audios/kenney/audios/tick_001.ogg +0 -0
  135. package/public/res/audios/kenney/audios/tick_002.ogg +0 -0
  136. package/public/res/audios/kenney/audios/tick_004.ogg +0 -0
  137. package/public/res/audios/kenney/audios/toggle_001.ogg +0 -0
  138. package/public/res/audios/kenney/audios/toggle_002.ogg +0 -0
  139. package/public/res/audios/kenney/audios/toggle_003.ogg +0 -0
  140. package/public/res/audios/kenney/audios/toggle_004.ogg +0 -0
  141. package/public/res/audios/start.mp3 +0 -0
  142. package/public/res/audios/toggle_002.mp3 +0 -0
  143. package/public/res/fonts/Accuratist.ttf +0 -0
  144. package/public/res/fonts/Closeness.ttf +0 -0
  145. package/public/res/fonts/WARGAMES.TTF +0 -0
  146. package/public/res/fonts/readme.txt +0 -5
  147. package/public/res/fonts/stormfaze.ttf +0 -0
  148. package/public/res/icons/512.png +0 -0
  149. package/public/res/icons/webgpu-horizontal.svg +0 -45
  150. package/public/res/meshes/blender/cube.blend +0 -0
  151. package/public/res/meshes/blender/cube.blend1 +0 -0
  152. package/public/res/meshes/blender/cube.mtl +0 -12
  153. package/public/res/meshes/blender/cube.obj +0 -46
  154. package/public/res/meshes/blender/cube.png +0 -0
  155. package/public/res/meshes/blender/cubeSmartUV.blend +0 -0
  156. package/public/res/meshes/blender/cubeSmartUV.mtl +0 -12
  157. package/public/res/meshes/blender/cubeSmartUV.obj +0 -46
  158. package/public/res/meshes/blender/lopta.mtl +0 -10
  159. package/public/res/meshes/blender/lopta.obj +0 -3402
  160. package/public/res/meshes/blender/piramyd.blend +0 -0
  161. package/public/res/meshes/blender/piramyd.blend1 +0 -0
  162. package/public/res/meshes/blender/piramyd.js +0 -42
  163. package/public/res/meshes/blender/piramyd.mtl +0 -10
  164. package/public/res/meshes/blender/piramyd.obj +0 -18696
  165. package/public/res/meshes/blender/piramyd1.js +0 -42
  166. package/public/res/meshes/blender/sphepe.blend +0 -0
  167. package/public/res/meshes/blender/sphepe.blend1 +0 -0
  168. package/public/res/meshes/blender/sphere.mtl +0 -10
  169. package/public/res/meshes/blender/sphere.obj +0 -3402
  170. package/public/res/meshes/blender/welcomeTextblend.blend +0 -0
  171. package/public/res/meshes/dragon/stanfordDragonData.js +0 -5
  172. package/public/res/meshes/jamb/bg.blend +0 -0
  173. package/public/res/meshes/jamb/bg.blend1 +0 -0
  174. package/public/res/meshes/jamb/bg.mtl +0 -12
  175. package/public/res/meshes/jamb/bg.obj +0 -17
  176. package/public/res/meshes/jamb/bg.png +0 -0
  177. package/public/res/meshes/jamb/dice-default.png +0 -0
  178. package/public/res/meshes/jamb/dice-mark.png +0 -0
  179. package/public/res/meshes/jamb/dice.mtl +0 -12
  180. package/public/res/meshes/jamb/dice.obj +0 -40
  181. package/public/res/meshes/jamb/dice.png +0 -0
  182. package/public/res/meshes/jamb/jamb-title.mtl +0 -12
  183. package/public/res/meshes/jamb/jamb-title.obj +0 -26008
  184. package/public/res/meshes/jamb/jamb.blend +0 -0
  185. package/public/res/meshes/jamb/jamb.blend1 +0 -0
  186. package/public/res/meshes/jamb/logo.png +0 -0
  187. package/public/res/meshes/jamb/nidzaDice.blend +0 -0
  188. package/public/res/meshes/jamb/nidzaDice.blend1 +0 -0
  189. package/public/res/meshes/jamb/pile.blend +0 -0
  190. package/public/res/meshes/jamb/simpleCube.blend +0 -0
  191. package/public/res/meshes/jamb/simpleCube.blend1 +0 -0
  192. package/public/res/meshes/jamb/sounds/roll1.wav +0 -0
  193. package/public/res/meshes/jamb/text.png +0 -0
  194. package/public/res/meshes/obj/armor.obj +0 -319
  195. package/public/res/meshes/obj/armor.png +0 -0
  196. package/public/res/meshes/shapes/star1.obj +0 -60
  197. package/public/res/multilang/en.json +0 -39
  198. package/public/res/multilang/sr.json +0 -39
  199. package/public/res/textures/default.png +0 -0
  200. package/public/res/textures/rust.jpg +0 -0
  201. package/public/res/textures/tex1.jpg +0 -0
  202. package/public/test.html +0 -636
  203. package/public/three-test.js +0 -165
  204. package/public/worker.html +0 -25
@@ -1,1340 +0,0 @@
1
- import {LOG_FUNNY, LOG_INFO, LOG_MATRIX, byId, mb, setupCanvasFilters, typeText} from "../../../src/engine/utils.js";
2
- import {settingsBox, welcomeBoxHTML} from "./html-content.js";
3
-
4
- export let dices = {
5
- C: 0,
6
- STATUS: 'FREE_TO_PLAY',
7
- R: {},
8
- SAVED_DICES: {},
9
- pickDice: function(dice) {
10
- if(Object.keys(this.SAVED_DICES).length >= 5) {
11
- console.log("⚠️ You can only select up to 5 dice!");
12
- return; // prevent adding more
13
- }
14
- this.SAVED_DICES[dice] = this.R[dice]
15
- this.refreshSelectedBox()
16
- },
17
-
18
- setStartUpPosition: () => {
19
- //
20
- let currentIndex = 0;
21
- for(var x = 1;x < 7;x++) {
22
- app.matrixAmmo.getBodyByName(('CubePhysics' + x)).MEObject.position.setPosition(-5 + currentIndex * 5, 2, -15);
23
- }
24
- },
25
-
26
- refreshSelectedBox: function(arg) {
27
- let currentIndex = 0;
28
- for(var key in this.SAVED_DICES) {
29
- let B = app.matrixAmmo.getBodyByName(key);
30
- this.deactivatePhysics(B);
31
- const transform = new Ammo.btTransform();
32
- transform.setIdentity();
33
- transform.setOrigin(new Ammo.btVector3(0, 0, 0));
34
- B.setWorldTransform(transform);
35
- B.MEObject.position.setPosition(-5 + currentIndex, 5, -16);
36
- currentIndex += 3;
37
- }
38
- },
39
-
40
- deactivatePhysics: function(body) {
41
- const CF_KINEMATIC_OBJECT = 2;
42
- const DISABLE_DEACTIVATION = 4;
43
- // 1. Remove from world
44
- app.matrixAmmo.dynamicsWorld.removeRigidBody(body);
45
- // 2. Set body to kinematic
46
- const flags = body.getCollisionFlags();
47
- body.setCollisionFlags(flags | CF_KINEMATIC_OBJECT);
48
- body.setActivationState(DISABLE_DEACTIVATION); // no auto-wakeup
49
- // 3. Clear motion
50
- const zero = new Ammo.btVector3(0, 0, 0);
51
- body.setLinearVelocity(zero);
52
- body.setAngularVelocity(zero);
53
- // 4. Reset transform to current position (optional — preserves pose)
54
- const currentTransform = body.getWorldTransform();
55
- body.setWorldTransform(currentTransform);
56
- body.getMotionState().setWorldTransform(currentTransform);
57
- // 5. Add back to physics world
58
- app.matrixAmmo.dynamicsWorld.addRigidBody(body);
59
- // 6. Mark it manually (logic flag)
60
- body.isKinematic = true;
61
- },
62
-
63
- resetBodyAboveFloor: function(body, z = -14) {
64
- const transform = new Ammo.btTransform();
65
- transform.setIdentity();
66
- transform.setOrigin(new Ammo.btVector3(-1 + Math.random(), 3, z));
67
- body.setWorldTransform(transform);
68
- body.getMotionState().setWorldTransform(transform);
69
- },
70
-
71
- activatePhysics: function(body) {
72
- // 1. Make it dynamic again
73
- body.setCollisionFlags(body.getCollisionFlags() & ~2); // remove kinematic
74
- body.setActivationState(1); // ACTIVE_TAG
75
- body.isKinematic = false;
76
-
77
- // 2. Reset position ABOVE the floor — force it out of collision
78
- // const newY = 3 + Math.random(); // ensure it’s above the floor
79
- const transform = new Ammo.btTransform();
80
- transform.setIdentity();
81
- const newX = (Math.random() - 0.5) * 4; // spread from -2 to +2 on X
82
- const newY = 3; // fixed height above floor
83
- transform.setOrigin(new Ammo.btVector3(newX, newY, 0));
84
- body.setWorldTransform(transform);
85
-
86
- // 3. Clear velocities
87
- body.setLinearVelocity(new Ammo.btVector3(0, 0, 0));
88
- body.setAngularVelocity(new Ammo.btVector3(0, 0, 0));
89
-
90
- // 4. Enable CCD (to prevent tunneling)
91
- const size = 1; // cube side length
92
- body.setCcdMotionThreshold(1e-7);
93
- body.setCcdSweptSphereRadius(size * 0.5);
94
-
95
- // Re-add to world if needed
96
- // Optionally: remove and re-add if not responding
97
- app.matrixAmmo.dynamicsWorld.removeRigidBody(body);
98
- app.matrixAmmo.dynamicsWorld.addRigidBody(body);
99
-
100
- // 5. Reactivate it
101
- body.activate(true);
102
-
103
- this.resetBodyAboveFloor(body);
104
- },
105
-
106
- activateAllDicesPhysics: function() {
107
- this.getAllDices()
108
- // .filter((item) => {
109
- // let test = app.matrixAmmo.getBodyByName(item.name)?.isKinematicObject();
110
- // if(test === true) {
111
- // return true;
112
- // } else {
113
- // return false;
114
- // }
115
- // })
116
- .forEach((dice) => {
117
- const body = app.matrixAmmo.getBodyByName(dice.name);
118
- if(body) {
119
- this.activatePhysics(body); // <--- FIX: pass the physics body, not the dice object
120
- }
121
- });
122
- },
123
-
124
- getAllDices: function() {
125
- return app.mainRenderBundle.filter(item => item.name.indexOf("CubePhysics") !== -1);
126
- },
127
-
128
- getDiceByName: function(name) {
129
- return app.mainRenderBundle.find(item => item.name === name);
130
- },
131
-
132
- checkAll: function() {
133
- this.C++;
134
-
135
- let activeRollingCount = 0;
136
- let allReady = true;
137
-
138
- for(let i = 1;i <= 6;i++) {
139
- const key = "CubePhysics" + i;
140
- if(key in this.SAVED_DICES) continue; // skip saved ones
141
- activeRollingCount++; // count how many are still active
142
- if(typeof this.R[key] === 'undefined') {
143
- allReady = false;
144
- break;
145
- }
146
- }
147
- // Dynamic threshold: min wait time based on rolling dice
148
- const minWait = Math.max(200, activeRollingCount * 200); // e.g. 1 die => 200, 5 dice => 1000, 6 dice => 1200
149
- if(allReady && this.C > minWait) {
150
- dispatchEvent(new CustomEvent('all-done', {detail: {}}));
151
- this.C = 0;
152
- }
153
- },
154
-
155
- validatePass: function() {
156
- if(Object.keys(this.SAVED_DICES).length !== 5) {
157
- console.log('%cBLOCK', LOG_FUNNY)
158
- mb.error(`Must select (minimum) 5 dices before add results...`);
159
- return false;
160
- }
161
- if(dices.STATUS != "FINISHED") {
162
- console.log('%cBLOCK', LOG_FUNNY)
163
- mb.error(`STATUS IS ${dices.STATUS}, please wait for results...`);
164
- app.matrixSounds.play('block')
165
- return false;
166
- } else {
167
- return true;
168
- }
169
- }
170
- };
171
-
172
- export let myDom = {
173
-
174
- state: {
175
- rowDown: []
176
- },
177
-
178
- memoNumberRow: [],
179
-
180
- hideSettings: function() {
181
- byId('blocker').style.display = 'none';
182
- byId('messageBox').style.display = 'none';
183
- },
184
-
185
- createMenu: function() {
186
-
187
- var root = document.createElement('div')
188
- root.id = 'hud';
189
- root.style.position = 'absolute';
190
- root.style.right = '10%';
191
- root.style.top = '10%';
192
-
193
- var help = document.createElement('div')
194
- help.id = 'HELP';
195
- help.classList.add('btn')
196
- help.innerHTML = `<span data-label="help"></span>`;
197
- help.addEventListener('click', () => {
198
- if(byId('helpBox').style.display != 'none') {
199
- byId('helpBox').style.display = 'none';
200
- } else {
201
- byId('helpBox').style.display = 'block';
202
- }
203
- });
204
-
205
- var table = document.createElement('div')
206
- table.id = 'showHideTableDOM';
207
- table.classList.add('btn')
208
- table.innerHTML = `<span data-label="table"></span>`;
209
- table.addEventListener('click', () => {
210
- this.showHideJambTable()
211
- });
212
-
213
- var settings = document.createElement('div')
214
- settings.id = 'settings';
215
- settings.classList.add('btn')
216
- settings.innerHTML = `<span data-label="settings"></span>`;
217
- settings.addEventListener('click', () => {
218
- if(document.getElementById('messageBox').getAttribute('data-loaded') != null) {
219
- byId('blocker').style.display = 'flex';
220
- byId('messageBox').style.display = 'unset';
221
- return;
222
- }
223
- byId('messageBox').innerHTML = settingsBox;
224
- byId('blocker').style.display = 'flex';
225
- byId('messageBox').style.display = 'unset';
226
- dispatchEvent(new CustomEvent('updateLang', {}))
227
-
228
- byId('settingsAudios').click()
229
- byId('settingsAudios').addEventListener('change', (e) => {
230
- if(e.target.checked == true) {
231
- app.matrixSounds.unmuteAll();
232
- } else {
233
- app.matrixSounds.muteAll();
234
- }
235
- });
236
- setupCanvasFilters();
237
- byId('messageBox').setAttribute('data-loaded', 'loaded');
238
- document.getElementById('physicsSpeed').value = app.matrixAmmo.speedUpSimulation;
239
- byId("physicsSpeed").addEventListener("change", (e) => {
240
- app.matrixAmmo.speedUpSimulation = parseInt(e.target.value);
241
- });
242
-
243
- })
244
-
245
- // test help
246
- var helpBox = document.createElement('div')
247
- helpBox.id = 'helpBox';
248
- helpBox.style.position = 'absolute';
249
- helpBox.style.right = '20%';
250
- helpBox.style.zIndex = '2';
251
- helpBox.style.top = '15%';
252
- helpBox.style.width = '60%';
253
- helpBox.style.height = '50%';
254
- helpBox.style.fontSize = '100%';
255
- helpBox.classList.add('btn');
256
- helpBox.addEventListener('click', () => {
257
- byId('helpBox').style.display = 'none';
258
- });
259
- document.body.appendChild(helpBox)
260
- typeText('helpBox', app.label.get.about, 10);
261
- //
262
- var roll = document.createElement('div')
263
- roll.id = 'hud-roll';
264
- roll.classList.add('btn');
265
- roll.innerHTML = `<span data-label="roll"></span>`;
266
- roll.addEventListener('click', () => {
267
- app.ROLL()
268
- })
269
-
270
- var separator = document.createElement('div')
271
- separator.innerHTML = `✨maximumroulette.com✨`;
272
-
273
- root.append(settings)
274
- root.append(table);
275
- root.append(help)
276
- root.append(separator)
277
- root.append(roll)
278
-
279
- document.body.appendChild(root)
280
-
281
- // global access
282
- // app.label.update()
283
- dispatchEvent(new CustomEvent('updateLang', {}))
284
- },
285
-
286
- createBlocker: function() {
287
- var root = document.createElement('div')
288
- root.id = 'blocker';
289
-
290
- var messageBox = document.createElement('div')
291
- messageBox.id = 'messageBox';
292
-
293
- // console.log('TEST', app.label.get)
294
- messageBox.innerHTML = welcomeBoxHTML;
295
-
296
-
297
- let initialMsgBoxEvent = function() {
298
- console.log('click on msgbox')
299
- byId('messageBox').innerHTML = ``;
300
- byId('blocker').style.display = 'none';
301
- myDom.createMenu();
302
- messageBox.removeEventListener('click', initialMsgBoxEvent)
303
-
304
- document.querySelectorAll('.btn, .fancy-label, .fancy-title').forEach(el => {
305
- el.addEventListener('mouseenter', () => {
306
- app.matrixSounds.play('hover');
307
- });
308
- });
309
- };
310
- root.append(messageBox)
311
- document.body.appendChild(root);
312
- app.label.update();
313
- document.querySelectorAll('.btn, .fancy-label, .fancy-title').forEach(el => {
314
- el.addEventListener('mouseenter', () => {
315
- app.matrixSounds.play('hover');
316
- });
317
- });
318
-
319
- setTimeout(() => {
320
- byId('startFromWelcome').addEventListener('click', initialMsgBoxEvent)
321
- }, 200);
322
- },
323
-
324
- createJamb: function() {
325
- var root = document.createElement('div')
326
- root.id = 'jambTable';
327
- root.style.position = 'absolute';
328
-
329
- var dragHandler = document.createElement('div')
330
- dragHandler.id = 'dragHandler';
331
- dragHandler.classList.add('dragHandler')
332
- dragHandler.innerHTML = "⇅ Drag";
333
- root.append(dragHandler)
334
-
335
- var rowHeader = document.createElement('div')
336
- rowHeader.id = 'rowHeader';
337
- rowHeader.style.top = '10px';
338
- rowHeader.style.left = '10px';
339
- rowHeader.style.width = '200px';
340
- rowHeader.innerHTML = '<span data-label="cornerText"></span><span id="user-points">0</span>';
341
- root.appendChild(rowHeader);
342
- rowHeader.classList.add('fancy-label')
343
-
344
- var rowDown = document.createElement('div')
345
- rowDown.id = 'rowDown';
346
- rowDown.style.top = '10px';
347
- rowDown.style.left = '10px';
348
- rowDown.style.width = '200px';
349
- rowDown.innerHTML = '↓<span data-label="down"></span>';
350
- rowDown.classList.add('fancy-label')
351
- rowDown.classList.add('btn')
352
- root.appendChild(rowDown);
353
-
354
- var rowFree = document.createElement('div')
355
- rowFree.id = 'rowFree';
356
- rowFree.style.top = '10px';
357
- rowFree.style.left = '10px';
358
- rowFree.style.width = '200px';
359
- rowFree.innerHTML = '↕<span data-label="free"></span>';
360
- rowFree.classList.add('fancy-label')
361
- rowFree.classList.add('btn')
362
- root.appendChild(rowFree);
363
-
364
- var rowUp = document.createElement('div')
365
- rowUp.id = 'rowUp';
366
- rowUp.style.top = '10px';
367
- rowUp.style.left = '10px';
368
- rowUp.style.width = '200px';
369
- rowUp.innerHTML = '↑<span data-label="up"></span>';
370
- rowUp.classList.add('fancy-label')
371
- rowUp.classList.add('btn')
372
- root.appendChild(rowUp);
373
-
374
- var rowHand = document.createElement('div')
375
- rowHand.id = 'rowHand';
376
- rowHand.style.top = '10px';
377
- rowHand.style.left = '10px';
378
- rowHand.style.width = '200px';
379
- rowHand.innerHTML = '<span data-label="hand"></span>';
380
- rowHand.classList.add('fancy-label')
381
- rowHand.classList.add('btn')
382
- root.appendChild(rowHand);
383
-
384
- // INJECT TABLE HEADER ROW
385
- this.createLeftHeaderRow(rowHeader);
386
- this.createRowDown(rowDown);
387
- this.createRowFree(rowFree);
388
- this.createRow(rowUp);
389
- this.createRow(rowHand);
390
-
391
- this.createSelectedBox();
392
-
393
- document.body.appendChild(root);
394
- // console.log('JambTable added.')
395
- },
396
-
397
- showHideJambTable: () => {
398
- const panel = document.getElementById('jambTable');
399
- if(panel.classList.contains('show')) {
400
- panel.classList.remove('show');
401
- panel.classList.add('hide');
402
- // Delay actual hiding from layout to finish animation
403
- setTimeout(() => {
404
- panel.style.display = 'none';
405
- }, 300);
406
- } else {
407
- panel.style.display = 'flex';
408
- setTimeout(() => {
409
- panel.classList.remove('hide');
410
- panel.classList.add('show');
411
- }, 10); // allow repaint
412
- }
413
- },
414
- createSelectedBox: function() {
415
- var topTitleDOM = document.createElement('div')
416
- topTitleDOM.id = 'topTitleDOM';
417
- topTitleDOM.style.width = 'auto';
418
- topTitleDOM.style.position = 'absolute';
419
- topTitleDOM.style.left = '35%';
420
- topTitleDOM.style.fontSize = '175%';
421
- topTitleDOM.style.top = '4%';
422
- topTitleDOM.style.background = '#7d7d7d8c';
423
- topTitleDOM.innerHTML = app.label.get.ready + ", " + app.userState.name + '.';
424
- topTitleDOM.setAttribute('data-gamestatus', 'FREE');
425
- document.body.appendChild(topTitleDOM);
426
- addEventListener('updateTitle', (e) => {
427
- typeText('topTitleDOM', e.detail.text);
428
- topTitleDOM.setAttribute('data-gamestatus', e.detail.status);
429
- })
430
- },
431
-
432
- createLeftHeaderRow: function(myRoot) {
433
- for(var x = 1;x < 7;x++) {
434
- var rowNumber = document.createElement('div')
435
- rowNumber.id = 'rowNumber' + x;
436
- rowNumber.style.top = '10px';
437
- rowNumber.style.left = '10px';
438
- rowNumber.style.width = 'auto';
439
- rowNumber.style.background = '#7d7d7d8c';
440
- rowNumber.innerHTML = `<span>${x}</span>`;
441
- myRoot.appendChild(rowNumber);
442
- }
443
-
444
- var rowNumberSum = document.createElement('div')
445
- rowNumberSum.id = 'H_rowNumberSum';
446
-
447
- rowNumberSum.style.width = 'auto';
448
- rowNumberSum.style.background = '#7d7d7d8c';
449
- rowNumberSum.innerHTML = `Σ`;
450
- myRoot.appendChild(rowNumberSum);
451
-
452
- var rowMax = document.createElement('div')
453
- rowMax.id = 'H_rowMax';
454
- rowMax.style.width = 'auto';
455
- rowMax.style.background = '#7d7d7d8c';
456
- rowMax.innerHTML = `<span data-label="MAX"></span>`;
457
- myRoot.appendChild(rowMax);
458
-
459
- var rowMin = document.createElement('div')
460
- rowMin.id = 'H_rowMax';
461
- rowMin.style.width = 'auto';
462
- rowMin.style.background = '#7d7d7d8c';
463
- rowMin.innerHTML = `<span data-label="MIN"></span>`;
464
- myRoot.appendChild(rowMin);
465
-
466
- var rowMaxMinSum = document.createElement('div')
467
- rowMaxMinSum.id = 'H_rowMaxMinSum';
468
- rowMaxMinSum.style.width = 'auto';
469
- rowMaxMinSum.style.background = '#7d7d7d8c';
470
- rowMaxMinSum.innerHTML = `Σ`;
471
- myRoot.appendChild(rowMaxMinSum);
472
-
473
- var largeStraight = document.createElement('div')
474
- largeStraight.id = 'H_largeStraight';
475
- largeStraight.style.width = 'auto';
476
- largeStraight.style.background = '#7d7d7d8c';
477
- largeStraight.innerHTML = `<span data-label="straight"></span>`;
478
- myRoot.appendChild(largeStraight);
479
-
480
- var threeOfAKind = document.createElement('div')
481
- threeOfAKind.id = 'H_threeOfAKind';
482
- threeOfAKind.style.width = 'auto';
483
- threeOfAKind.style.background = '#7d7d7d8c';
484
- threeOfAKind.innerHTML = `<span data-label="threeOf"></span>`;
485
- myRoot.appendChild(threeOfAKind);
486
-
487
- var fullHouse = document.createElement('div')
488
- fullHouse.id = 'H_fullHouse';
489
- fullHouse.style.width = 'auto';
490
- fullHouse.style.background = '#7d7d7d8c';
491
- fullHouse.innerHTML = `<span data-label="fullhouse"></span>`;
492
- myRoot.appendChild(fullHouse);
493
-
494
- var poker = document.createElement('div')
495
- poker.id = 'H_poker';
496
- poker.style.width = 'auto';
497
- poker.style.background = '#7d7d7d8c';
498
- poker.innerHTML = `<span data-label="poker"></span>`;
499
- myRoot.appendChild(poker);
500
-
501
- var jamb = document.createElement('div')
502
- jamb.id = 'H_jamb';
503
- jamb.style.width = 'auto';
504
- jamb.style.background = '#7d7d7d8c';
505
- jamb.innerHTML = `<span data-label="jamb"></span>`;
506
- myRoot.appendChild(jamb);
507
-
508
- var rowSum = document.createElement('div')
509
- rowSum.id = 'H_rowSum';
510
- rowSum.style.width = 'auto';
511
- rowSum.style.background = '#7d7d7d8c';
512
- rowSum.innerHTML = `Σ`;
513
- myRoot.appendChild(rowSum);
514
-
515
- var rowSumFINAL = document.createElement('div')
516
- rowSumFINAL.id = 'H_rowSumFINAL';
517
- rowSumFINAL.style.width = 'auto';
518
- rowSumFINAL.style.background = '#7d7d7d8c';
519
- rowSumFINAL.innerHTML = `<spam data-label="final"></span>`;
520
- myRoot.appendChild(rowSumFINAL);
521
- },
522
-
523
- createRow: function(myRoot) {
524
- for(var x = 1;x < 7;x++) {
525
- var rowNumber = document.createElement('div')
526
- rowNumber.id = 'rowNumber' + x;
527
- rowNumber.style.top = '10px';
528
- rowNumber.style.left = '10px';
529
- rowNumber.style.width = 'auto';
530
- rowNumber.style.background = '#7d7d7d8c';
531
- rowNumber.innerHTML = `-`;
532
- rowNumber.addEventListener('click', () => {
533
- console.log('LOG THIS ', this)
534
- // works
535
- // rowDown
536
- if(this.state.rowDown.length == 0) {
537
- console.log('it is no play yet in this row ', this)
538
-
539
- }
540
- })
541
- myRoot.appendChild(rowNumber);
542
- }
543
-
544
- var rowNumberSum = document.createElement('div')
545
- rowNumberSum.id = 'rowNumberSum';
546
-
547
- rowNumberSum.style.width = 'auto';
548
- rowNumberSum.style.background = '#7d7d7d8c';
549
- rowNumberSum.innerHTML = `-`;
550
- myRoot.appendChild(rowNumberSum);
551
-
552
- var rowMax = document.createElement('div')
553
- rowMax.id = 'rowMax';
554
- rowMax.style.width = 'auto';
555
- rowMax.style.background = '#7d7d7d8c';
556
- rowMax.innerHTML = `-`;
557
- myRoot.appendChild(rowMax);
558
-
559
- var rowMin = document.createElement('div')
560
- rowMin.id = 'rowMax';
561
- rowMin.style.width = 'auto';
562
- rowMin.style.background = '#7d7d7d8c';
563
- rowMin.innerHTML = `-`;
564
- myRoot.appendChild(rowMin);
565
-
566
- var rowMaxMinSum = document.createElement('div')
567
- rowMaxMinSum.id = 'rowMaxMinSum';
568
- rowMaxMinSum.style.width = 'auto';
569
- rowMaxMinSum.style.background = '#7d7d7d8c';
570
- rowMaxMinSum.innerHTML = `-`;
571
- myRoot.appendChild(rowMaxMinSum);
572
-
573
- var largeStraight = document.createElement('div')
574
- largeStraight.id = 'largeStraight';
575
- largeStraight.style.width = 'auto';
576
- largeStraight.style.background = '#7d7d7d8c';
577
- largeStraight.innerHTML = `-`;
578
- myRoot.appendChild(largeStraight);
579
-
580
- var threeOfAKind = document.createElement('div')
581
- threeOfAKind.id = 'down_threeOfAKind';
582
- threeOfAKind.style.width = 'auto';
583
- threeOfAKind.style.background = '#7d7d7d8c';
584
- threeOfAKind.innerHTML = `-`;
585
- myRoot.appendChild(threeOfAKind);
586
-
587
- var fullHouse = document.createElement('div')
588
- fullHouse.id = 'fullHouse';
589
- fullHouse.style.width = 'auto';
590
- fullHouse.style.background = '#7d7d7d8c';
591
- fullHouse.innerHTML = `-`;
592
- myRoot.appendChild(fullHouse);
593
-
594
- var poker = document.createElement('div')
595
- poker.id = 'poker';
596
- poker.style.width = 'auto';
597
- poker.style.background = '#7d7d7d8c';
598
- poker.innerHTML = `-`;
599
- myRoot.appendChild(poker);
600
-
601
- var jamb = document.createElement('div')
602
- jamb.id = 'jamb';
603
- jamb.style.width = 'auto';
604
- jamb.style.background = '#7d7d7d8c';
605
- jamb.innerHTML = `-`;
606
- myRoot.appendChild(jamb);
607
-
608
- var rowSum = document.createElement('div')
609
- rowSum.id = 'rowSum';
610
- rowSum.style.width = 'auto';
611
- rowSum.style.background = '#7d7d7d8c';
612
- rowSum.innerHTML = `-`;
613
- myRoot.appendChild(rowSum);
614
-
615
-
616
- },
617
-
618
- createRowFree: function(myRoot) {
619
- for(var x = 1;x < 7;x++) {
620
- var rowNumber = document.createElement('div')
621
- rowNumber.id = 'free-rowNumber' + x;
622
- rowNumber.style.top = '10px';
623
- rowNumber.style.left = '10px';
624
- rowNumber.style.width = 'auto';
625
- rowNumber.style.background = '#7d7d7d8c';
626
- rowNumber.innerHTML = `-`;
627
- rowNumber.addEventListener('click', (e) => {
628
- if(dices.validatePass() == false) return;
629
- var getName = e.target.id;
630
- getName = getName.replace('free-rowNumber', '')
631
- var count23456 = 0;
632
- for(let key in dices.SAVED_DICES) {
633
- if(parseInt(dices.R[key]) == parseInt(getName)) {
634
- count23456++;
635
- }
636
- }
637
- this.state.rowDown.push((count23456 * parseInt(getName)))
638
- e.target.innerHTML = (count23456 * parseInt(getName));
639
- if(parseInt(getName) == 6) {
640
- myDom.calcFreeNumbers()
641
- }
642
- dices.STATUS = "FREE_TO_PLAY";
643
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
644
- })
645
- myRoot.appendChild(rowNumber);
646
- }
647
-
648
- var rowNumberSum = document.createElement('div')
649
- rowNumberSum.id = 'free-rowNumberSum';
650
- rowNumberSum.style.width = 'auto';
651
- rowNumberSum.style.background = '#7d7d7d8c';
652
- rowNumberSum.innerHTML = `-`;
653
- myRoot.appendChild(rowNumberSum);
654
-
655
- var rowMax = document.createElement('div')
656
- rowMax.id = 'free-rowMax';
657
- rowMax.style.width = 'auto';
658
- rowMax.style.background = '#7d7d7d8c';
659
- rowMax.innerHTML = `-`;
660
- rowMax.addEventListener("click", this.calcFreeRowMax);
661
- myRoot.appendChild(rowMax);
662
-
663
- var rowMin = document.createElement('div')
664
- rowMin.id = 'free-rowMin';
665
- rowMin.style.width = 'auto';
666
- rowMin.style.background = '#7d7d7d8c';
667
- rowMin.innerHTML = `-`;
668
- rowMin.addEventListener('click', this.calcFreeRowMin);
669
- myRoot.appendChild(rowMin);
670
-
671
- var rowMaxMinSum = document.createElement('div')
672
- rowMaxMinSum.id = 'free-rowMaxMinSum';
673
- rowMaxMinSum.style.width = 'auto';
674
- rowMaxMinSum.style.background = '#7d7d7d8c';
675
- rowMaxMinSum.innerHTML = `-`;
676
- myRoot.appendChild(rowMaxMinSum);
677
-
678
- var largeStraight = document.createElement('div')
679
- largeStraight.id = 'free-largeStraight';
680
- largeStraight.style.width = 'auto';
681
- largeStraight.style.background = '#7d7d7d8c';
682
- largeStraight.innerHTML = `-`;
683
- largeStraight.addEventListener('click', this.attachFreeKenta);
684
- myRoot.appendChild(largeStraight);
685
-
686
- var threeOfAKind = document.createElement('div')
687
- threeOfAKind.id = 'free-threeOfAKind';
688
- threeOfAKind.style.width = 'auto';
689
- threeOfAKind.style.background = '#7d7d7d8c';
690
- threeOfAKind.innerHTML = `-`;
691
- threeOfAKind.addEventListener('click', this.attachFreeTrilling)
692
- myRoot.appendChild(threeOfAKind);
693
-
694
- var fullHouse = document.createElement('div')
695
- fullHouse.id = 'free-fullHouse';
696
- fullHouse.style.width = 'auto';
697
- fullHouse.style.background = '#7d7d7d8c';
698
- fullHouse.innerHTML = `-`;
699
- fullHouse.addEventListener('click', this.attachFreeFullHouse)
700
- myRoot.appendChild(fullHouse);
701
-
702
- var poker = document.createElement('div')
703
- poker.id = 'free-poker';
704
- poker.style.width = 'auto';
705
- poker.style.background = '#7d7d7d8c';
706
- poker.innerHTML = `-`;
707
- poker.addEventListener('click', this.attachFreePoker)
708
- myRoot.appendChild(poker);
709
-
710
- var jamb = document.createElement('div')
711
- jamb.id = 'free-jamb';
712
- jamb.style.width = 'auto';
713
- jamb.style.background = '#7d7d7d8c';
714
- jamb.innerHTML = `-`;
715
- jamb.addEventListener('click', this.attachFreeJamb)
716
- myRoot.appendChild(jamb);
717
-
718
- var rowSum = document.createElement('div')
719
- rowSum.id = 'free-rowSum';
720
- rowSum.style.width = 'auto';
721
- rowSum.style.background = '#7d7d7d8c';
722
- rowSum.innerHTML = `-`;
723
- myRoot.appendChild(rowSum);
724
- },
725
-
726
- createRowDown: function(myRoot) {
727
- for(var x = 1;x < 7;x++) {
728
- var rowNumber = document.createElement('div')
729
- rowNumber.id = 'down-rowNumber' + x;
730
- rowNumber.style.top = '10px';
731
- rowNumber.style.left = '10px';
732
- rowNumber.style.width = 'auto';
733
- rowNumber.style.background = '#7d7d7d8c';
734
- rowNumber.style.cursor = 'pointer';
735
- rowNumber.innerHTML = `-`;
736
-
737
- this.memoNumberRow.push(rowNumber)
738
- // initial
739
- if(x == 1) {
740
- rowNumber.classList.add('canPlay')
741
- }
742
-
743
- rowNumber.addEventListener('click', (e) => {
744
-
745
- if(dices.validatePass() == false) return;
746
-
747
- var getName = e.target.id;
748
- getName = getName.replace('down-rowNumber', '')
749
- if(this.state.rowDown.length == 0) {
750
- console.log('LOG ', getName)
751
- if(parseInt(getName) == 1) {
752
- var count1 = 0;
753
- for(let key in dices.SAVED_DICES) {
754
- if(parseInt(dices.R[key]) == 1) {
755
- console.log('yeap', dices.R)
756
- count1++;
757
- }
758
- }
759
- this.state.rowDown.push(count1)
760
- e.target.innerHTML = count1;
761
- e.target.classList.remove('canPlay')
762
- this.memoNumberRow[1].classList.add('canPlay')
763
- dices.STATUS = "FREE_TO_PLAY";
764
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
765
- } else {
766
- console.log('BLOCK')
767
-
768
- }
769
- } else {
770
- if(this.state.rowDown.length > 0) {
771
- if(parseInt(getName) == this.state.rowDown.length + 1) {
772
- console.log('moze za ', parseInt(getName))
773
- var count23456 = 0;
774
- for(let key in dices.SAVED_DICES) {
775
- if(parseInt(dices.R[key]) == parseInt(getName)) {
776
- console.log('yeap', dices.R)
777
- count23456++;
778
- }
779
- }
780
- this.state.rowDown.push((count23456 * parseInt(getName)))
781
- //
782
- e.target.innerHTML = (count23456 * parseInt(getName));
783
- if(parseInt(getName) == 6) {
784
- // calc sum
785
- console.log('calc sum for numb ~ ')
786
- // this.state.rowDown.length + 1
787
- myDom.calcDownNumbers()
788
- e.target.classList.remove('canPlay')
789
- this.rowMax.classList.add('canPlay')
790
- } else {
791
- e.target.classList.remove('canPlay')
792
- this.memoNumberRow[parseInt(getName)].classList.add('canPlay')
793
- }
794
- dices.STATUS = "FREE_TO_PLAY";
795
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
796
- } else {
797
- console.log('BLOCK')
798
- }
799
- }
800
- }
801
- })
802
- myRoot.appendChild(rowNumber);
803
- }
804
-
805
- var rowNumberSum = document.createElement('div')
806
- rowNumberSum.id = 'down-rowNumberSum';
807
-
808
- rowNumberSum.style.width = 'auto';
809
- rowNumberSum.style.background = '#7d7d7d8c';
810
- rowNumberSum.innerHTML = `-`;
811
- myRoot.appendChild(rowNumberSum);
812
-
813
- var rowMax = document.createElement('div')
814
- rowMax.id = 'down-rowMax';
815
- rowMax.style.width = 'auto';
816
- rowMax.style.background = '#7d7d7d8c';
817
- rowMax.innerHTML = `-`;
818
- myRoot.appendChild(rowMax);
819
- this.rowMax = rowMax;
820
- // this.rowMax.addEventListener("click", (e) => {
821
- // e.target.classList.remove('canPlay')
822
- // this.rowMin.classList.add('canPlay')
823
- // })
824
-
825
- var rowMin = document.createElement('div')
826
- rowMin.id = 'down-rowMin';
827
- rowMin.style.width = 'auto';
828
- rowMin.style.background = '#7d7d7d8c';
829
- rowMin.innerHTML = `-`;
830
- // this.rowMin = rowMin;
831
- myRoot.appendChild(rowMin);
832
- var rowMaxMinSum = document.createElement('div')
833
- rowMaxMinSum.id = 'down-rowMaxMinSum';
834
- rowMaxMinSum.style.width = 'auto';
835
- rowMaxMinSum.style.background = '#7d7d7d8c';
836
- rowMaxMinSum.innerHTML = `-`;
837
- myRoot.appendChild(rowMaxMinSum);
838
-
839
- var largeStraight = document.createElement('div')
840
- largeStraight.id = 'down-largeStraight';
841
- largeStraight.style.width = 'auto';
842
- largeStraight.style.background = '#7d7d7d8c';
843
- largeStraight.innerHTML = `-`;
844
- myRoot.appendChild(largeStraight);
845
-
846
- var threeOfAKind = document.createElement('div')
847
- threeOfAKind.id = 'down-threeOfAKind';
848
- threeOfAKind.style.width = 'auto';
849
- threeOfAKind.style.background = '#7d7d7d8c';
850
- threeOfAKind.innerHTML = `-`;
851
- myRoot.appendChild(threeOfAKind);
852
-
853
- var fullHouse = document.createElement('div')
854
- fullHouse.id = 'down-fullHouse';
855
- fullHouse.style.width = 'auto';
856
- fullHouse.style.background = '#7d7d7d8c';
857
- fullHouse.innerHTML = `-`;
858
- myRoot.appendChild(fullHouse);
859
-
860
- var poker = document.createElement('div')
861
- poker.id = 'down-poker';
862
- poker.style.width = 'auto';
863
- poker.style.background = '#7d7d7d8c';
864
- poker.innerHTML = `-`;
865
- myRoot.appendChild(poker);
866
-
867
- var jamb = document.createElement('div')
868
- jamb.id = 'down-jamb';
869
- jamb.style.width = 'auto';
870
- jamb.style.background = '#7d7d7d8c';
871
- jamb.innerHTML = `-`;
872
- myRoot.appendChild(jamb);
873
-
874
- var rowSum = document.createElement('div')
875
- rowSum.id = 'down-rowSum';
876
- rowSum.style.width = 'auto';
877
- rowSum.style.background = '#7d7d7d8c';
878
- rowSum.innerHTML = `-`;
879
- myRoot.appendChild(rowSum);
880
- },
881
-
882
- calcDownNumbers: function() {
883
- var s = 0;
884
- this.state.rowDown.forEach((i) => {
885
- console.log(parseFloat(i))
886
- s += parseFloat(i)
887
- })
888
- byId('down-rowNumberSum').style.background = 'rgb(113 0 0 / 55%)';
889
- byId('down-rowNumberSum').innerHTML = s;
890
- // console.log('this.rowMax also set free to plat status', this.rowMax)
891
- dices.STATUS = "FREE_TO_PLAY";
892
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
893
- this.rowMax.addEventListener("click", this.calcDownRowMax)
894
- },
895
-
896
- // free row start
897
-
898
- calcFreeNumbers: function() {
899
- var s = 0;
900
- this.state.rowDown.forEach((i) => {
901
- console.log(parseFloat(i))
902
- s += parseFloat(i)
903
- })
904
- byId('free-rowNumberSum').style.background = 'rgb(113 0 0 / 55%)';
905
- byId('free-rowNumberSum').innerHTML = s;
906
- // console.log('this.rowMax also set free to plat status', this.rowMax)
907
- dices.STATUS = "FREE_TO_PLAY";
908
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
909
- byId('free-rowMax').addEventListener("click", this.calc)
910
- },
911
-
912
- calcFreeRowMax: (e) => {
913
- if(dices.validatePass() == false) return;
914
- var test = 0;
915
- let keyLessNum = Object.keys(dices.R).reduce((key, v) => dices.R[v] < dices.R[key] ? v : key);
916
- for(var key in dices.R) {
917
- if(key != keyLessNum) {
918
- test += parseFloat(dices.R[key]);
919
- }
920
- }
921
- e.target.innerHTML = test;
922
- // now attach next event.
923
- dices.STATUS = "FREE_TO_PLAY";
924
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}));
925
- byId('free-rowMax').removeEventListener("click", this.calcFreeRowMax);
926
- },
927
-
928
- calcFreeRowMin: () => {
929
- if(dices.validatePass() == false) return;
930
- var maxTestKey = Object.keys(dices.R).reduce(function(a, b) {return dices.R[a] > dices.R[b] ? a : b});
931
- var test = 0;
932
- for(var key in dices.R) {
933
- if(key != maxTestKey) {
934
- test += parseFloat(dices.R[key])
935
- } else {
936
- console.log('not calc dice ', dices.R[key])
937
- }
938
- }
939
- byId('free-rowMin').innerHTML = test;
940
- byId('free-rowMin').removeEventListener('click', this.calcFreeRowMin);
941
- // calc max min dont forget rules for bonus +30
942
- var SUMMINMAX = parseFloat(byId('free-rowMax').innerHTML) - parseFloat(byId('free-rowMin').innerHTML)
943
- byId('free-rowMaxMinSum').innerHTML = SUMMINMAX;
944
- myDom.incrasePoints(SUMMINMAX);
945
- dices.STATUS = "FREE_TO_PLAY";
946
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
947
- },
948
-
949
- attachFreeKenta: function() {
950
- if(dices.validatePass() == false) return;
951
-
952
- console.log('Test free kenta :', dices.R)
953
- var result = app.myDom.checkForDuplicate()[0];
954
- var testArray = app.myDom.checkForDuplicate()[1];
955
- console.log('TEST duplik: ' + result);
956
- if(result.length == 2) {
957
- console.log('TEST duplik less 3 : ' + result);
958
- var locPrevent = false;
959
- testArray.forEach((item, index, array) => {
960
- if(result[0].value == item.value && locPrevent == false) {
961
- console.log('detect by value item.value', item.value)
962
- locPrevent = true;
963
- array.splice(index, 1);
964
- }
965
- })
966
- // if we catch 1 and 6 in same stack then it is not possible for kenta...
967
- var test1 = false, test6 = false;
968
- testArray.forEach((item, index, array) => {
969
- if(item.value == 1) {
970
- test1 = true;
971
- } else if(item.value == 6) {
972
- test6 = true;
973
- }
974
- })
975
- if(test1 == true && test6 == true) {
976
- byId('free-largeStraight').innerHTML = `0`;
977
- } else if(test1 == true) {
978
- byId('free-largeStraight').innerHTML = 15 + 50;
979
- myDom.incrasePoints(15 + 50);
980
- } else if(test6 == true) {
981
- byId('free-largeStraight').innerHTML = 20 + 50;
982
- myDom.incrasePoints(20 + 50);
983
- }
984
- } else if(result < 2) {
985
- byId('free-largeStraight').innerHTML = 66;
986
- myDom.incrasePoints(66);
987
- } else {
988
- // zero value
989
- byId('free-largeStraight').innerHTML = `0`;
990
- }
991
- byId('free-largeStraight').removeEventListener('click', this.attachFreeKenta)
992
- dices.STATUS = "FREE_TO_PLAY";
993
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
994
- },
995
-
996
- attachFreeTrilling: function() {
997
- if(dices.validatePass() == false) return;
998
-
999
- var result = app.myDom.checkForDuplicate()[0];
1000
- // var testArray = app.myDom.checkForDuplicate()[1];
1001
- // console.log('DUPLICATE FOR TRILING ', result);
1002
- if(result.length > 2) {
1003
- var testWin = 0;
1004
- var TEST = app.myDom.checkForAllDuplicate();
1005
- console.log('DUPLICATE FOR TRILING TEST ', TEST);
1006
- for(var key in TEST) {
1007
- if(TEST[key] > 2) {
1008
- // win
1009
- var getDiceID = parseInt(key.replace('value__', ''))
1010
- testWin = getDiceID * 3;
1011
- }
1012
- }
1013
- console.log('DUPLICATE FOR TRILING 30 + TEST ', testWin);
1014
- if(testWin > 0) {
1015
- byId('free-threeOfAKind').innerHTML = 20 + testWin;
1016
- myDom.incrasePoints(20 + testWin);
1017
- }
1018
- } else {
1019
- byId('free-threeOfAKind').innerHTML = 0;
1020
- }
1021
- byId('free-threeOfAKind').removeEventListener('click', this.attachFreeTrilling)
1022
- dices.STATUS = "FREE_TO_PLAY";
1023
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1024
- },
1025
-
1026
- attachFreeFullHouse: function() {
1027
-
1028
- if(dices.validatePass() == false) return;
1029
-
1030
- var TEST = app.myDom.checkForAllDuplicate();
1031
- // console.log('DUPLICATE FOR FULL HOUSE 30 + TEST ');
1032
- var win = 0;
1033
- var testPair = false;
1034
- var testTrilling = false;
1035
- var testWinPair = 0;
1036
- var testWinTrilling = 0;
1037
- for(var key in TEST) {
1038
- if(TEST[key] == 2) {
1039
- // win
1040
- var getDiceID = parseInt(key.replace('value__', ''))
1041
- testWinPair = getDiceID * 2;
1042
- testPair = true;
1043
- } else if(TEST[key] == 3) {
1044
- var getDiceID = parseInt(key.replace('value__', ''))
1045
- testWinTrilling = getDiceID * 3;
1046
- testTrilling = true;
1047
- }
1048
- }
1049
- if(testPair == true && testTrilling == true) {
1050
- win = testWinPair + testWinTrilling;
1051
- byId('free-fullHouse').innerHTML = win + 30;
1052
- myDom.incrasePoints(win + 30);
1053
- } else {
1054
- byId('free-fullHouse').innerHTML = 0;
1055
- }
1056
-
1057
- byId('free-fullHouse').removeEventListener('click', this.attachFreeFullHouse)
1058
- dices.STATUS = "FREE_TO_PLAY";
1059
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1060
- },
1061
-
1062
- attachFreePoker: function() {
1063
- if(dices.validatePass() == false) return;
1064
-
1065
- var TEST = app.myDom.checkForAllDuplicate();
1066
- // console.log('DUPLICATE FOR poker 40 + TEST ');
1067
- for(var key in TEST) {
1068
- if(TEST[key] == 4 || TEST[key] > 4) {
1069
- var getDiceID = parseInt(key.replace('value__', ''))
1070
- var win = getDiceID * 4;
1071
- byId('free-poker').innerHTML = win + 40;
1072
- myDom.incrasePoints(win + 40);
1073
- }
1074
- }
1075
- byId('free-poker').removeEventListener('click', this.attachFreePoker)
1076
- dices.STATUS = "FREE_TO_PLAY";
1077
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1078
- },
1079
-
1080
- attachFreeJamb: function() {
1081
- if(dices.validatePass() == false) return;
1082
- // console.log('<GAMEPLAY><FREE ROW IS FEELED>')
1083
- var TEST = app.myDom.checkForAllDuplicate();
1084
- for(var key in TEST) {
1085
- if(TEST[key] == 5) {
1086
- // win
1087
- var getDiceID = parseInt(key.replace('value__', ''))
1088
- var win = getDiceID * 5;
1089
- byId('free-poker').innerHTML = win + 50;
1090
- myDom.incrasePoints(win + 50);
1091
- }
1092
- }
1093
- byId('free-jamb').removeEventListener('click', this.attachFreeJamb)
1094
- dices.STATUS = "FREE_TO_PLAY";
1095
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1096
- },
1097
- // end of free row
1098
-
1099
- calcDownRowMax: (e) => {
1100
- if(dices.validatePass() == false) return;
1101
- e.target.classList.remove('canPlay');
1102
- byId('down-rowMin').classList.add('canPlay');
1103
- var test = 0;
1104
- let keyLessNum = Object.keys(dices.R).reduce((key, v) => dices.R[v] < dices.R[key] ? v : key);
1105
- // console.log('FIND MIN DICE TO REMOVE FROM SUM ', keyLessNum);
1106
- for(var key in dices.SAVED_DICES) {
1107
- if(key != keyLessNum) {
1108
- test += parseFloat(dices.R[key]);
1109
- }
1110
- }
1111
- e.target.innerHTML = test;
1112
- // now attach next event.
1113
- dices.STATUS = "FREE_TO_PLAY";
1114
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}));
1115
- byId('down-rowMax').removeEventListener("click", myDom.calcDownRowMax);
1116
- byId('down-rowMin').addEventListener('click', myDom.calcDownRowMin);
1117
- },
1118
-
1119
- incrasePoints: function(arg) {
1120
- byId('user-points').innerHTML = parseInt(byId('user-points').innerHTML) + parseInt(arg);
1121
- },
1122
-
1123
- calcDownRowMin: () => {
1124
- if(dices.validatePass() == false) return;
1125
- byId('down-rowMin').classList.remove('canPlay')
1126
- console.log('MIN ENABLED')
1127
- var maxTestKey = Object.keys(dices.R).reduce(function(a, b) {return dices.R[a] > dices.R[b] ? a : b});
1128
- var test = 0;
1129
- for(var key in dices.R) {
1130
- // if(key != maxTestKey) {
1131
- test += parseFloat(dices.R[key])
1132
- // } else {
1133
- // console.log('not calc dice ', dices.R[key])
1134
- // }
1135
- }
1136
- byId('down-rowMin').innerHTML = test;
1137
- byId('down-rowMin').removeEventListener('click', myDom.calcDownRowMin);
1138
- // calc max min dont forget rules for bonus +30
1139
- var SUMMINMAX = parseFloat(byId('down-rowMax').innerHTML) - parseFloat(byId('down-rowMin').innerHTML)
1140
- byId('down-rowMaxMinSum').innerHTML = SUMMINMAX;
1141
- myDom.incrasePoints(SUMMINMAX);
1142
- dices.STATUS = "FREE_TO_PLAY";
1143
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1144
- byId('down-largeStraight').classList.add('canPlay');
1145
- byId('down-largeStraight').addEventListener('click', myDom.attachKenta)
1146
- byId('down-rowMin').removeEventListener('click', myDom.calcDownRowMin);
1147
- },
1148
-
1149
- checkForDuplicate: function() {
1150
- var testArray = [];
1151
- for(var key in dices.SAVED_DICES) {
1152
- var gen = {myId: key, value: dices.R[key]};
1153
- testArray.push(gen);
1154
- }
1155
- var result = Object.values(testArray.reduce((c, v) => {
1156
- let k = v.value;
1157
- c[k] = c[k] || [];
1158
- c[k].push(v);
1159
- return c;
1160
- }, {})).reduce((c, v) => v.length > 1 ? c.concat(v) : c, []);
1161
-
1162
- return [result, testArray];
1163
- },
1164
-
1165
- checkForAllDuplicate: function() {
1166
- var testArray = [];
1167
- for(var key in dices.SAVED_DICES) {
1168
- var gen = {myId: key, value: dices.R[key]};
1169
- testArray.push(gen);
1170
- }
1171
- // console.log('testArray ', testArray)
1172
- var result = Object.values(testArray.reduce((c, v) => {
1173
- let k = v.value;
1174
- c[k] = c[k] || [];
1175
- c[k].push(v);
1176
- return c;
1177
- }, {})).reduce((c, v) => v.length > 1 ? c.concat(v) : c, []);
1178
- var discret = {};
1179
- result.forEach((item, index, array) => {
1180
- if(typeof discret['value__' + item.value] === 'undefined') {
1181
- discret['value__' + item.value] = 1;
1182
- } else {
1183
- discret['value__' + item.value] += 1;
1184
- }
1185
- })
1186
- return discret;
1187
- },
1188
-
1189
- attachKenta: function() {
1190
- console.log('Test kenta ', dices.SAVED_DICES)
1191
- byId('down-largeStraight').classList.remove('canPlay')
1192
- var result = app.myDom.checkForDuplicate()[0];
1193
- var testArray = app.myDom.checkForDuplicate()[1];
1194
- console.log('TEST duplik: ' + result);
1195
- if(result.length > 0) {
1196
- console.log('TEST duplik l : ' + result);
1197
- var locPrevent = false;
1198
- testArray.forEach((item, index, array) => {
1199
- if(result[0].value == item.value && locPrevent == false) {
1200
- console.log('detect by value item.value', item.value)
1201
- locPrevent = true;
1202
- array.splice(index, 1);
1203
- }
1204
- })
1205
- byId('down-largeStraight').innerHTML = `0`;
1206
-
1207
- } else if(result < 2) {
1208
- byId('down-largeStraight').innerHTML = 66;
1209
- myDom.incrasePoints(66);
1210
- } else {
1211
- // zero value
1212
- byId('down-largeStraight').innerHTML = `0`;
1213
- }
1214
- byId('down-threeOfAKind').addEventListener('click', myDom.attachDownTrilling)
1215
- byId('down-largeStraight').removeEventListener('click', myDom.attachKenta)
1216
- dices.STATUS = "FREE_TO_PLAY";
1217
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1218
- },
1219
-
1220
- attachDownTrilling: function() {
1221
- var result = app.myDom.checkForDuplicate()[0];
1222
- // var testArray = app.myDom.checkForDuplicate()[1];
1223
- // console.log('DUPLICATE FOR TRILING ', result);
1224
- if(result.length > 2) {
1225
- var testWin = 0;
1226
- var TEST = app.myDom.checkForAllDuplicate();
1227
- console.log('DUPLICATE FOR TRILING TEST ', TEST);
1228
- for(var key in TEST) {
1229
- if(TEST[key] > 2) {
1230
- // win
1231
- var getDiceID = parseInt(key.replace('value__', ''))
1232
- testWin = getDiceID * 3;
1233
- }
1234
- }
1235
- console.log('DUPLICATE FOR TRILING 30 + TEST ', testWin);
1236
- byId('down-threeOfAKind').innerHTML = 20 + testWin;
1237
- myDom.incrasePoints(20 + testWin);
1238
- } else {
1239
- byId('down-threeOfAKind').innerHTML = 0;
1240
- }
1241
- byId('down-threeOfAKind').removeEventListener('click', myDom.attachDownTrilling)
1242
- byId('down-fullHouse').addEventListener('click', myDom.attachDownFullHouse)
1243
- dices.STATUS = "FREE_TO_PLAY";
1244
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1245
- },
1246
-
1247
- attachDownFullHouse: function() {
1248
- var TEST = app.myDom.checkForAllDuplicate();
1249
- // console.log('DUPLICATE FOR FULL HOUSE 30 + TEST ');
1250
- var win = 0;
1251
- var testPair = false;
1252
- var testTrilling = false;
1253
- var testWinPair = 0;
1254
- var testWinTrilling = 0;
1255
- for(var key in TEST) {
1256
- if(TEST[key] == 2) {
1257
- // win
1258
- var getDiceID = parseInt(key.replace('value__', ''))
1259
- testWinPair = getDiceID * 2;
1260
- testPair = true;
1261
- } else if(TEST[key] == 3) {
1262
- var getDiceID = parseInt(key.replace('value__', ''))
1263
- testWinTrilling = getDiceID * 3;
1264
- testTrilling = true;
1265
- }
1266
- }
1267
- if(testPair == true && testTrilling == true) {
1268
- win = testWinPair + testWinTrilling;
1269
- byId('down-fullHouse').innerHTML = win + 30;
1270
- myDom.incrasePoints(win + 30);
1271
- } else {
1272
- byId('down-fullHouse').innerHTML = 0;
1273
- }
1274
- byId('down-poker').addEventListener('click', myDom.attachDownPoker)
1275
- byId('down-fullHouse').removeEventListener('click', myDom.attachDownFullHouse)
1276
- dices.STATUS = "FREE_TO_PLAY";
1277
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1278
- },
1279
-
1280
- attachDownPoker: function() {
1281
- var TEST = app.myDom.checkForAllDuplicate();
1282
- // console.log('DUPLICATE FOR poker 40 + TEST ');
1283
- for(var key in TEST) {
1284
- if(TEST[key] == 4 || TEST[key] > 4) {
1285
- // win
1286
- var getDiceID = parseInt(key.replace('value__', ''))
1287
- var win = getDiceID * 4;
1288
- byId('down-poker').innerHTML = win + 40;
1289
- myDom.incrasePoints(win + 40);
1290
- }
1291
- }
1292
- byId('down-poker').removeEventListener('click', myDom.attachDownPoker)
1293
- byId('down-jamb').addEventListener('click', myDom.attachDownJamb)
1294
- dices.STATUS = "FREE_TO_PLAY";
1295
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1296
- },
1297
-
1298
- attachDownJamb: function() {
1299
- byId('down-jamb').removeEventListener('click', myDom.attachDownJamb)
1300
- console.log('<GAMEPLAY><DOWN ROW IS FEELED>')
1301
- var TEST = app.myDom.checkForAllDuplicate();
1302
- for(var key in TEST) {
1303
- if(TEST[key] == 5 || TEST[key] > 5) {
1304
- // win
1305
- var getDiceID = parseInt(key.replace('value__', ''))
1306
- var win = getDiceID * 5;
1307
- byId('down-poker').innerHTML = win + 50;
1308
- myDom.incrasePoints(win + 50);
1309
- }
1310
- }
1311
- dices.STATUS = "FREE_TO_PLAY";
1312
- dispatchEvent(new CustomEvent('FREE_TO_PLAY', {}))
1313
- },
1314
-
1315
- isDragging: false,
1316
- offsetX: 0,
1317
- offsetY: 0,
1318
- addDraggerForTable: () => {
1319
- byId('dragHandler').addEventListener('pointerdown', (e) => {
1320
- myDom.isDragging = true;
1321
- const rect = byId('jambTable').getBoundingClientRect();
1322
- myDom.offsetX = e.clientX - rect.left;
1323
- myDom.offsetY = e.clientY - rect.top;
1324
- byId('dragHandler').setPointerCapture(e.pointerId);
1325
- });
1326
-
1327
- byId('dragHandler').addEventListener('pointermove', (e) => {
1328
- if(myDom.isDragging) {
1329
- byId('jambTable').style.left = `${e.clientX - myDom.offsetX}px`;
1330
- byId('jambTable').style.top = `${e.clientY - myDom.offsetY}px`;
1331
- }
1332
- });
1333
-
1334
- byId('dragHandler').addEventListener('pointerup', (e) => {
1335
- myDom.isDragging = false;
1336
- byId('dragHandler').releasePointerCapture(e.pointerId);
1337
- });
1338
- }
1339
-
1340
- }