@vpmedia/phaser 1.0.1 → 1.0.2
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/dist/phaser.cjs.LICENSE.txt +1 -1
- package/dist/phaser.js.LICENSE.txt +1 -1
- package/package.json +2 -3
- package/src/index.js +99 -0
- package/src/phaser/core/animation.js +355 -0
- package/src/phaser/core/animation_manager.js +238 -0
- package/src/phaser/core/animation_parser.js +130 -0
- package/src/phaser/core/array_set.js +108 -0
- package/src/phaser/core/cache.js +558 -0
- package/src/phaser/core/const.js +106 -0
- package/src/phaser/core/device.js +67 -0
- package/src/phaser/core/device_util.js +386 -0
- package/src/phaser/core/dom.js +207 -0
- package/src/phaser/core/event_manager.js +243 -0
- package/src/phaser/core/factory.js +74 -0
- package/src/phaser/core/frame.js +75 -0
- package/src/phaser/core/frame_data.js +84 -0
- package/src/phaser/core/frame_util.js +31 -0
- package/src/phaser/core/game.js +412 -0
- package/src/phaser/core/input.js +401 -0
- package/src/phaser/core/input_button.js +102 -0
- package/src/phaser/core/input_handler.js +687 -0
- package/src/phaser/core/input_mouse.js +289 -0
- package/src/phaser/core/input_mspointer.js +197 -0
- package/src/phaser/core/input_pointer.js +427 -0
- package/src/phaser/core/input_touch.js +157 -0
- package/src/phaser/core/loader.js +946 -0
- package/src/phaser/core/loader_parser.js +105 -0
- package/src/phaser/core/raf.js +46 -0
- package/src/phaser/core/raf_fb.js +75 -0
- package/src/phaser/core/raf_to.js +34 -0
- package/src/phaser/core/scale_manager.js +806 -0
- package/src/phaser/core/scene.js +66 -0
- package/src/phaser/core/scene_manager.js +310 -0
- package/src/phaser/core/signal.js +175 -0
- package/src/phaser/core/signal_binding.js +69 -0
- package/src/phaser/core/sound.js +538 -0
- package/src/phaser/core/sound_manager.js +365 -0
- package/src/phaser/core/stage.js +108 -0
- package/src/phaser/core/time.js +203 -0
- package/src/phaser/core/timer.js +276 -0
- package/src/phaser/core/timer_event.js +21 -0
- package/src/phaser/core/tween.js +329 -0
- package/src/phaser/core/tween_data.js +258 -0
- package/src/phaser/core/tween_easing.js +316 -0
- package/src/phaser/core/tween_manager.js +185 -0
- package/src/phaser/core/world.js +18 -0
- package/src/phaser/display/bitmap_text.js +322 -0
- package/src/phaser/display/button.js +194 -0
- package/src/phaser/display/canvas/buffer.js +36 -0
- package/src/phaser/display/canvas/graphics.js +227 -0
- package/src/phaser/display/canvas/masker.js +39 -0
- package/src/phaser/display/canvas/pool.js +121 -0
- package/src/phaser/display/canvas/renderer.js +123 -0
- package/src/phaser/display/canvas/tinter.js +141 -0
- package/src/phaser/display/canvas/util.js +151 -0
- package/src/phaser/display/display_object.js +597 -0
- package/src/phaser/display/graphics.js +723 -0
- package/src/phaser/display/graphics_data.js +27 -0
- package/src/phaser/display/graphics_data_util.js +14 -0
- package/src/phaser/display/group.js +227 -0
- package/src/phaser/display/image.js +288 -0
- package/src/phaser/display/sprite_batch.js +15 -0
- package/src/phaser/display/sprite_util.js +248 -0
- package/src/phaser/display/text.js +1089 -0
- package/src/phaser/display/webgl/abstract_filter.js +25 -0
- package/src/phaser/display/webgl/base_texture.js +68 -0
- package/src/phaser/display/webgl/blend_manager.js +35 -0
- package/src/phaser/display/webgl/earcut.js +647 -0
- package/src/phaser/display/webgl/earcut_node.js +28 -0
- package/src/phaser/display/webgl/fast_sprite_batch.js +242 -0
- package/src/phaser/display/webgl/filter_manager.js +46 -0
- package/src/phaser/display/webgl/filter_texture.js +61 -0
- package/src/phaser/display/webgl/graphics.js +618 -0
- package/src/phaser/display/webgl/graphics_data.js +42 -0
- package/src/phaser/display/webgl/mask_manager.js +36 -0
- package/src/phaser/display/webgl/render_texture.js +81 -0
- package/src/phaser/display/webgl/renderer.js +234 -0
- package/src/phaser/display/webgl/shader/complex.js +74 -0
- package/src/phaser/display/webgl/shader/fast.js +97 -0
- package/src/phaser/display/webgl/shader/normal.js +225 -0
- package/src/phaser/display/webgl/shader/primitive.js +72 -0
- package/src/phaser/display/webgl/shader/strip.js +77 -0
- package/src/phaser/display/webgl/shader_manager.js +89 -0
- package/src/phaser/display/webgl/sprite_batch.js +320 -0
- package/src/phaser/display/webgl/stencil_manager.js +170 -0
- package/src/phaser/display/webgl/texture.js +117 -0
- package/src/phaser/display/webgl/texture_util.js +32 -0
- package/src/phaser/display/webgl/util.js +74 -0
- package/src/phaser/geom/circle.js +186 -0
- package/src/phaser/geom/ellipse.js +65 -0
- package/src/phaser/geom/line.js +190 -0
- package/src/phaser/geom/matrix.js +147 -0
- package/src/phaser/geom/point.js +164 -0
- package/src/phaser/geom/polygon.js +141 -0
- package/src/phaser/geom/rectangle.js +306 -0
- package/src/phaser/geom/rounded_rectangle.js +36 -0
- package/src/phaser/geom/util/circle.js +115 -0
- package/src/phaser/geom/util/ellipse.js +30 -0
- package/src/phaser/geom/util/line.js +130 -0
- package/src/phaser/geom/util/matrix.js +48 -0
- package/src/phaser/geom/util/point.js +276 -0
- package/src/phaser/geom/util/polygon.js +24 -0
- package/src/phaser/geom/util/rectangle.js +212 -0
- package/src/phaser/geom/util/rounded_rectangle.js +28 -0
- package/src/phaser/util/math.js +279 -0
- package/src/phaser/util/string.js +26 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Andras Csizmadia <andras@vpmedia.hu>
|
|
3
|
+
* @author Richard Davey <rich@photonstorm.com>
|
|
4
|
+
* @copyright Copyright (c) 2018-present Richard Davey, Photon Storm Ltd., Andras Csizmadia <andras@vpmedia.hu> (www.vpmedia.hu)
|
|
5
|
+
*/
|
|
6
|
+
import Texture from '../display/webgl/texture';
|
|
7
|
+
import Rectangle from '../geom/rectangle';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* @param baseTexture
|
|
12
|
+
* @param bitmapFontData
|
|
13
|
+
*/
|
|
14
|
+
export function finalizeBitmapFont(baseTexture, bitmapFontData) {
|
|
15
|
+
Object.keys(bitmapFontData.chars).forEach((charCode) => {
|
|
16
|
+
const letter = bitmapFontData.chars[charCode];
|
|
17
|
+
letter.texture = new Texture(baseTexture, new Rectangle(letter.x, letter.y, letter.width, letter.height));
|
|
18
|
+
});
|
|
19
|
+
return bitmapFontData;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* @param xml
|
|
25
|
+
* @param baseTexture
|
|
26
|
+
* @param xSpacing
|
|
27
|
+
* @param ySpacing
|
|
28
|
+
*/
|
|
29
|
+
export function xmlBitmapFont(xml, baseTexture, xSpacing, ySpacing) {
|
|
30
|
+
const data = {};
|
|
31
|
+
const info = xml.getElementsByTagName('info')[0];
|
|
32
|
+
const common = xml.getElementsByTagName('common')[0];
|
|
33
|
+
data.font = info.getAttribute('face');
|
|
34
|
+
data.size = parseInt(info.getAttribute('size'), 10);
|
|
35
|
+
data.lineHeight = parseInt(common.getAttribute('lineHeight'), 10) + ySpacing;
|
|
36
|
+
data.chars = {};
|
|
37
|
+
const letters = xml.getElementsByTagName('char');
|
|
38
|
+
for (let i = 0; i < letters.length; i += 1) {
|
|
39
|
+
const charCode = parseInt(letters[i].getAttribute('id'), 10);
|
|
40
|
+
data.chars[charCode] = {
|
|
41
|
+
x: parseInt(letters[i].getAttribute('x'), 10),
|
|
42
|
+
y: parseInt(letters[i].getAttribute('y'), 10),
|
|
43
|
+
width: parseInt(letters[i].getAttribute('width'), 10),
|
|
44
|
+
height: parseInt(letters[i].getAttribute('height'), 10),
|
|
45
|
+
xOffset: parseInt(letters[i].getAttribute('xoffset'), 10),
|
|
46
|
+
yOffset: parseInt(letters[i].getAttribute('yoffset'), 10),
|
|
47
|
+
xAdvance: parseInt(letters[i].getAttribute('xadvance'), 10) + xSpacing,
|
|
48
|
+
kerning: {},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const kernings = xml.getElementsByTagName('kerning');
|
|
52
|
+
for (let i = 0; i < kernings.length; i += 1) {
|
|
53
|
+
const first = parseInt(kernings[i].getAttribute('first'), 10);
|
|
54
|
+
const second = parseInt(kernings[i].getAttribute('second'), 10);
|
|
55
|
+
const amount = parseInt(kernings[i].getAttribute('amount'), 10);
|
|
56
|
+
data.chars[second].kerning[first] = amount;
|
|
57
|
+
}
|
|
58
|
+
return finalizeBitmapFont(baseTexture, data);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
*
|
|
63
|
+
* @param xml
|
|
64
|
+
* @param baseTexture
|
|
65
|
+
* @param xSpacing
|
|
66
|
+
* @param ySpacing
|
|
67
|
+
*/
|
|
68
|
+
export function bitmapFont(xml, baseTexture, xSpacing, ySpacing) {
|
|
69
|
+
return xmlBitmapFont(xml, baseTexture, xSpacing, ySpacing);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
*
|
|
74
|
+
* @param json
|
|
75
|
+
* @param baseTexture
|
|
76
|
+
* @param xSpacing
|
|
77
|
+
* @param ySpacing
|
|
78
|
+
*/
|
|
79
|
+
export function jsonBitmapFont(json, baseTexture, xSpacing, ySpacing) {
|
|
80
|
+
const data = {
|
|
81
|
+
font: json.font.info._face,
|
|
82
|
+
size: parseInt(json.font.info._size, 10),
|
|
83
|
+
lineHeight: parseInt(json.font.common._lineHeight, 10) + ySpacing,
|
|
84
|
+
chars: {},
|
|
85
|
+
};
|
|
86
|
+
json.font.chars.char.forEach((letter) => {
|
|
87
|
+
const charCode = parseInt(letter._id, 10);
|
|
88
|
+
data.chars[charCode] = {
|
|
89
|
+
x: parseInt(letter._x, 10),
|
|
90
|
+
y: parseInt(letter._y, 10),
|
|
91
|
+
width: parseInt(letter._width, 10),
|
|
92
|
+
height: parseInt(letter._height, 10),
|
|
93
|
+
xOffset: parseInt(letter._xoffset, 10),
|
|
94
|
+
yOffset: parseInt(letter._yoffset, 10),
|
|
95
|
+
xAdvance: parseInt(letter._xadvance, 10) + xSpacing,
|
|
96
|
+
kerning: {},
|
|
97
|
+
};
|
|
98
|
+
});
|
|
99
|
+
if (json.font.kernings && json.font.kernings.kerning) {
|
|
100
|
+
json.font.kernings.kerning.forEach((kerning) => {
|
|
101
|
+
data.chars[kerning._second].kerning[kerning._first] = parseInt(kerning._amount, 10);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return finalizeBitmapFont(baseTexture, data);
|
|
105
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Andras Csizmadia <andras@vpmedia.hu>
|
|
3
|
+
* @author Richard Davey <rich@photonstorm.com>
|
|
4
|
+
* @copyright Copyright (c) 2018-present Richard Davey, Photon Storm Ltd., Andras Csizmadia <andras@vpmedia.hu> (www.vpmedia.hu)
|
|
5
|
+
*/
|
|
6
|
+
export default class {
|
|
7
|
+
|
|
8
|
+
constructor(game) {
|
|
9
|
+
this.game = game;
|
|
10
|
+
this.isRunning = false;
|
|
11
|
+
this.timeoutId = null;
|
|
12
|
+
const vendors = [
|
|
13
|
+
'ms',
|
|
14
|
+
'moz',
|
|
15
|
+
'webkit',
|
|
16
|
+
'o',
|
|
17
|
+
];
|
|
18
|
+
for (let x = 0; x < vendors.length && !window.requestAnimationFrame; x += 1) {
|
|
19
|
+
window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
|
|
20
|
+
window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'];
|
|
21
|
+
}
|
|
22
|
+
this.updateBinded = this.update.bind(this);
|
|
23
|
+
// this.updateBinded = time => this.update(time);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
start() {
|
|
27
|
+
this.isRunning = true;
|
|
28
|
+
this.timeoutId = window.requestAnimationFrame(this.updateBinded);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
stop() {
|
|
32
|
+
window.cancelAnimationFrame(this.timeoutId);
|
|
33
|
+
this.isRunning = false;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
update(rafTime) {
|
|
37
|
+
if (!this.isRunning) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// floor the rafTime to make it equivalent to the Date.now() provided by updateSetTimeout (just below)
|
|
41
|
+
// this.game.update(Math.floor(rafTime));
|
|
42
|
+
this.game.update(rafTime);
|
|
43
|
+
this.timeoutId = window.requestAnimationFrame(this.updateBinded);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Andras Csizmadia <andras@vpmedia.hu>
|
|
3
|
+
* @author Richard Davey <rich@photonstorm.com>
|
|
4
|
+
* @copyright Copyright (c) 2018-present Richard Davey, Photon Storm Ltd., Andras Csizmadia <andras@vpmedia.hu> (www.vpmedia.hu)
|
|
5
|
+
*/
|
|
6
|
+
export default class {
|
|
7
|
+
|
|
8
|
+
constructor(game, forceSetTimeOut = false) {
|
|
9
|
+
this.game = game;
|
|
10
|
+
this.forceSetTimeOut = forceSetTimeOut;
|
|
11
|
+
this.isRunning = false;
|
|
12
|
+
this._isSetTimeOut = false;
|
|
13
|
+
this._onLoop = null;
|
|
14
|
+
this._timeOutID = null;
|
|
15
|
+
const vendors = [
|
|
16
|
+
'ms',
|
|
17
|
+
'moz',
|
|
18
|
+
'webkit',
|
|
19
|
+
'o',
|
|
20
|
+
];
|
|
21
|
+
for (let x = 0; x < vendors.length && !window.requestAnimationFrame; x += 1) {
|
|
22
|
+
window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
|
|
23
|
+
window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
start() {
|
|
28
|
+
const scope = this;
|
|
29
|
+
this.isRunning = true;
|
|
30
|
+
if (!window.requestAnimationFrame || this.forceSetTimeOut) {
|
|
31
|
+
this._isSetTimeOut = true;
|
|
32
|
+
this._onLoop = () => scope.updateSetTimeout();
|
|
33
|
+
this._timeOutID = window.setTimeout(this._onLoop, 0);
|
|
34
|
+
} else {
|
|
35
|
+
this._isSetTimeOut = false;
|
|
36
|
+
this._onLoop = time => scope.updateRAF(time);
|
|
37
|
+
this._timeOutID = window.requestAnimationFrame(this._onLoop);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
stop() {
|
|
42
|
+
this.isRunning = false;
|
|
43
|
+
if (this._isSetTimeOut) {
|
|
44
|
+
window.clearTimeout(this._timeOutID);
|
|
45
|
+
} else {
|
|
46
|
+
window.cancelAnimationFrame(this._timeOutID);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
updateRAF(rafTime) {
|
|
51
|
+
if (!this.isRunning) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
// floor the rafTime to make it equivalent to the Date.now() provided by updateSetTimeout (just below)
|
|
55
|
+
this.game.update(Math.floor(rafTime));
|
|
56
|
+
this._timeOutID = window.requestAnimationFrame(this._onLoop);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
updateSetTimeout() {
|
|
60
|
+
if (!this.isRunning) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
this.game.update(Date.now());
|
|
64
|
+
this._timeOutID = window.setTimeout(this._onLoop, this.game.time.timeToCall);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
isSetTimeOut() {
|
|
68
|
+
return this._isSetTimeOut;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
isRAF() {
|
|
72
|
+
return this._isSetTimeOut === false;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Andras Csizmadia <andras@vpmedia.hu>
|
|
3
|
+
* @author Richard Davey <rich@photonstorm.com>
|
|
4
|
+
* @copyright Copyright (c) 2018-present Richard Davey, Photon Storm Ltd., Andras Csizmadia <andras@vpmedia.hu> (www.vpmedia.hu)
|
|
5
|
+
*/
|
|
6
|
+
export default class {
|
|
7
|
+
|
|
8
|
+
constructor(game) {
|
|
9
|
+
this.game = game;
|
|
10
|
+
this.isRunning = false;
|
|
11
|
+
this.isSetTimeOut = true;
|
|
12
|
+
this.timeoutId = null;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
start() {
|
|
16
|
+
this.isRunning = true;
|
|
17
|
+
this.timeoutId = window.setTimeout(this.update, 0);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
stop() {
|
|
21
|
+
window.clearTimeout(this.timeoutId);
|
|
22
|
+
this.isRunning = false;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
update() {
|
|
26
|
+
if (!this.isRunning) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.game.update(Date.now());
|
|
30
|
+
this.timeoutId = window.setTimeout(this.update, this.game.time.timeToCall);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
}
|