melonjs 14.0.2 → 14.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 (214) hide show
  1. package/README.md +2 -0
  2. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +10 -0
  3. package/dist/melonjs.mjs/_virtual/arraymultimap.js +10 -0
  4. package/dist/melonjs.mjs/_virtual/earcut.js +10 -0
  5. package/dist/melonjs.mjs/_virtual/howler.js +10 -0
  6. package/dist/melonjs.mjs/_virtual/index.js +10 -0
  7. package/dist/melonjs.mjs/_virtual/index2.js +10 -0
  8. package/dist/melonjs.mjs/_virtual/multimap.js +10 -0
  9. package/dist/melonjs.mjs/_virtual/setmultimap.js +10 -0
  10. package/dist/melonjs.mjs/application/application.js +240 -0
  11. package/dist/melonjs.mjs/audio/audio.js +536 -0
  12. package/dist/melonjs.mjs/camera/camera2d.js +732 -0
  13. package/dist/melonjs.mjs/entity/entity.js +248 -0
  14. package/dist/melonjs.mjs/game.js +29 -0
  15. package/dist/melonjs.mjs/geometries/ellipse.js +275 -0
  16. package/dist/melonjs.mjs/geometries/line.js +116 -0
  17. package/dist/melonjs.mjs/geometries/path2d.js +319 -0
  18. package/dist/melonjs.mjs/geometries/point.js +89 -0
  19. package/dist/melonjs.mjs/geometries/poly.js +500 -0
  20. package/dist/melonjs.mjs/geometries/rectangle.js +375 -0
  21. package/dist/melonjs.mjs/geometries/roundrect.js +168 -0
  22. package/dist/melonjs.mjs/index.js +248 -0
  23. package/dist/melonjs.mjs/input/gamepad.js +501 -0
  24. package/dist/melonjs.mjs/input/input.js +26 -0
  25. package/dist/melonjs.mjs/input/keyboard.js +470 -0
  26. package/dist/melonjs.mjs/input/pointer.js +393 -0
  27. package/dist/melonjs.mjs/input/pointerevent.js +818 -0
  28. package/dist/melonjs.mjs/lang/deprecated.js +157 -0
  29. package/dist/melonjs.mjs/level/level.js +297 -0
  30. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +141 -0
  31. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +448 -0
  32. package/dist/melonjs.mjs/level/tiled/TMXObject.js +355 -0
  33. package/dist/melonjs.mjs/level/tiled/TMXTile.js +194 -0
  34. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +639 -0
  35. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +311 -0
  36. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +83 -0
  37. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +367 -0
  38. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +506 -0
  39. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +220 -0
  40. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +157 -0
  41. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +125 -0
  42. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +109 -0
  43. package/dist/melonjs.mjs/loader/loader.js +801 -0
  44. package/dist/melonjs.mjs/loader/loadingscreen.js +120 -0
  45. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +11 -0
  46. package/dist/melonjs.mjs/math/color.js +618 -0
  47. package/dist/melonjs.mjs/math/math.js +218 -0
  48. package/dist/melonjs.mjs/math/matrix2.js +503 -0
  49. package/dist/melonjs.mjs/math/matrix3.js +681 -0
  50. package/dist/melonjs.mjs/math/observable_vector2.js +471 -0
  51. package/dist/melonjs.mjs/math/observable_vector3.js +561 -0
  52. package/dist/melonjs.mjs/math/vector2.js +528 -0
  53. package/dist/melonjs.mjs/math/vector3.js +569 -0
  54. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +73 -0
  55. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +21 -0
  56. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +324 -0
  57. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +69 -0
  58. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +691 -0
  59. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +350 -0
  60. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +3241 -0
  61. package/dist/melonjs.mjs/particles/emitter.js +267 -0
  62. package/dist/melonjs.mjs/particles/particle.js +188 -0
  63. package/dist/melonjs.mjs/particles/settings.js +319 -0
  64. package/dist/melonjs.mjs/physics/body.js +704 -0
  65. package/dist/melonjs.mjs/physics/bounds.js +460 -0
  66. package/dist/melonjs.mjs/physics/collision.js +132 -0
  67. package/dist/melonjs.mjs/physics/detector.js +194 -0
  68. package/dist/melonjs.mjs/physics/quadtree.js +391 -0
  69. package/dist/melonjs.mjs/physics/response.js +57 -0
  70. package/dist/melonjs.mjs/physics/sat.js +483 -0
  71. package/dist/melonjs.mjs/physics/world.js +221 -0
  72. package/dist/melonjs.mjs/plugin/plugin.js +141 -0
  73. package/dist/melonjs.mjs/renderable/collectable.js +62 -0
  74. package/dist/melonjs.mjs/renderable/colorlayer.js +80 -0
  75. package/dist/melonjs.mjs/renderable/container.js +1018 -0
  76. package/dist/melonjs.mjs/renderable/dragndrop.js +224 -0
  77. package/dist/melonjs.mjs/renderable/imagelayer.js +306 -0
  78. package/dist/melonjs.mjs/renderable/light2d.js +156 -0
  79. package/dist/melonjs.mjs/renderable/nineslicesprite.js +247 -0
  80. package/dist/melonjs.mjs/renderable/renderable.js +783 -0
  81. package/dist/melonjs.mjs/renderable/sprite.js +654 -0
  82. package/dist/melonjs.mjs/renderable/trigger.js +157 -0
  83. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +213 -0
  84. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +226 -0
  85. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +128 -0
  86. package/dist/melonjs.mjs/state/stage.js +237 -0
  87. package/dist/melonjs.mjs/state/state.js +596 -0
  88. package/dist/melonjs.mjs/system/device.js +909 -0
  89. package/dist/melonjs.mjs/system/dom.js +78 -0
  90. package/dist/melonjs.mjs/system/event.js +537 -0
  91. package/dist/melonjs.mjs/system/platform.js +41 -0
  92. package/dist/melonjs.mjs/system/pooling.js +209 -0
  93. package/dist/melonjs.mjs/system/save.js +157 -0
  94. package/dist/melonjs.mjs/system/timer.js +286 -0
  95. package/dist/melonjs.mjs/text/bitmaptext.js +364 -0
  96. package/dist/melonjs.mjs/text/bitmaptextdata.js +199 -0
  97. package/dist/melonjs.mjs/text/glyph.js +66 -0
  98. package/dist/melonjs.mjs/text/text.js +453 -0
  99. package/dist/melonjs.mjs/text/textmetrics.js +176 -0
  100. package/dist/melonjs.mjs/text/textstyle.js +23 -0
  101. package/dist/melonjs.mjs/tweens/easing.js +336 -0
  102. package/dist/melonjs.mjs/tweens/interpolation.js +112 -0
  103. package/dist/melonjs.mjs/tweens/tween.js +480 -0
  104. package/dist/melonjs.mjs/utils/agent.js +76 -0
  105. package/dist/melonjs.mjs/utils/array.js +63 -0
  106. package/dist/melonjs.mjs/utils/file.js +42 -0
  107. package/dist/melonjs.mjs/utils/function.js +70 -0
  108. package/dist/melonjs.mjs/utils/string.js +82 -0
  109. package/dist/melonjs.mjs/utils/utils.js +173 -0
  110. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +807 -0
  111. package/dist/melonjs.mjs/video/renderer.js +411 -0
  112. package/dist/melonjs.mjs/video/texture/atlas.js +519 -0
  113. package/dist/melonjs.mjs/video/texture/cache.js +143 -0
  114. package/dist/melonjs.mjs/video/texture/canvas_texture.js +144 -0
  115. package/dist/melonjs.mjs/video/video.js +462 -0
  116. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +143 -0
  117. package/dist/melonjs.mjs/video/webgl/glshader.js +168 -0
  118. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +10 -0
  119. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +10 -0
  120. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +10 -0
  121. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +10 -0
  122. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +25 -0
  123. package/dist/melonjs.mjs/video/webgl/utils/precision.js +20 -0
  124. package/dist/melonjs.mjs/video/webgl/utils/program.js +67 -0
  125. package/dist/melonjs.mjs/video/webgl/utils/string.js +25 -0
  126. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +92 -0
  127. package/dist/melonjs.mjs/video/webgl/webgl_compositor.js +495 -0
  128. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +1036 -0
  129. package/dist/melonjs.module.d.ts +1163 -1163
  130. package/dist/melonjs.module.js +1903 -3274
  131. package/package.json +22 -17
  132. package/src/application/application.js +3 -3
  133. package/src/audio/audio.js +32 -32
  134. package/src/camera/camera2d.js +31 -31
  135. package/src/entity/entity.js +17 -17
  136. package/src/geometries/ellipse.js +16 -16
  137. package/src/geometries/line.js +5 -5
  138. package/src/geometries/path2d.js +32 -32
  139. package/src/geometries/poly.js +15 -15
  140. package/src/geometries/rectangle.js +18 -18
  141. package/src/geometries/roundrect.js +8 -8
  142. package/src/input/gamepad.js +15 -15
  143. package/src/input/keyboard.js +12 -12
  144. package/src/input/pointer.js +6 -6
  145. package/src/input/pointerevent.js +12 -12
  146. package/src/lang/deprecated.js +12 -12
  147. package/src/level/level.js +25 -25
  148. package/src/level/tiled/TMXLayer.js +22 -22
  149. package/src/level/tiled/TMXTile.js +5 -5
  150. package/src/level/tiled/TMXTileMap.js +6 -6
  151. package/src/level/tiled/TMXTileset.js +2 -2
  152. package/src/level/tiled/TMXUtils.js +5 -5
  153. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +2 -2
  154. package/src/level/tiled/renderer/TMXIsometricRenderer.js +2 -2
  155. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  156. package/src/level/tiled/renderer/TMXRenderer.js +19 -19
  157. package/src/loader/loader.js +20 -20
  158. package/src/math/color.js +20 -20
  159. package/src/math/math.js +16 -16
  160. package/src/math/matrix2.js +16 -16
  161. package/src/math/matrix3.js +25 -25
  162. package/src/math/observable_vector2.js +14 -14
  163. package/src/math/observable_vector3.js +16 -16
  164. package/src/math/vector2.js +9 -9
  165. package/src/math/vector3.js +10 -10
  166. package/src/particles/emitter.js +6 -6
  167. package/src/particles/particle.js +2 -2
  168. package/src/physics/body.js +28 -28
  169. package/src/physics/bounds.js +8 -8
  170. package/src/physics/collision.js +2 -2
  171. package/src/physics/detector.js +6 -6
  172. package/src/physics/quadtree.js +11 -11
  173. package/src/physics/sat.js +31 -31
  174. package/src/physics/world.js +5 -5
  175. package/src/plugin/plugin.js +5 -5
  176. package/src/renderable/collectable.js +3 -3
  177. package/src/renderable/colorlayer.js +5 -5
  178. package/src/renderable/container.js +21 -21
  179. package/src/renderable/dragndrop.js +14 -14
  180. package/src/renderable/imagelayer.js +13 -13
  181. package/src/renderable/light2d.js +3 -3
  182. package/src/renderable/nineslicesprite.js +16 -16
  183. package/src/renderable/renderable.js +23 -23
  184. package/src/renderable/sprite.js +28 -28
  185. package/src/renderable/trigger.js +15 -15
  186. package/src/renderable/ui/uibaseelement.js +7 -7
  187. package/src/renderable/ui/uispriteelement.js +6 -6
  188. package/src/renderable/ui/uitextbutton.js +13 -13
  189. package/src/state/stage.js +7 -7
  190. package/src/state/state.js +17 -17
  191. package/src/system/device.js +11 -11
  192. package/src/system/event.js +10 -10
  193. package/src/system/pooling.js +9 -9
  194. package/src/system/save.js +2 -2
  195. package/src/system/timer.js +10 -10
  196. package/src/text/bitmaptext.js +18 -18
  197. package/src/text/bitmaptextdata.js +2 -2
  198. package/src/text/text.js +23 -23
  199. package/src/text/textmetrics.js +8 -8
  200. package/src/tweens/tween.js +19 -19
  201. package/src/utils/agent.js +5 -5
  202. package/src/utils/array.js +4 -4
  203. package/src/utils/file.js +2 -2
  204. package/src/utils/function.js +6 -6
  205. package/src/utils/string.js +5 -5
  206. package/src/utils/utils.js +4 -4
  207. package/src/video/canvas/canvas_renderer.js +70 -70
  208. package/src/video/renderer.js +26 -26
  209. package/src/video/texture/atlas.js +22 -22
  210. package/src/video/texture/canvas_texture.js +9 -9
  211. package/src/video/video.js +17 -17
  212. package/src/video/webgl/glshader.js +10 -10
  213. package/src/video/webgl/webgl_compositor.js +41 -41
  214. package/src/video/webgl/webgl_renderer.js +75 -75
