littlejsengine 1.3.0 → 1.3.3

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 (88) hide show
  1. package/README.md +4 -3
  2. package/build.bat +1 -1
  3. package/docs/Audio.html +2268 -0
  4. package/docs/Color.html +3376 -0
  5. package/docs/Debug.html +2933 -0
  6. package/docs/Draw.html +4480 -0
  7. package/docs/EngineObject.html +4734 -0
  8. package/docs/FontImage.html +1055 -0
  9. package/docs/Input.html +2806 -0
  10. package/docs/Medal.html +1007 -0
  11. package/docs/Medals.html +628 -0
  12. package/docs/Music.html +584 -0
  13. package/docs/Newgrounds.html +1399 -0
  14. package/docs/Particle.html +4825 -0
  15. package/docs/ParticleEmitter.html +8099 -0
  16. package/docs/Random.html +1774 -0
  17. package/docs/Settings.html +3140 -0
  18. package/docs/Sound.html +1249 -0
  19. package/docs/TileCollision.html +1409 -0
  20. package/docs/TileLayer.html +7310 -0
  21. package/docs/TileLayerData.html +1052 -0
  22. package/docs/Timer.html +1295 -0
  23. package/docs/Utilities.html +3278 -0
  24. package/docs/Vector2.html +4266 -0
  25. package/docs/WebGL.html +2307 -0
  26. package/docs/engine.js.html +443 -0
  27. package/docs/engineAudio.js.html +627 -0
  28. package/docs/engineDebug.js.html +554 -0
  29. package/docs/engineDraw.js.html +539 -0
  30. package/docs/engineInput.js.html +571 -0
  31. package/docs/engineMedals.js.html +460 -0
  32. package/docs/engineObject.js.html +533 -0
  33. package/docs/engineParticles.js.html +443 -0
  34. package/docs/engineSettings.js.html +381 -0
  35. package/docs/engineTileLayer.js.html +503 -0
  36. package/docs/engineUtilities.js.html +700 -0
  37. package/docs/engineWebGL.js.html +511 -0
  38. package/docs/fonts/MavenPro-Regular.ttf +0 -0
  39. package/docs/fonts/Montserrat-Regular.ttf +0 -0
  40. package/docs/fonts/Muli-Black.ttf +0 -0
  41. package/docs/fonts/OFL-hind.txt +93 -0
  42. package/docs/fonts/OFL-montserrat.txt +93 -0
  43. package/docs/global.html +1771 -0
  44. package/docs/index.css +6 -0
  45. package/docs/index.html +267 -0
  46. package/docs/scripts/fix-code-block.js +53 -0
  47. package/docs/scripts/fix-navbar.js +25 -0
  48. package/docs/scripts/linenumber.js +25 -0
  49. package/docs/scripts/misc.js +217 -0
  50. package/docs/scripts/resize.js +85 -0
  51. package/docs/scripts/search.js +83 -0
  52. package/docs/scripts/third-party/Apache-License-2.0.txt +202 -0
  53. package/docs/scripts/third-party/fuse.js +9 -0
  54. package/docs/scripts/third-party/lang-css.js +2 -0
  55. package/docs/scripts/third-party/prettify.js +28 -0
  56. package/docs/static/favicon.png +0 -0
  57. package/docs/static/index.css +4 -0
  58. package/docs/styles/clean-jsdoc-theme-base.css +393 -0
  59. package/docs/styles/clean-jsdoc-theme-dark.css +324 -0
  60. package/docs/styles/clean-jsdoc-theme-light.css +319 -0
  61. package/docs/styles/reset.css +346 -0
  62. package/docs/styles/third-party/ionicons.min.css +11 -0
  63. package/docs/styles/third-party/prettify-jsdoc.css +111 -0
  64. package/docs/styles/third-party/prettify-tomorrow.css +5 -0
  65. package/engine/engine.all.js +72 -33
  66. package/engine/engine.all.min.js +1 -1
  67. package/engine/engine.all.release.js +72 -33
  68. package/engine/engine.js +1 -1
  69. package/engine/engineAudio.js +5 -7
  70. package/engine/engineBuild.bat +0 -1
  71. package/engine/engineDraw.js +4 -3
  72. package/engine/engineInput.js +5 -1
  73. package/engine/engineMedals.js +1 -1
  74. package/engine/engineObject.js +19 -16
  75. package/engine/engineParticles.js +1 -1
  76. package/engine/engineSettings.js +5 -0
  77. package/engine/engineUtilities.js +30 -2
  78. package/engine/engineWebGL.js +1 -1
  79. package/engine/index.d.ts +15 -5
  80. package/examples/breakout/index.html +3 -3
  81. package/examples/particles/index.html +62 -62
  82. package/examples/platformer/index.html +5 -5
  83. package/examples/puzzle/game.js +3 -1
  84. package/examples/puzzle/index.html +2 -2
  85. package/examples/stress/index.html +1 -1
  86. package/game.js +3 -14
  87. package/index.html +13 -13
  88. package/package.json +1 -1
