littlejsengine 1.3.8 → 1.4.5

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 (42) hide show
  1. package/README.md +30 -9
  2. package/build.bat +1 -1
  3. package/buildSetup.bat +2 -2
  4. package/engine/engine.all.js +276 -167
  5. package/engine/engine.all.min.js +1 -1
  6. package/engine/engine.all.module.js +4812 -0
  7. package/engine/engine.all.release.js +259 -143
  8. package/engine/engine.all.release.module.js +4457 -0
  9. package/engine/engine.js +12 -8
  10. package/engine/engineBuild.bat +1 -1
  11. package/engine/engineBuildModule.mjs +14 -0
  12. package/engine/engineDebug.js +17 -24
  13. package/engine/engineDraw.js +16 -16
  14. package/engine/engineExportModule.js +333 -0
  15. package/engine/engineInput.js +9 -8
  16. package/engine/engineMedals.js +10 -6
  17. package/engine/engineObject.js +4 -4
  18. package/engine/engineParticles.js +45 -21
  19. package/engine/engineTileLayer.js +2 -2
  20. package/engine/engineUtilities.js +47 -25
  21. package/engine/engineWebGL.js +114 -54
  22. package/engine/index.d.ts +64 -30
  23. package/examples/breakout/game.js +63 -11
  24. package/examples/breakout/gameObjects.js +14 -12
  25. package/examples/breakout/index.html +3 -3
  26. package/examples/empty/game.js +35 -0
  27. package/examples/empty/index.html +9 -0
  28. package/examples/empty/tiles.png +0 -0
  29. package/examples/module/game.js +122 -0
  30. package/examples/module/index.html +9 -0
  31. package/examples/module/tiles.png +0 -0
  32. package/examples/particles/index.html +14 -14
  33. package/examples/particles/tiles.png +0 -0
  34. package/examples/platformer/game.js +1 -1
  35. package/examples/platformer/gameObjects.js +7 -7
  36. package/examples/platformer/gamePlayer.js +7 -5
  37. package/examples/platformer/index.html +6 -6
  38. package/examples/puzzle/index.html +2 -2
  39. package/examples/stress/index.html +2 -2
  40. package/game.js +10 -12
  41. package/index.html +13 -13
  42. package/package.json +36 -32
@@ -15,18 +15,18 @@ button
15
15
  </style>
16
16
  </head><body>
17
17
 
18
- <script src=../../engine/engineDebug.js?111></script>
19
- <script src=../../engine/engineUtilities.js?111></script>
20
- <script src=../../engine/engineSettings.js?111></script>
21
- <script src=../../engine/engineObject.js?111></script>
22
- <script src=../../engine/engineDraw.js?111></script>
23
- <script src=../../engine/engineInput.js?111></script>
24
- <script src=../../engine/engineAudio.js?111></script>
25
- <script src=../../engine/engineTileLayer.js?111></script>
26
- <script src=../../engine/engineParticles.js?111></script>
27
- <script src=../../engine/engineMedals.js?111></script>
28
- <script src=../../engine/engineWebGL.js?111></script>
29
- <script src=../../engine/engine.js?111></script>
18
+ <script src=../../engine/engineDebug.js?118></script>
19
+ <script src=../../engine/engineUtilities.js?118></script>
20
+ <script src=../../engine/engineSettings.js?118></script>
21
+ <script src=../../engine/engineObject.js?118></script>
22
+ <script src=../../engine/engineDraw.js?118></script>
23
+ <script src=../../engine/engineInput.js?118></script>
24
+ <script src=../../engine/engineAudio.js?118></script>
25
+ <script src=../../engine/engineTileLayer.js?118></script>
26
+ <script src=../../engine/engineParticles.js?118></script>
27
+ <script src=../../engine/engineMedals.js?118></script>
28
+ <script src=../../engine/engineWebGL.js?118></script>
29
+ <script src=../../engine/engine.js?118></script>
30
30
  <script>
31
31
 
32
32
  'use strict';
@@ -103,7 +103,7 @@ function gameInit()
103
103
  if (type == 'color')
104
104
  {
105
105
  const color = particleSystem[name];
106
- defaultValue = color.getHex();
106
+ defaultValue = color.toString(0);
107
107
  }
108
108
  else if (type == 'alpha')
