littlejsengine 1.5.0 → 1.5.1
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.
- package/engine/engine.all.js +179 -97
- package/engine/engine.all.min.js +1 -1
- package/engine/engine.all.module.js +362 -173
- package/engine/engine.all.module.min.js +1 -1
- package/engine/engine.all.release.js +173 -96
- package/engine/engine.js +47 -16
- package/engine/engineAudio.js +1 -1
- package/engine/engineDebug.js +6 -1
- package/engine/engineDraw.js +24 -26
- package/engine/engineExport.js +183 -76
- package/engine/engineInput.js +6 -1
- package/engine/engineMedals.js +1 -0
- package/engine/engineObject.js +6 -6
- package/engine/engineParticles.js +5 -5
- package/engine/engineSettings.js +46 -20
- package/engine/engineTileLayer.js +13 -12
- package/engine/engineUtilities.js +13 -7
- package/engine/engineWebGL.js +11 -2
- package/engine/index.d.ts +1788 -1615
- package/examples/breakout/game.js +3 -1
- package/examples/breakout/index.html +3 -3
- package/examples/module/index.html +1 -1
- package/examples/particles/index.html +1 -1
- package/examples/platformer/game.js +2 -0
- package/examples/platformer/gameObjects.js +3 -3
- package/examples/platformer/index.html +6 -6
- package/examples/puzzle/index.html +2 -2
- package/examples/stress/index.html +4 -4
- package/examples/typescript/game.js +89 -89
- package/examples/typescript/index.html +1 -1
- package/index.html +13 -13
- package/package.json +6 -6
|
@@ -113,7 +113,9 @@ function initPostProcess()
|
|
|
113
113
|
float dx = 2.*p.x - 1., dy = 2.*p.y - 1.;
|
|
114
114
|
c *= 1.-pow((dx*dx + dy*dy)/vignette, 6.);
|
|
115
115
|
}`;
|
|
116
|
-
|
|
116
|
+
|
|
117
|
+
const includeOverlay = true;
|
|
118
|
+
glInitPostProcess(televisionShader, includeOverlay);
|
|
117
119
|
}
|
|
118
120
|
|
|
119
121
|
///////////////////////////////////////////////////////////////////////////////
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
<link rel=icon type=image/png href=../../favicon.png>
|
|
6
6
|
</head><body>
|
|
7
7
|
|
|
8
|
-
<script src=../../engine/engine.all.js?
|
|
9
|
-
<script src=gameObjects.js?
|
|
10
|
-
<script src=game.js?
|
|
8
|
+
<script src=../../engine/engine.all.js?125></script>
|
|
9
|
+
<script src=gameObjects.js?125></script>
|
|
10
|
+
<script src=game.js?125></script>
|
|
@@ -64,9 +64,9 @@ class GameObject extends EngineObject
|
|
|
64
64
|
|
|
65
65
|
class Crate extends GameObject
|
|
66
66
|
{
|
|
67
|
-
constructor(pos
|
|
67
|
+
constructor(pos)
|
|
68
68
|
{
|
|
69
|
-
super(pos,
|
|
69
|
+
super(pos, vec2(1), 2, vec2(16), (randInt(4))*PI/2);
|
|
70
70
|
|
|
71
71
|
this.color = (new Color).setHSLA(rand(),1,.8);
|
|
72
72
|
this.health = 5;
|
|
@@ -90,7 +90,7 @@ class Crate extends GameObject
|
|
|
90
90
|
|
|
91
91
|
class Enemy extends GameObject
|
|
92
92
|
{
|
|
93
|
-
constructor(pos
|
|
93
|
+
constructor(pos)
|
|
94
94
|
{
|
|
95
95
|
super(pos, vec2(.9,.9), 8, vec2(16));
|
|
96
96
|
|
|
@@ -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?
|
|
9
|
-
<script src=gameObjects.js?
|
|
10
|
-
<script src=gamePlayer.js?
|
|
11
|
-
<script src=gameEffects.js?
|
|
12
|
-
<script src=gameLevel.js?
|
|
13
|
-
<script src=game.js?
|
|
8
|
+
<script src=../../engine/engine.all.js?125></script>
|
|
9
|
+
<script src=gameObjects.js?125></script>
|
|
10
|
+
<script src=gamePlayer.js?125></script>
|
|
11
|
+
<script src=gameEffects.js?125></script>
|
|
12
|
+
<script src=gameLevel.js?125></script>
|
|
13
|
+
<script src=game.js?125></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?
|
|
8
|
+
<script src=../../engine/engine.all.min.js?125></script>
|
|
9
9
|
<script>
|
|
10
10
|
|
|
11
11
|
/*
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
'use strict';
|
|
21
21
|
|
|
22
22
|
// keep our own list of simple sprites and track fps
|
|
23
|
-
let sprites, timeMS, showFPS, statsDisplay, spriteColor, spriteAdditiveColor
|
|
23
|
+
let sprites, timeMS, showFPS, statsDisplay, spriteColor, spriteAdditiveColor;
|
|
24
24
|
|
|
25
25
|
///////////////////////////////////////////////////////////////////////////////
|
|
26
26
|
|
|
@@ -60,8 +60,8 @@ function gameInit()
|
|
|
60
60
|
///////////////////////////////////////////////////////////////////////////////
|
|
61
61
|
function gameUpdate()
|
|
62
62
|
{
|
|
63
|
-
if (!
|
|
64
|
-
|
|
63
|
+
if (!music.isPlaying() && mouseWasPressed(0))
|
|
64
|
+
music.play();
|
|
65
65
|
|
|
66
66
|
// mouse click = change color
|
|
67
67
|
if (mouseWasPressed(0) || mouseIsDown(2))
|
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
/*
|
|
2
|
-
LittleJS Hello World Starter Game
|
|
3
|
-
*/
|
|
4
|
-
'use strict';
|
|
5
|
-
// import module
|
|
6
|
-
import * as LittleJS from '../../engine/engine.all.module.js';
|
|
7
|
-
const { Vector2, Color, Timer, vec2 } = LittleJS;
|
|
8
|
-
// sound effects
|
|
9
|
-
const sound_click = new LittleJS.Sound([1, .5]);
|
|
10
|
-
// medals
|
|
11
|
-
const medal_example = new LittleJS.Medal(0, 'Example Medal', 'Welcome to LittleJS!');
|
|
12
|
-
LittleJS.medalsInit('Hello World');
|
|
13
|
-
// game variables
|
|
14
|
-
let particleEmiter;
|
|
15
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
16
|
-
function gameInit() {
|
|
17
|
-
// create tile collision and visible tile layer
|
|
18
|
-
LittleJS.initTileCollision(vec2(32, 16));
|
|
19
|
-
const pos = vec2();
|
|
20
|
-
const tileLayer = new LittleJS.TileLayer(pos, LittleJS.tileCollisionSize);
|
|
21
|
-
// get level data from the tiles image
|
|
22
|
-
const imageLevelDataRow = 1;
|
|
23
|
-
const mainContext = LittleJS.mainContext;
|
|
24
|
-
mainContext.drawImage(LittleJS.tileImage, 0, 0);
|
|
25
|
-
for (pos.x = LittleJS.tileCollisionSize.x; pos.x--;)
|
|
26
|
-
for (pos.y = LittleJS.tileCollisionSize.y; pos.y--;) {
|
|
27
|
-
const imageData = mainContext.getImageData(pos.x, 16 * (imageLevelDataRow + 1) - pos.y - 1, 1, 1).data;
|
|
28
|
-
if (imageData[0]) {
|
|
29
|
-
const tileIndex = 1;
|
|
30
|
-
const direction = LittleJS.randInt(4);
|
|
31
|
-
const mirror = LittleJS.randInt(2) ? true : false;
|
|
32
|
-
const color = LittleJS.randColor();
|
|
33
|
-
const data = new LittleJS.TileLayerData(tileIndex, direction, mirror, color);
|
|
34
|
-
tileLayer.setData(pos, data);
|
|
35
|
-
LittleJS.setTileCollisionData(pos, 1);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
tileLayer.redraw();
|
|
39
|
-
// move camera to center of collision
|
|
40
|
-
LittleJS.setCameraPos(LittleJS.tileCollisionSize.scale(.5));
|
|
41
|
-
// enable gravity
|
|
42
|
-
LittleJS.setGravity(-.01);
|
|
43
|
-
// create particle emitter
|
|
44
|
-
const center = LittleJS.tileCollisionSize.scale(.5).add(vec2(0, 9));
|
|
45
|
-
particleEmiter = new LittleJS.ParticleEmitter(center, 0, // emitPos, emitAngle
|
|
46
|
-
1, 0, 500, Math.PI, // emitSize, emitTime, emitRate, emiteCone
|
|
47
|
-
0, vec2(16), // tileIndex, tileSize
|
|
48
|
-
new Color(1, 1, 1), new Color(0, 0, 0), // colorStartA, colorStartB
|
|
49
|
-
new Color(1, 1, 1, 0), new Color(0, 0, 0, 0), // colorEndA, colorEndB
|
|
50
|
-
2, .2, .2, .1, .05, // time, sizeStart, sizeEnd, speed, angleSpeed
|
|
51
|
-
.99, 1, 1, Math.PI, // damping, angleDamping, gravityScale, cone
|
|
52
|
-
.05, .5, true, true // fadeRate, randomness, collide, additive
|
|
53
|
-
);
|
|
54
|
-
particleEmiter.elasticity = .3; // bounce when it collides
|
|
55
|
-
particleEmiter.trailScale = 2; // stretch in direction of motion
|
|
56
|
-
}
|
|
57
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
58
|
-
function gameUpdate() {
|
|
59
|
-
if (LittleJS.mouseWasPressed(0)) {
|
|
60
|
-
// play sound when mouse is pressed
|
|
61
|
-
sound_click.play(LittleJS.mousePos);
|
|
62
|
-
// change particle color and set to fade out
|
|
63
|
-
particleEmiter.colorStartA = new Color;
|
|
64
|
-
particleEmiter.colorStartB = LittleJS.randColor();
|
|
65
|
-
particleEmiter.colorEndA = particleEmiter.colorStartA.scale(1, 0);
|
|
66
|
-
particleEmiter.colorEndB = particleEmiter.colorStartB.scale(1, 0);
|
|
67
|
-
// unlock medals
|
|
68
|
-
medal_example.unlock();
|
|
69
|
-
}
|
|
70
|
-
// move particles to mouse location if on screen
|
|
71
|
-
if (LittleJS.mousePosScreen.x)
|
|
72
|
-
particleEmiter.pos = LittleJS.mousePos;
|
|
73
|
-
}
|
|
74
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
75
|
-
function gameUpdatePost() {
|
|
76
|
-
}
|
|
77
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
78
|
-
function gameRender() {
|
|
79
|
-
// draw a grey square in the background without using webgl
|
|
80
|
-
LittleJS.drawRect(LittleJS.cameraPos, LittleJS.tileCollisionSize.add(vec2(5)), new Color(.2, .2, .2), 0, false);
|
|
81
|
-
}
|
|
82
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
83
|
-
function gameRenderPost() {
|
|
84
|
-
// draw to overlay canvas for hud rendering
|
|
85
|
-
LittleJS.drawTextScreen('LittleJS with TypeScript', vec2(LittleJS.mainCanvasSize.x / 2, 80), 80);
|
|
86
|
-
}
|
|
87
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
88
|
-
// Startup LittleJS Engine
|
|
89
|
-
LittleJS.engineInit(gameInit, gameUpdate, gameUpdatePost, gameRender, gameRenderPost, 'tiles.png');
|
|
1
|
+
/*
|
|
2
|
+
LittleJS Hello World Starter Game
|
|
3
|
+
*/
|
|
4
|
+
'use strict';
|
|
5
|
+
// import module
|
|
6
|
+
import * as LittleJS from '../../engine/engine.all.module.js';
|
|
7
|
+
const { Vector2, Color, Timer, vec2 } = LittleJS;
|
|
8
|
+
// sound effects
|
|
9
|
+
const sound_click = new LittleJS.Sound([1, .5]);
|
|
10
|
+
// medals
|
|
11
|
+
const medal_example = new LittleJS.Medal(0, 'Example Medal', 'Welcome to LittleJS!');
|
|
12
|
+
LittleJS.medalsInit('Hello World');
|
|
13
|
+
// game variables
|
|
14
|
+
let particleEmiter;
|
|
15
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
16
|
+
function gameInit() {
|
|
17
|
+
// create tile collision and visible tile layer
|
|
18
|
+
LittleJS.initTileCollision(vec2(32, 16));
|
|
19
|
+
const pos = vec2();
|
|
20
|
+
const tileLayer = new LittleJS.TileLayer(pos, LittleJS.tileCollisionSize);
|
|
21
|
+
// get level data from the tiles image
|
|
22
|
+
const imageLevelDataRow = 1;
|
|
23
|
+
const mainContext = LittleJS.mainContext;
|
|
24
|
+
mainContext.drawImage(LittleJS.tileImage, 0, 0);
|
|
25
|
+
for (pos.x = LittleJS.tileCollisionSize.x; pos.x--;)
|
|
26
|
+
for (pos.y = LittleJS.tileCollisionSize.y; pos.y--;) {
|
|
27
|
+
const imageData = mainContext.getImageData(pos.x, 16 * (imageLevelDataRow + 1) - pos.y - 1, 1, 1).data;
|
|
28
|
+
if (imageData[0]) {
|
|
29
|
+
const tileIndex = 1;
|
|
30
|
+
const direction = LittleJS.randInt(4);
|
|
31
|
+
const mirror = LittleJS.randInt(2) ? true : false;
|
|
32
|
+
const color = LittleJS.randColor();
|
|
33
|
+
const data = new LittleJS.TileLayerData(tileIndex, direction, mirror, color);
|
|
34
|
+
tileLayer.setData(pos, data);
|
|
35
|
+
LittleJS.setTileCollisionData(pos, 1);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
tileLayer.redraw();
|
|
39
|
+
// move camera to center of collision
|
|
40
|
+
LittleJS.setCameraPos(LittleJS.tileCollisionSize.scale(.5));
|
|
41
|
+
// enable gravity
|
|
42
|
+
LittleJS.setGravity(-.01);
|
|
43
|
+
// create particle emitter
|
|
44
|
+
const center = LittleJS.tileCollisionSize.scale(.5).add(vec2(0, 9));
|
|
45
|
+
particleEmiter = new LittleJS.ParticleEmitter(center, 0, // emitPos, emitAngle
|
|
46
|
+
1, 0, 500, Math.PI, // emitSize, emitTime, emitRate, emiteCone
|
|
47
|
+
0, vec2(16), // tileIndex, tileSize
|
|
48
|
+
new Color(1, 1, 1), new Color(0, 0, 0), // colorStartA, colorStartB
|
|
49
|
+
new Color(1, 1, 1, 0), new Color(0, 0, 0, 0), // colorEndA, colorEndB
|
|
50
|
+
2, .2, .2, .1, .05, // time, sizeStart, sizeEnd, speed, angleSpeed
|
|
51
|
+
.99, 1, 1, Math.PI, // damping, angleDamping, gravityScale, cone
|
|
52
|
+
.05, .5, true, true // fadeRate, randomness, collide, additive
|
|
53
|
+
);
|
|
54
|
+
particleEmiter.elasticity = .3; // bounce when it collides
|
|
55
|
+
particleEmiter.trailScale = 2; // stretch in direction of motion
|
|
56
|
+
}
|
|
57
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
58
|
+
function gameUpdate() {
|
|
59
|
+
if (LittleJS.mouseWasPressed(0)) {
|
|
60
|
+
// play sound when mouse is pressed
|
|
61
|
+
sound_click.play(LittleJS.mousePos);
|
|
62
|
+
// change particle color and set to fade out
|
|
63
|
+
particleEmiter.colorStartA = new Color;
|
|
64
|
+
particleEmiter.colorStartB = LittleJS.randColor();
|
|
65
|
+
particleEmiter.colorEndA = particleEmiter.colorStartA.scale(1, 0);
|
|
66
|
+
particleEmiter.colorEndB = particleEmiter.colorStartB.scale(1, 0);
|
|
67
|
+
// unlock medals
|
|
68
|
+
medal_example.unlock();
|
|
69
|
+
}
|
|
70
|
+
// move particles to mouse location if on screen
|
|
71
|
+
if (LittleJS.mousePosScreen.x)
|
|
72
|
+
particleEmiter.pos = LittleJS.mousePos;
|
|
73
|
+
}
|
|
74
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
75
|
+
function gameUpdatePost() {
|
|
76
|
+
}
|
|
77
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
78
|
+
function gameRender() {
|
|
79
|
+
// draw a grey square in the background without using webgl
|
|
80
|
+
LittleJS.drawRect(LittleJS.cameraPos, LittleJS.tileCollisionSize.add(vec2(5)), new Color(.2, .2, .2), 0, false);
|
|
81
|
+
}
|
|
82
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
83
|
+
function gameRenderPost() {
|
|
84
|
+
// draw to overlay canvas for hud rendering
|
|
85
|
+
LittleJS.drawTextScreen('LittleJS with TypeScript', vec2(LittleJS.mainCanvasSize.x / 2, 80), 80);
|
|
86
|
+
}
|
|
87
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
88
|
+
// Startup LittleJS Engine
|
|
89
|
+
LittleJS.engineInit(gameInit, gameUpdate, gameUpdatePost, gameRender, gameRenderPost, 'tiles.png');
|
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?
|
|
10
|
-
<script src=engine/engineUtilities.js?
|
|
11
|
-
<script src=engine/engineSettings.js?
|
|
12
|
-
<script src=engine/engineObject.js?
|
|
13
|
-
<script src=engine/engineDraw.js?
|
|
14
|
-
<script src=engine/engineInput.js?
|
|
15
|
-
<script src=engine/engineAudio.js?
|
|
16
|
-
<script src=engine/engineTileLayer.js?
|
|
17
|
-
<script src=engine/engineParticles.js?
|
|
18
|
-
<script src=engine/engineMedals.js?
|
|
19
|
-
<script src=engine/engineWebGL.js?
|
|
20
|
-
<script src=engine/engine.js?
|
|
9
|
+
<script src=engine/engineDebug.js?125></script>
|
|
10
|
+
<script src=engine/engineUtilities.js?125></script>
|
|
11
|
+
<script src=engine/engineSettings.js?125></script>
|
|
12
|
+
<script src=engine/engineObject.js?125></script>
|
|
13
|
+
<script src=engine/engineDraw.js?125></script>
|
|
14
|
+
<script src=engine/engineInput.js?125></script>
|
|
15
|
+
<script src=engine/engineAudio.js?125></script>
|
|
16
|
+
<script src=engine/engineTileLayer.js?125></script>
|
|
17
|
+
<script src=engine/engineParticles.js?125></script>
|
|
18
|
+
<script src=engine/engineMedals.js?125></script>
|
|
19
|
+
<script src=engine/engineWebGL.js?125></script>
|
|
20
|
+
<script src=engine/engine.js?125></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?
|
|
26
|
+
<script src=game.js?125></script>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "littlejsengine",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "LittleJS - Tiny and Fast HTML5 Game Engine",
|
|
5
5
|
"main": "engine/engine.all.module.js",
|
|
6
6
|
"repository": {
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
"build": "build.bat"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"ect-bin": "
|
|
30
|
-
"google-closure-compiler": "
|
|
31
|
-
"roadroller": "
|
|
32
|
-
"typescript": "
|
|
33
|
-
"uglify-js": "
|
|
29
|
+
"ect-bin": "~1.4.1",
|
|
30
|
+
"google-closure-compiler": "~20230502.0.0",
|
|
31
|
+
"roadroller": "~2.1.0",
|
|
32
|
+
"typescript": "~5.1.6",
|
|
33
|
+
"uglify-js": "~3.17.4"
|
|
34
34
|
}
|
|
35
35
|
}
|