@@ -15,24 +15,24 @@ button
15
15
  </style>
16
16
  </head><body>
17
17
 
18
- <script src=../../engine/engineDebug.js?104></script>
19
- <script src=../../engine/engineUtilities.js?104></script>
20
- <script src=../../engine/engineSettings.js?104></script>
21
- <script src=../../engine/engineObject.js?104></script>
22
- <script src=../../engine/engineDraw.js?104></script>
23
- <script src=../../engine/engineInput.js?104></script>
24
- <script src=../../engine/engineAudio.js?104></script>
25
- <script src=../../engine/engineTileLayer.js?104></script>
26
- <script src=../../engine/engineParticles.js?104></script>
27
- <script src=../../engine/engineMedals.js?104></script>
28
- <script src=../../engine/engineWebGL.js?104></script>
29
- <script src=../../engine/engine.js?104></script>
18
+ <script src=../../engine/engineDebug.js?108></script>
19
+ <script src=../../engine/engineUtilities.js?108></script>
20
+ <script src=../../engine/engineSettings.js?108></script>
21
+ <script src=../../engine/engineObject.js?108></script>
22
+ <script src=../../engine/engineDraw.js?108></script>
23
+ <script src=../../engine/engineInput.js?108></script>
24
+ <script src=../../engine/engineAudio.js?108></script>
25
+ <script src=../../engine/engineTileLayer.js?108></script>
26
+ <script src=../../engine/engineParticles.js?108></script>
27
+ <script src=../../engine/engineMedals.js?108></script>
28
+ <script src=../../engine/engineWebGL.js?108></script>
29
+ <script src=../../engine/engine.js?108></script>
30
30
  <script>
31
31
 
32
32
  'use strict';
33
33
 
34
34
  let particleEditor = 0, particleSystem, particleSystemDiv, particleSystemCode;
35
- let inputCondense;
35
+ let inputExpand;
36
36
  let restartTimer = new Timer();
37
37
  const storagePrefix = 'particles_';
38
38
 
@@ -42,35 +42,35 @@ function addSetting(name, type, min, max, step, description)
42
42
  particleSettings.push({name, type:type||'number', min, max, step, description});
43
43
  }
44
44
 