@@ -0,0 +1,470 @@
1
+ /*!
2
+ * melonJS Game Engine - v14.1.0
3
+ * http://www.melonjs.org
4
+ * melonjs is licensed under the MIT License.
5
+ * http://www.opensource.org/licenses/mit-license
6
+ * @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
7
+ */
8
+ import { preventDefault } from './input.js';
9
+ import { emit, KEYDOWN, KEYUP } from '../system/event.js';
10
+ import { isMobile } from '../system/platform.js';
11
+
12
+ // corresponding actions
13
+ var _keyStatus = {};
14
+
15
+ // lock enable flag for keys
16
+ var _keyLock = {};
17
+ // actual lock status of each key
18
+ var _keyLocked = {};
19
+
20
+ // List of binded keys being held
21
+ var _keyRefs = {};
22
+
23
+ // whether default event should be prevented for a given keypress
24
+ var _preventDefaultForKeys = {};
25
+
26
+ // list of binded keys
27
+ var _keyBindings = {};
28
+
29
+ /**
30
+ * key down event
31
+ * @ignore
32
+ */
33
+ var keyDownEvent = function (e, keyCode, mouseButton) {
34
+
35
+ keyCode = keyCode || e.keyCode || e.button;
36
+ var action = _keyBindings[keyCode];
37
+
38
+ // publish a message for keydown event
39
+ emit(KEYDOWN,
40
+ action,
41
+ keyCode,
42
+ action ? !_keyLocked[action] : true
43
+ );
44
+
45
+ if (action) {
46
+ if (!_keyLocked[action]) {
47
+ var trigger = (typeof mouseButton !== "undefined") ? mouseButton : keyCode;
48
+ if (!_keyRefs[action][trigger]) {
49
+ _keyStatus[action]++;
50
+ _keyRefs[action][trigger] = true;
51
+ }
52
+ }
53
+ // prevent event propagation
54
+ if (_preventDefaultForKeys[keyCode] && (typeof e.preventDefault === "function")) {
55
+ // "fake" events generated through triggerKeyEvent do not have a preventDefault fn
56
+ return e.preventDefault();
57
+ }
58
+ else {
59
+ return true;
60
+ }
61
+ }
62
+
63
+ return true;
64
+ };
65
+
66
+
67
+ /**
68
+ * key up event
69
+ * @ignore
70
+ */
71
+ var keyUpEvent = function (e, keyCode, mouseButton) {
72
+ keyCode = keyCode || e.keyCode || e.button;
73
+ var action = _keyBindings[keyCode];
74
+
75
+ // publish a message for keydown event
76
+ emit(KEYUP, action, keyCode);
77
+
78
+ if (action) {
79
+ var trigger = (typeof mouseButton !== "undefined") ? mouseButton : keyCode;
80
+ _keyRefs[action][trigger] = undefined;
81
+
82
+ if (_keyStatus[action] > 0) {
83
+ _keyStatus[action]--;
84
+ }
85
+
86
+ _keyLocked[action] = false;
87
+
88
+ // prevent event propagation
89
+ if (_preventDefaultForKeys[keyCode] && (typeof e.preventDefault === "function")) {
90
+ // "fake" events generated through triggerKeyEvent do not have a preventDefault fn
91
+ return e.preventDefault();
92
+ }
93
+ else {
94
+ return true;
95
+ }
96
+ }
97
+
98
+ return true;
99
+ };
100
+
101
+ /*
102
+ * PUBLIC STUFF
103
+ */
104
+
105
+ /**
106
+ * the default target element for keyboard events (usually the window element in which the game is running)
107
+ * @public
108
+ * @type {EventTarget}
109
+ * @name keyBoardEventTarget
110
+ * @memberof input
111
+ */
112
+ var keyBoardEventTarget = null;
113
+
114
+ /**
115
+ * standard keyboard constants
116
+ * @public
117
+ * @enum {number}
118
+ * @namespace KEY
119
+ * @memberof input
120
+ */
121
+ const KEY = {
122
+ "BACKSPACE" : 8,
123
+ /** @memberof input.KEY */
124
+ "TAB" : 9,
125
+ /** @memberof input.KEY */
126
+ "ENTER" : 13,
127
+ /** @memberof input.KEY */
128
+ "SHIFT" : 16,
129
+ /** @memberof input.KEY */
130
+ "CTRL" : 17,
131
+ /** @memberof input.KEY */
132
+ "ALT" : 18,
133
+ /** @memberof input.KEY */
134
+ "PAUSE" : 19,
135
+ /** @memberof input.KEY */
136
+ "CAPS_LOCK" : 20,
137
+ /** @memberof input.KEY */
138
+ "ESC" : 27,
139
+ /** @memberof input.KEY */
140
+ "SPACE" : 32,
141
+ /** @memberof input.KEY */
142
+ "PAGE_UP" : 33,
143
+ /** @memberof input.KEY */
144
+ "PAGE_DOWN" : 34,
145
+ /** @memberof input.KEY */
146
+ "END" : 35,
147
+ /** @memberof input.KEY */
148
+ "HOME" : 36,
149
+ /** @memberof input.KEY */
150
+ "LEFT" : 37,
151
+ /** @memberof input.KEY */
152
+ "UP" : 38,
153
+ /** @memberof input.KEY */
154
+ "RIGHT" : 39,
155
+ /** @memberof input.KEY */
156
+ "DOWN" : 40,
157
+ /** @memberof input.KEY */
158
+ "PRINT_SCREEN" : 42,
159
+ /** @memberof input.KEY */
160
+ "INSERT" : 45,
161
+ /** @memberof input.KEY */
162
+ "DELETE" : 46,
163
+ /** @memberof input.KEY */
164
+ "NUM0" : 48,
165
+ /** @memberof input.KEY */
166
+ "NUM1" : 49,
167
+ /** @memberof input.KEY */
168
+ "NUM2" : 50,
169
+ /** @memberof input.KEY */
170
+ "NUM3" : 51,
171
+ /** @memberof input.KEY */
172
+ "NUM4" : 52,
173
+ /** @memberof input.KEY */
174
+ "NUM5" : 53,
175
+ /** @memberof input.KEY */
176
+ "NUM6" : 54,
177
+ /** @memberof input.KEY */
178
+ "NUM7" : 55,
179
+ /** @memberof input.KEY */
180
+ "NUM8" : 56,
181
+ /** @memberof input.KEY */
182
+ "NUM9" : 57,
183
+ /** @memberof input.KEY */
184
+ "A" : 65,
185
+ /** @memberof input.KEY */
186
+ "B" : 66,
187
+ /** @memberof input.KEY */
188
+ "C" : 67,
189
+ /** @memberof input.KEY */
190
+ "D" : 68,
191
+ /** @memberof input.KEY */
192
+ "E" : 69,
193
+ /** @memberof input.KEY */
194
+ "F" : 70,
195
+ /** @memberof input.KEY */
196
+ "G" : 71,
197
+ /** @memberof input.KEY */
198
+ "H" : 72,
199
+ /** @memberof input.KEY */
200
+ "I" : 73,
201
+ /** @memberof input.KEY */
202
+ "J" : 74,
203
+ /** @memberof input.KEY */
204
+ "K" : 75,
205
+ /** @memberof input.KEY */
206
+ "L" : 76,
207
+ /** @memberof input.KEY */
208
+ "M" : 77,
209
+ /** @memberof input.KEY */
210
+ "N" : 78,
211
+ /** @memberof input.KEY */
212
+ "O" : 79,
213
+ /** @memberof input.KEY */
214
+ "P" : 80,
215
+ /** @memberof input.KEY */
216
+ "Q" : 81,
217
+ /** @memberof input.KEY */
218
+ "R" : 82,
219
+ /** @memberof input.KEY */
220
+ "S" : 83,
221
+ /** @memberof input.KEY */
222
+ "T" : 84,
223
+ /** @memberof input.KEY */
224
+ "U" : 85,
225
+ /** @memberof input.KEY */
226
+ "V" : 86,
227
+ /** @memberof input.KEY */
228
+ "W" : 87,
229
+ /** @memberof input.KEY */
230
+ "X" : 88,
231
+ /** @memberof input.KEY */
232
+ "Y" : 89,
233
+ /** @memberof input.KEY */
234
+ "Z" : 90,
235
+ /** @memberof input.KEY */
236
+ "WINDOW_KEY" : 91,
237
+ /** @memberof input.KEY */
238
+ "NUMPAD0" : 96,
239
+ /** @memberof input.KEY */
240
+ "NUMPAD1" : 97,
241
+ /** @memberof input.KEY */
242
+ "NUMPAD2" : 98,
243
+ /** @memberof input.KEY */
244
+ "NUMPAD3" : 99,
245
+ /** @memberof input.KEY */
246
+ "NUMPAD4" : 100,
247
+ /** @memberof input.KEY */
248
+ "NUMPAD5" : 101,
249
+ /** @memberof input.KEY */
250
+ "NUMPAD6" : 102,
251
+ /** @memberof input.KEY */
252
+ "NUMPAD7" : 103,
253
+ /** @memberof input.KEY */
254
+ "NUMPAD8" : 104,
255
+ /** @memberof input.KEY */
256
+ "NUMPAD9" : 105,
257
+ /** @memberof input.KEY */
258
+ "MULTIPLY" : 106,
259
+ /** @memberof input.KEY */
260
+ "ADD" : 107,
261
+ /** @memberof input.KEY */
262
+ "SUBSTRACT" : 109,
263
+ /** @memberof input.KEY */
264
+ "DECIMAL" : 110,
265
+ /** @memberof input.KEY */
266
+ "DIVIDE" : 111,
267
+ /** @memberof input.KEY */
268
+ "F1" : 112,
269
+ /** @memberof input.KEY */
270
+ "F2" : 113,
271
+ /** @memberof input.KEY */
272
+ "F3" : 114,
273
+ /** @memberof input.KEY */
274
+ "F4" : 115,
275
+ /** @memberof input.KEY */
276
+ "F5" : 116,
277
+ /** @memberof input.KEY */
278
+ "F6" : 117,
279
+ /** @memberof input.KEY */
280
+ "F7" : 118,
281
+ /** @memberof input.KEY */
282
+ "F8" : 119,
283
+ /** @memberof input.KEY */
284
+ "F9" : 120,
285
+ /** @memberof input.KEY */
286
+ "F10" : 121,
287
+ /** @memberof input.KEY */
288
+ "F11" : 122,
289
+ /** @memberof input.KEY */
290
+ "F12" : 123,
291
+ /** @memberof input.KEY */
292
+ "TILDE" : 126,
293
+ /** @memberof input.KEY */
294
+ "NUM_LOCK" : 144,
295
+ /** @memberof input.KEY */
296
+ "SCROLL_LOCK" : 145,
297
+ /** @memberof input.KEY */
298
+ "SEMICOLON" : 186,
299
+ /** @memberof input.KEY */
300
+ "PLUS" : 187,
301
+ /** @memberof input.KEY */
302
+ "COMMA" : 188,
303
+ /** @memberof input.KEY */
304
+ "MINUS" : 189,
305
+ /** @memberof input.KEY */
306
+ "PERIOD" : 190,
307
+ /** @memberof input.KEY */
308
+ "FORWAND_SLASH" : 191,
309
+ /** @memberof input.KEY */
310
+ "GRAVE_ACCENT" : 192,
311
+ /** @memberof input.KEY */
312
+ "OPEN_BRACKET" : 219,
313
+ /** @memberof input.KEY */
314
+ "BACK_SLASH" : 220,
315
+ /** @memberof input.KEY */
316
+ "CLOSE_BRACKET" : 221,
317
+ /** @memberof input.KEY */
318
+ "SINGLE_QUOTE" : 222
319
+ };
320
+
321
+ /**
322
+ * enable keyboard event
323
+ * @ignore
324
+ */
325
+ function initKeyboardEvent() {
326
+ // make sure the keyboard is enable
327
+ if (keyBoardEventTarget === null && isMobile === false) {
328
+ keyBoardEventTarget = globalThis;
329
+ if (typeof keyBoardEventTarget.addEventListener === "function") {
330
+ keyBoardEventTarget.addEventListener("keydown", keyDownEvent, false);
331
+ keyBoardEventTarget.addEventListener("keyup", keyUpEvent, false);
332
+ }
333
+ }
334
+ }
335
+
336
+ /**
337
+ * return the key press status of the specified action
338
+ * @name isKeyPressed
339
+ * @memberof input
340
+ * @public
341
+ * @param {string} action - user defined corresponding action
342
+ * @returns {boolean} true if pressed
343
+ * @example
344
+ * if (me.input.isKeyPressed('left')) {
345
+ * //do something
346
+ * }
347
+ * else if (me.input.isKeyPressed('right')) {
348
+ * //do something else...
349
+ * }
350
+ */
351
+ function isKeyPressed(action) {
352
+ if (_keyStatus[action] && !_keyLocked[action]) {
353
+ if (_keyLock[action]) {
354
+ _keyLocked[action] = true;
355
+ }
356
+ return true;
357
+ }
358
+ return false;
359
+ }
360
+
361
+ /**
362
+ * return the key status of the specified action
363
+ * @name keyStatus
364
+ * @memberof input
365
+ * @public
366
+ * @param {string} action - user defined corresponding action
367
+ * @returns {boolean} down (true) or up(false)
368
+ */
369
+ function keyStatus(action) {
370
+ return (_keyStatus[action] > 0);
371
+ }
372
+
373
+
374
+ /**
375
+ * trigger the specified key (simulated) event <br>
376
+ * @name triggerKeyEvent
377
+ * @memberof input
378
+ * @public
379
+ * @param {number} keycode - (See {@link input.KEY})
380
+ * @param {boolean} [status=false] - true to trigger a key down event, or false for key up event
381
+ * @param {number} [mouseButton] - the mouse button to trigger
382
+ * @example
383
+ * // trigger a key press
384
+ * me.input.triggerKeyEvent(me.input.KEY.LEFT, true);
385
+ */
386
+ function triggerKeyEvent(keycode, status, mouseButton) {
387
+ if (status === true) {
388
+ keyDownEvent({}, keycode, mouseButton);
389
+ }
390
+ else {
391
+ keyUpEvent({}, keycode, mouseButton);
392
+ }
393
+ }
394
+
395
+
396
+ /**
397
+ * associate a user defined action to a keycode
398
+ * @name bindKey
399
+ * @memberof input
400
+ * @public
401
+ * @param {number} keycode - (See {@link input.KEY})
402
+ * @param {string} action - user defined corresponding action
403
+ * @param {boolean} [lock=false] - cancel the keypress event once read
404
+ * @param {boolean} [preventDefault=input.preventDefault] - prevent default browser action
405
+ * @example
406
+ * // enable the keyboard
407
+ * me.input.bindKey(me.input.KEY.LEFT, "left");
408
+ * me.input.bindKey(me.input.KEY.RIGHT, "right");
409
+ * me.input.bindKey(me.input.KEY.X, "jump", true);
410
+ * me.input.bindKey(me.input.KEY.F1, "options", true, true);
411
+ */
412
+ function bindKey(keycode, action, lock, preventDefault$1 = preventDefault) {
413
+ _keyBindings[keycode] = action;
414
+ _preventDefaultForKeys[keycode] = preventDefault$1;
415
+
416
+ _keyStatus[action] = 0;
417
+ _keyLock[action] = lock ? lock : false;
418
+ _keyLocked[action] = false;
419
+ _keyRefs[action] = {};
420
+ }
421
+
422
+ /**
423
+ * return the action associated with the given keycode
424
+ * @name getBindingKey
425
+ * @memberof input
426
+ * @public
427
+ * @param {number} keycode - (See {@link input.KEY})
428
+ * @returns {string} user defined associated action
429
+ */
430
+ function getBindingKey(keycode) {
431
+ return _keyBindings[keycode];
432
+ }
433
+
434
+ /**
435
+ * unlock a key manually
436
+ * @name unlockKey
437
+ * @memberof input
438
+ * @public
439
+ * @param {string} action - user defined corresponding action
440
+ * @example
441
+ * // Unlock jump when touching the ground
442
+ * if (!this.falling && !this.jumping) {
443
+ * me.input.unlockKey("jump");
444
+ * }
445
+ */
446
+ function unlockKey(action) {
447
+ _keyLocked[action] = false;
448
+ }
449
+
450
+ /**
451
+ * unbind the defined keycode
452
+ * @name unbindKey
453
+ * @memberof input
454
+ * @public
455
+ * @param {number} keycode - (See {@link input.KEY})
456
+ * @example
457
+ * me.input.unbindKey(me.input.KEY.LEFT);
458
+ */
459
+ function unbindKey(keycode) {
460
+ // clear the event status
461
+ var keybinding = _keyBindings[keycode];
462
+ _keyStatus[keybinding] = 0;
463
+ _keyLock[keybinding] = false;
464
+ _keyRefs[keybinding] = {};
465
+ // remove the key binding
466
+ _keyBindings[keycode] = null;
467
+ _preventDefaultForKeys[keycode] = null;
468
+ }
469
+
470
+ export { KEY, bindKey, getBindingKey, initKeyboardEvent, isKeyPressed, keyBoardEventTarget, keyStatus, triggerKeyEvent, unbindKey, unlockKey };