109
109
  {
@@ -277,7 +277,7 @@ function updateSetting(setting, save=1)
277
277
  if (type == 'color')
278
278
  {
279
279
  const color = particleSystem[name];
280
- input.value = color.getHex();
280
+ input.value = color.toString(0);
281
281
  }
282
282
  else if (type == 'alpha')
283
283
  {
Binary file
@@ -25,7 +25,7 @@ function gameInit()
25
25
  function gameUpdate()
26
26
  {
27
27
  // respawn player
28
- if (player.deadTimer.get() > 1)
28
+ if (player.deadTimer > 1)
29
29
  {
30
30
  player = new Player(playerStartPos);
31
31
  player.velocity = vec2(0,.1);
@@ -25,7 +25,7 @@ class GameObject extends EngineObject
25
25
  // flash white when damaged
26
26
  if (!this.isDead() && this.damageTimer.isSet())
27
27
  {
28
- const a = .5*percent(this.damageTimer.get(), .15, 0);
28
+ const a = .5*percent(this.damageTimer, .15, 0);
29
29
  this.additiveColor = new Color(a,a,a,0);
30
30
  }
31
31
  else
@@ -72,7 +72,7 @@ class Crate extends GameObject
72
72
  this.health = 5;
73
73
 
74
74
  // make it a solid object for collision
75
- this.setCollision(1, 1);
75
+ this.setCollision();
76
76
  }
77
77
 
78
78
  kill()
@@ -98,7 +98,7 @@ class Enemy extends GameObject
98
98
  this.color = (new Color).setHSLA(rand(), 1, .7);
99
99
  this.health = 5;
100
100
  this.bounceTime = new Timer(rand(1e3));
101
- this.setCollision(1);
101
+ this.setCollision(1,0);
102
102
  }
103
103
 
104
104
  update()
@@ -134,7 +134,7 @@ class Enemy extends GameObject
134
134
  render()
135
135
  {
136
136
  // bounce by changing size
137
- const bounceTime = this.bounceTime.get()*6;
137
+ const bounceTime = this.bounceTime*6;
138
138
  this.drawSize = vec2(1-.1*Math.sin(bounceTime), 1+.1*Math.sin(bounceTime));
139
139
 
140
140
  // make bottom flush
@@ -157,7 +157,7 @@ class Grenade extends GameObject
157
157
  this.friction = .9;
158
158
  this.angleDamping = .96;
159
159
  this.renderOrder = 1e8;
160
- this.setCollision(1);
160
+ this.setCollision(1,0);
161
161
  }
162
162
 
163
163
  update()
@@ -206,7 +206,7 @@ class Weapon extends EngineObject
206
206
  this.renderOrder = parent.renderOrder + 1;
207
207
  this.fireTimeBuffer = this.localAngle = 0;
208
208
  this.recoilTimer = new Timer;
209
- parent.addChild(parent.weapon = this, vec2(.6,0));
209
+ parent.addChild(this, vec2(.6,0));
210
210
 
211
211
  // shell effect
212
212
  this.addChild(this.shellEmitter = new ParticleEmitter(
@@ -271,7 +271,7 @@ class Bullet extends EngineObject
271
271
  this.renderOrder = 100;
272
272
  this.drawSize = vec2(.2,.5);
273
273
  this.range = 20;
274
- this.setCollision(1);
274
+ this.setCollision(1,0);
275
275
  }
276
276
 
277
277
  update()
@@ -15,7 +15,8 @@ class Character extends GameObject
15
15
  {
16
16
  super(pos, vec2(.6,.95), 32);
17
17
 
18
- new Weapon(this.lastPos = this.pos, this);
18
+ this.weapon = new Weapon(pos, this);
19
+ this.lastPos = pos;
19
20
  this.groundTimer = new Timer;
20
21
  this.jumpTimer = new Timer;
21
22
  this.pressedJumpTimer = new Timer;
@@ -29,7 +30,7 @@ class Character extends GameObject
29
30
  this.walkCyclePercent = 0;
30
31
  this.health = 1;
31
32
  this.moveInput = 0;
32
- this.setCollision(1);
33
+ this.setCollision(1,0);
33
34
  }
34
35
 
35
36
  update()
@@ -103,8 +104,8 @@ class Character extends GameObject
103
104
  else if (moveInput.y)
104
105
  this.climbingLadder = 1;
105
106
 
106
- // update weapon trigger
107
- this.weapon.triggerIsDown = this.holdingShoot && !this.dodgeTimer.active();
107
+ if (this.weapon) // update weapon trigger
108
+ this.weapon.triggerIsDown = this.holdingShoot && !this.dodgeTimer.active();
108
109
 
109
110
  // update ladder
110
111
  if (this.climbingLadder)
@@ -246,7 +247,8 @@ class Character extends GameObject
246
247
  sound_die.play(this.pos);
247
248
 
248
249
  this.health = 0;
249
- this.weapon.destroy();
250
+ if (this.weapon)
251
+ this.weapon.destroy();
250
252
  this.deadTimer.set();
251
253
  this.size = this.size.scale(.5);
252
254
  const fallDirection = damagingObject ? sign(damagingObject.velocity.x) : randSign();
@@ -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?111></script>
9
- <script src=gameObjects.js?111></script>
10
- <script src=gamePlayer.js?111></script>
11
- <script src=gameEffects.js?111></script>
12
- <script src=gameLevel.js?111></script>
13
- <script src=game.js?103></script>
8
+ <script src=../../engine/engine.all.js?118></script>
9
+ <script src=gameObjects.js?118></script>
10
+ <script src=gamePlayer.js?118></script>
11
+ <script src=gameEffects.js?118></script>
12
+ <script src=gameLevel.js?118></script>
13
+ <script src=game.js?118></script>
@@ -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?111></script>
9
- <script src=game.js?111></script>
8
+ <script src=../../engine/engine.all.js?118></script>
9
+ <script src=game.js?118></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?111></script>
8
+ <script src=../../engine/engine.all.min.js?118></script>
9
9
  <script>
10
10
 
11
11
  /*
@@ -31,7 +31,7 @@ class TestObject extends EngineObject
31
31
  super(pos, vec2(1), 0, vec2(16), 0, spriteColor);
32
32
 
33
33
  this.additiveColor = spriteAdditiveColor;
34
- this.setCollision(1, 1);
34
+ this.setCollision();
35
35
  }
36
36
  }
37
37
 
package/game.js CHANGED
@@ -4,19 +4,16 @@
4
4
 
5
5
  'use strict';
6
6
 
7
- // popup errors if there are any (help diagnose issues on mobile devices)
8
- //onerror = (...parameters)=> alert(parameters);
9
-
10
- // game variables
11
- let particleEmiter;
12
-
13
7
  // sound effects
14
8
  const sound_click = new Sound([.5,.5]);
15
9
 
16
10
  // medals
17
- const medal_example = new Medal(0, 'Example Medal', 'Medal description goes here.');
11
+ const medal_example = new Medal(0, 'Example Medal', 'Welcome to LittleJS!');
18
12
  medalsInit('Hello World');
19
13
 
14
+ // game variables
15
+ let particleEmiter;
16
+
20
17
  ///////////////////////////////////////////////////////////////////////////////
21
18
  function gameInit()
22
19
  {
@@ -56,13 +53,14 @@ function gameInit()
56
53
  // create particle emitter
57
54
  const center = tileCollisionSize.scale(.5).add(vec2(0,9));
58
55
  particleEmiter = new ParticleEmitter(
59
- center, 0, 1, 0, 500, PI, // pos, angle, emitSize, emitTime, emitRate, emiteCone
56
+ center, 0, // emitPos, emitAngle
57
+ 1, 0, 500, PI, // emitSize, emitTime, emitRate, emiteCone
60
58
  0, vec2(16), // tileIndex, tileSize
61
59
  new Color(1,1,1), new Color(0,0,0), // colorStartA, colorStartB
62
60
  new Color(1,1,1,0), new Color(0,0,0,0), // colorEndA, colorEndB
63
- 2, .2, .2, .1, .05, // particleTime, sizeStart, sizeEnd, particleSpeed, particleAngleSpeed
64
- .99, 1, 1, PI, .05, // damping, angleDamping, gravityScale, particleCone, fadeRate,
65
- .5, 1, 1 // randomness, collide, additive, randomColorLinear, renderOrder
61
+ 2, .2, .2, .1, .05, // time, sizeStart, sizeEnd, speed, angleSpeed
62
+ .99, 1, 1, PI, // damping, angleDamping, gravityScale, cone
63
+ .05, .5, 1, 1 // fadeRate, randomness, collide, additive
66
64
  );
67
65
  particleEmiter.elasticity = .3; // bounce when it collides
68
66
  particleEmiter.trailScale = 2; // stretch in direction of motion
@@ -108,7 +106,7 @@ function gameRender()
108
106
  function gameRenderPost()
109
107
  {
110
108
  // draw to overlay canvas for hud rendering
111
- drawTextScreen('Hello World', vec2(overlayCanvas.width/2, 80), 80, new Color, 9);
109
+ drawTextScreen('Hello World', vec2(mainCanvasSize.x/2, 80), 80);
112
110
  }
113
111
 
114
112
  ///////////////////////////////////////////////////////////////////////////////
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?111></script>
10
- <script src=engine/engineUtilities.js?111></script>
11
- <script src=engine/engineSettings.js?111></script>
12
- <script src=engine/engineObject.js?111></script>
13
- <script src=engine/engineDraw.js?111></script>
14
- <script src=engine/engineInput.js?111></script>
15
- <script src=engine/engineAudio.js?111></script>
16
- <script src=engine/engineTileLayer.js?111></script>
17
- <script src=engine/engineParticles.js?111></script>
18
- <script src=engine/engineMedals.js?111></script>
19
- <script src=engine/engineWebGL.js?111></script>
20
- <script src=engine/engine.js?111></script>
9
+ <script src=engine/engineDebug.js?118></script>
10
+ <script src=engine/engineUtilities.js?118></script>
11
+ <script src=engine/engineSettings.js?118></script>
12
+ <script src=engine/engineObject.js?118></script>
13
+ <script src=engine/engineDraw.js?118></script>
14
+ <script src=engine/engineInput.js?118></script>
15
+ <script src=engine/engineAudio.js?118></script>
16
+ <script src=engine/engineTileLayer.js?118></script>
17
+ <script src=engine/engineParticles.js?118></script>
18
+ <script src=engine/engineMedals.js?118></script>
19
+ <script src=engine/engineWebGL.js?118></script>
20
+ <script src=engine/engine.js?118></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?111></script>
26
+ <script src=game.js?118></script>
package/package.json CHANGED
@@ -1,32 +1,36 @@
1
- {
2
- "name": "littlejsengine",
3
- "version": "1.3.8",
4
- "description": "LittleJS - Tiny and Fast HTML5 Game Engine",
5
- "main": "engine/engine.all.js",
6
- "repository": {
7
- "type": "git",
8
- "url": "git+https://github.com/KilledByAPixel/LittleJS.git"
9
- },
10
- "keywords": [
11
- "HTML5",
12
- "JavaScript",
13
- "game",
14
- "engine",
15
- "library",
16
- "JS13K",
17
- "webgl"
18
- ],
19
- "author": "Frank Force",
20
- "license": "MIT",
21
- "bugs": {
22
- "url": "https://github.com/KilledByAPixel/LittleJS/issues"
23
- },
24
- "homepage": "https://github.com/KilledByAPixel/LittleJS",
25
- "dependencies": {
26
- "ect-bin": "^1.4.1",
27
- "google-closure-compiler": "^20220803.0.0",
28
- "roadroller": "^2.1.0",
29
- "typescript": "^4.7.4",
30
- "uglify-js": "^3.16.3"
31
- }
32
- }
1
+ {
2
+ "name": "littlejsengine",
3
+ "version": "1.4.5",
4
+ "description": "LittleJS - Tiny and Fast HTML5 Game Engine",
5
+ "main": "engine/engine.all.module.js",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/KilledByAPixel/LittleJS.git"
9
+ },
10
+ "keywords": [
11
+ "HTML5",
12
+ "JavaScript",
13
+ "game",
14
+ "engine",
15
+ "library",
16
+ "JS13K",
17
+ "webgl"
18
+ ],
19
+ "author": "Frank Force",
20
+ "license": "MIT",
21
+ "bugs": {
22
+ "url": "https://github.com/KilledByAPixel/LittleJS/issues"
23
+ },
24
+ "homepage": "https://github.com/KilledByAPixel/LittleJS",
25
+ "scripts": {
26
+ "build:esm": "node --experimental-modules engine/engineBuildModule.mjs",
27
+ "build": "build.bat && npm run build:esm && npm run check-filesize"
28
+ },
29
+ "dependencies": {
30
+ "ect-bin": "^1.4.1",
31
+ "google-closure-compiler": "^20221102.0.1",
32
+ "roadroller": "^2.1.0",
33
+ "typescript": "^4.9.4",
34
+ "uglify-js": "^3.17.4"
35
+ }
36
+ }