45
- addSetting('emitSize', '', 0, 1e9, .1);
46
- addSetting('emitTime', '', 0, 1e9, .1);
47
- addSetting('emitRate', '', 0, 1e9, 1);
48
- addSetting('emitConeAngle', '', 0, 1e9, .01);
49
- addSetting('tileIndex', '', -1, 1e9, 1);
50
- addSetting('tileSizeX', '', 0, 1e9, 1);
51
- addSetting('tileSizeY', '', 0, 1e9, 1);
52
- addSetting('colorStartA', 'color');
53
- addSetting('colorStartB', 'color');
54
- addSetting('colorEndA', 'color');
55
- addSetting('colorEndB', 'color');
56
- addSetting('colorAlphaStartA', 'alpha', 0, 1, .01);
57
- addSetting('colorAlphaStartB', 'alpha', 0, 1, .01);
58
- addSetting('colorAlphaEndA', 'alpha', 0, 1, .01);
59
- addSetting('colorAlphaEndB', 'alpha', 0, 1, .01);
60
- addSetting('particleTime', '', 0, 1e9, .1);
61
- addSetting('sizeStart', '', 0, 1e9, .01);
62
- addSetting('sizeEnd', '', 0, 1e9, .01);
63
- addSetting('speed', '', 0, 1e9, .01);
64
- addSetting('angleSpeed', '', 0, 1e9, .01);
65
- addSetting('damping', '', 0, 1, .01);
66
- addSetting('angleDamping', '', 0, 1, .01);
67
- addSetting('gravityScale', '', -1e9, 1e9, .1);
68
- addSetting('particleConeAngle','', 0, 1e9, .1);
69
- addSetting('fadeRate', '', 0, 1, .01);
70
- addSetting('randomness', '', 0, 1, .01);
71
- addSetting('collideTiles', 'checkbox');
72
- addSetting('additive', 'checkbox');
73
- addSetting('randomColorLinear','checkbox');
45
+ addSetting('emitSize', '', 0, 1e9, .1, 'World space size of the emitter');
46
+ addSetting('emitTime', '', 0, 1e9, .1, 'How long to stay alive (0 is forever)');
47
+ addSetting('emitRate', '', 0, 1e9, 1, 'How many particles per second to spawn, does not emit if 0');
48
+ addSetting('emitConeAngle', '', 0, 1e9, .01,'Local angle to apply velocity to particles from emitter');
49
+ addSetting('tileIndex', '', -1, 1e9, 1, 'Tile to use to render object (-1 is untextured)');
50
+ addSetting('tileSizeX', '', 0, 1e9, 1, 'X Size of texture tile in source pixelss');
51
+ addSetting('tileSizeY', '', 0, 1e9, 1, 'Y Size of texture tile in source pixelss');
52
+ addSetting('colorStartA', 'color',0,0,0, 'Color at start of life 1');
53
+ addSetting('colorStartB', 'color',0,0,0, 'Color at start of life 2');
54
+ addSetting('colorEndA', 'color',0,0,0, 'Color at end of life 1');
55
+ addSetting('colorEndB', 'color',0,0,0, 'Color at end of life 2');
56
+ addSetting('colorAlphaStartA', 'alpha', 0, 1, .01, 'Alpha at start of life 1');
57
+ addSetting('colorAlphaStartB', 'alpha', 0, 1, .01, 'Alpha at start of life 2');
58
+ addSetting('colorAlphaEndA', 'alpha', 0, 1, .01, 'Alpha at end of life 1');
59
+ addSetting('colorAlphaEndB', 'alpha', 0, 1, .01, 'Alpha at end of life 2');
60
+ addSetting('particleTime', '', 0, 1e9, .1, 'How long particles live');
61
+ addSetting('sizeStart', '', 0, 1e9, .01,'How big are particles at start');
62
+ addSetting('sizeEnd', '', 0, 1e9, .01,'How big are particles at end');
63
+ addSetting('speed', '', 0, 1e9, .01,'How fast are particles when spawned');
64
+ addSetting('angleSpeed', '', 0, 1e9, .01,'How fast are particles rotating');
65
+ addSetting('damping', '', 0, 1, .01,'How much to dampen particle speed');
66
+ addSetting('angleDamping', '', 0, 1, .01,'How much to dampen particle angular speed');
67
+ addSetting('gravityScale', '', -1e9, 1e9, .1, 'How much does gravity effect particles');
68
+ addSetting('particleConeAngle','', 0, 1e9, .1, 'Cone for start particle angle');
69
+ addSetting('fadeRate', '', 0, 1, .01,'How quickly particles fade in percent of life');
70
+ addSetting('randomness', '', 0, 1, .01,'Apply extra randomness percent');
71
+ addSetting('collideTiles', 'checkbox',0,0,0, 'Do particles collide against tiles?');
72
+ addSetting('additive', 'checkbox',0,0,0, 'Should particles use addtive blend?');
73
+ addSetting('randomColorLinear','checkbox',0,0,0, 'Should color be randomized linearly?');
74
74
 
75
75
  function makeEmitter()
76
76
  {
@@ -95,8 +95,10 @@ function gameInit()
95
95
  {
96
96
  const input = setting.input = document.createElement('input');
97
97
  const name = setting.name;
98
- input.oninput = (e)=> updateParticles();
99
98
  input.type = setting.type == 'alpha' ? 'number' : setting.type;
99
+ input.title = setting.description;
100
+ input.oninput = (e)=> updateParticles(setting.type == 'checkbox');
101
+ input.onblur = (e)=> updateParticles(1);
100
102
  if (setting.min !== undefined)
101
103
  input.min = setting.min;
102
104
  if (setting.max !== undefined)
@@ -135,13 +137,12 @@ function gameInit()
135
137
  }
136
138
  }
137
139
  {
138
- inputCondense = document.createElement('input');
139
- div.appendChild(inputCondense);
140
- inputCondense.checked = 'true';
141
- inputCondense.type = 'checkbox';
142
- inputCondense.style.width = 'initial';
143
- inputCondense.oninput = (e)=> updateParticles();
144
- div.appendChild(document.createTextNode(' Condense'));
140
+ inputExpand = document.createElement('input');
141
+ div.appendChild(inputExpand);
142
+ inputExpand.type = 'checkbox';
143
+ inputExpand.style.width = 'initial';
144
+ inputExpand.oninput = (e)=> updateParticles(1);
145
+ div.appendChild(document.createTextNode(' Expand'));
145
146
  }
146
147
 
147
148
  //div.appendChild(document.createTextNode('JavaScript Code... '));
@@ -171,7 +172,7 @@ function gameInit()
171
172
  updateParticles();
172
173
  }
173
174
 
174
- function updateParticles()
175
+ function updateParticles(shouldUpdateInput)
175
176
  {
176
177
  for (const setting of particleSettings)
177
178
  {
@@ -212,7 +213,7 @@ function updateParticles()
212
213
  else
213
214
  particleSystem[name] = clamp(inputFloat, setting.min, setting.max);
214
215
  }
215
- updateInputs();
216
+ shouldUpdateInput && updateInputs()
216
217
  }
217
218
 
218
219
  function updateInputs(save=1)
@@ -260,7 +261,7 @@ function updateInputs(save=1)
260
261
 
261
262
  function getCode()
262
263
  {
263
- const condense = inputCondense.checked;
264
+ const expand = inputExpand.checked;
264
265
  let code = '';
265
266
 
266
267
  // https://www.codingem.com/javascript-how-to-limit-decimal-places/
@@ -270,10 +271,10 @@ function getCode()
270
271
  }
271
272
 
272
273
  code = 'new ParticleEmitter(';
273
- if (condense)
274
- code += 'vec2(), 0, ';
275
- else
274
+ if (expand)
276
275
  code += '\n vec2(), 0,\t//position, angle\n';
276
+ else
277
+ code += 'vec2(), 0, ';
277
278
 
278
279
  let count = 0;
279
280
  for (const setting of particleSettings)
@@ -296,12 +297,12 @@ function getCode()
296
297
  value = particleSystem[name] ? 1 : 0;
297
298
  else
298
299
  value = particleSystem[name].round(3);
299
- if (!condense)
300
+ if (expand)
300
301
  code += ' ';
301
302
  code += value;
302
303
 
303
304
  const isEnd = name == 'randomColorLinear';
304
- if (!condense)
305
+ if (expand)
305
306
  {
306
307
  code += ',\t// ' + name;
307
308
  if (!isEnd)
@@ -311,11 +312,10 @@ function getCode()
311
312
  code += ', ';
312
313
  }
313
314
 
314
-
315
- if (condense)
316
- code += ');';
317
- else
315
+ if (expand)
318
316
  code += '\n); // particle emitter';
317
+ else
318
+ code += ');';
319
319
 
320
320
  return code;
321
321
  }
@@ -5,9 +5,9 @@
5
5
  <link rel=icon type=image/png href=../../favicon.png>
6
6
  </head><body>
7
7
 
8
- <script src=../../engine/engine.all.js?104></script>
9
- <script src=gameObjects.js?104></script>
10
- <script src=gamePlayer.js?104></script>
11
- <script src=gameEffects.js?104></script>
12
- <script src=gameLevel.js?104></script>
8
+ <script src=../../engine/engine.all.js?108></script>
9
+ <script src=gameObjects.js?108></script>
10
+ <script src=gamePlayer.js?108></script>
11
+ <script src=gameEffects.js?108></script>
12
+ <script src=gameLevel.js?108></script>
13
13
  <script src=game.js?103></script>
@@ -129,7 +129,9 @@ function gameUpdate()
129
129
  else if (mouseIsDown(0) && dragStartPos)
130
130
  {
131
131
  // if dragging to a neighbor tile
132
- if ((abs(dragStartPos.x - mouseTilePos.x) == 1) ^ (abs(dragStartPos.y - mouseTilePos.y) == 1))
132
+ const dx = abs(dragStartPos.x - mouseTilePos.x);
133
+ const dy = abs(dragStartPos.y - mouseTilePos.y);
134
+ if (dx == 1 && dy == 0 || dx == 0 && dy == 1)
133
135
  {
134
136
  const startTile = getTile(dragStartPos);
135
137
  const endTile = getTile(mouseTilePos);
@@ -5,5 +5,5 @@
5
5
  <link rel=icon type=image/png href=../../favicon.png>
6
6
  </head><body>
7
7
 
8
- <script src=../../engine/engine.all.js?104></script>
9
- <script src=game.js?104></script>
8
+ <script src=../../engine/engine.all.js?108></script>
9
+ <script src=game.js?108></script>
@@ -5,7 +5,7 @@
5
5
  <link rel=icon type=image/png href=../../favicon.png>
6
6
  </head><body>
7
7
 
8
- <script src=../../engine/engine.all.min.js?104></script>
8
+ <script src=../../engine/engine.all.min.js?108></script>
9
9
  <script>
10
10
 
11
11
  /*
package/game.js CHANGED
@@ -5,8 +5,7 @@
5
5
  'use strict';
6
6
 
7
7
  // popup errors if there are any (help diagnose issues on mobile devices)
8
- if (debug)
9
- onerror = (...parameters)=> alert(parameters);
8
+ //onerror = (...parameters)=> alert(parameters);
10
9
 
11
10
  // game variables
12
11
  let particleEmiter, clickCount = 0;
@@ -15,7 +14,7 @@ let particleEmiter, clickCount = 0;
15
14
  const sound_click = new Sound([.5,.5]);
16
15
 
17
16
  // medals
18
- const medal_example = new Medal(0, 'Example Medal', 'Medal description goes here.');
17
+ const medal_example = new Medal(0, 'Example Medal', 'Medal description goes here.');
19
18
  medalsInit('Hello World');
20
19
 
21
20
  ///////////////////////////////////////////////////////////////////////////////
@@ -109,17 +108,7 @@ function gameRender()
109
108
  function gameRenderPost()
110
109
  {
111
110
  // draw to overlay canvas for hud rendering
112
- const drawText = (text, x, y, size=70) =>
113
- {
114
- overlayContext.textAlign = 'center';
115
- overlayContext.textBaseline = 'top';
116
- overlayContext.font = size + 'px arial';
117
- overlayContext.fillStyle = '#fff';
118
- overlayContext.lineWidth = 3;
119
- overlayContext.strokeText(text, x, y);
120
- overlayContext.fillText(text, x, y);
121
- }
122
- drawText('Hello World', overlayCanvas.width/2, 40);
111
+ drawTextScreen('Hello World', vec2(overlayCanvas.width/2, 80), 80, new Color, 9);
123
112
  }
124
113
 
125
114
  ///////////////////////////////////////////////////////////////////////////////
package/index.html CHANGED
@@ -6,21 +6,21 @@
6
6
  </head><body>
7
7
 
8
8
  <!-- LittleJS engine scripts -->
9
- <script src=engine/engineDebug.js?105></script>
10
- <script src=engine/engineUtilities.js?105></script>
11
- <script src=engine/engineSettings.js?105></script>
12
- <script src=engine/engineObject.js?105></script>
13
- <script src=engine/engineDraw.js?105></script>
14
- <script src=engine/engineInput.js?105></script>
15
- <script src=engine/engineAudio.js?105></script>
16
- <script src=engine/engineTileLayer.js?105></script>
17
- <script src=engine/engineParticles.js?105></script>
18
- <script src=engine/engineMedals.js?105></script>
19
- <script src=engine/engineWebGL.js?105></script>
20
- <script src=engine/engine.js?105></script>
9
+ <script src=engine/engineDebug.js?108></script>
10
+ <script src=engine/engineUtilities.js?108></script>
11
+ <script src=engine/engineSettings.js?108></script>
12
+ <script src=engine/engineObject.js?108></script>
13
+ <script src=engine/engineDraw.js?108></script>
14
+ <script src=engine/engineInput.js?108></script>
15
+ <script src=engine/engineAudio.js?108></script>
16
+ <script src=engine/engineTileLayer.js?108></script>
17
+ <script src=engine/engineParticles.js?108></script>
18
+ <script src=engine/engineMedals.js?108></script>
19
+ <script src=engine/engineWebGL.js?108></script>
20
+ <script src=engine/engine.js?108></script>
21
21
 
22
22
  <!-- You can also include all engine scripts like this... -->
23
23
  <!-- <script src=engine/engine.all.js></script> -->
24
24
 
25
25
  <!-- Add your game scripts here -->
26
- <script src=game.js?105></script>
26
+ <script src=game.js?108></script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "littlejsengine",
3
- "version": "1.3.0",
3
+ "version": "1.3.3",
4
4
  "description": "LittleJS - Tiny and Fast HTML5 Game Engine",
5
5
  "main": "engine/engine.all.js",
6
6
  "repository": {