@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.
Files changed (107) hide show
  1. package/dist/phaser.cjs.LICENSE.txt +1 -1
  2. package/dist/phaser.js.LICENSE.txt +1 -1
  3. package/package.json +2 -3
  4. package/src/index.js +99 -0
  5. package/src/phaser/core/animation.js +355 -0
  6. package/src/phaser/core/animation_manager.js +238 -0
  7. package/src/phaser/core/animation_parser.js +130 -0
  8. package/src/phaser/core/array_set.js +108 -0
  9. package/src/phaser/core/cache.js +558 -0
  10. package/src/phaser/core/const.js +106 -0
  11. package/src/phaser/core/device.js +67 -0
  12. package/src/phaser/core/device_util.js +386 -0
  13. package/src/phaser/core/dom.js +207 -0
  14. package/src/phaser/core/event_manager.js +243 -0
  15. package/src/phaser/core/factory.js +74 -0
  16. package/src/phaser/core/frame.js +75 -0
  17. package/src/phaser/core/frame_data.js +84 -0
  18. package/src/phaser/core/frame_util.js +31 -0
  19. package/src/phaser/core/game.js +412 -0
  20. package/src/phaser/core/input.js +401 -0
  21. package/src/phaser/core/input_button.js +102 -0
  22. package/src/phaser/core/input_handler.js +687 -0
  23. package/src/phaser/core/input_mouse.js +289 -0
  24. package/src/phaser/core/input_mspointer.js +197 -0
  25. package/src/phaser/core/input_pointer.js +427 -0
  26. package/src/phaser/core/input_touch.js +157 -0
  27. package/src/phaser/core/loader.js +946 -0
  28. package/src/phaser/core/loader_parser.js +105 -0
  29. package/src/phaser/core/raf.js +46 -0
  30. package/src/phaser/core/raf_fb.js +75 -0
  31. package/src/phaser/core/raf_to.js +34 -0
  32. package/src/phaser/core/scale_manager.js +806 -0
  33. package/src/phaser/core/scene.js +66 -0
  34. package/src/phaser/core/scene_manager.js +310 -0
  35. package/src/phaser/core/signal.js +175 -0
  36. package/src/phaser/core/signal_binding.js +69 -0
  37. package/src/phaser/core/sound.js +538 -0
  38. package/src/phaser/core/sound_manager.js +365 -0
  39. package/src/phaser/core/stage.js +108 -0
  40. package/src/phaser/core/time.js +203 -0
  41. package/src/phaser/core/timer.js +276 -0
  42. package/src/phaser/core/timer_event.js +21 -0
  43. package/src/phaser/core/tween.js +329 -0
  44. package/src/phaser/core/tween_data.js +258 -0
  45. package/src/phaser/core/tween_easing.js +316 -0
  46. package/src/phaser/core/tween_manager.js +185 -0
  47. package/src/phaser/core/world.js +18 -0
  48. package/src/phaser/display/bitmap_text.js +322 -0
  49. package/src/phaser/display/button.js +194 -0
  50. package/src/phaser/display/canvas/buffer.js +36 -0
  51. package/src/phaser/display/canvas/graphics.js +227 -0
  52. package/src/phaser/display/canvas/masker.js +39 -0
  53. package/src/phaser/display/canvas/pool.js +121 -0
  54. package/src/phaser/display/canvas/renderer.js +123 -0
  55. package/src/phaser/display/canvas/tinter.js +141 -0
  56. package/src/phaser/display/canvas/util.js +151 -0
  57. package/src/phaser/display/display_object.js +597 -0
  58. package/src/phaser/display/graphics.js +723 -0
  59. package/src/phaser/display/graphics_data.js +27 -0
  60. package/src/phaser/display/graphics_data_util.js +14 -0
  61. package/src/phaser/display/group.js +227 -0
  62. package/src/phaser/display/image.js +288 -0
  63. package/src/phaser/display/sprite_batch.js +15 -0
  64. package/src/phaser/display/sprite_util.js +248 -0
  65. package/src/phaser/display/text.js +1089 -0
  66. package/src/phaser/display/webgl/abstract_filter.js +25 -0
  67. package/src/phaser/display/webgl/base_texture.js +68 -0
  68. package/src/phaser/display/webgl/blend_manager.js +35 -0
  69. package/src/phaser/display/webgl/earcut.js +647 -0
  70. package/src/phaser/display/webgl/earcut_node.js +28 -0
  71. package/src/phaser/display/webgl/fast_sprite_batch.js +242 -0
  72. package/src/phaser/display/webgl/filter_manager.js +46 -0
  73. package/src/phaser/display/webgl/filter_texture.js +61 -0
  74. package/src/phaser/display/webgl/graphics.js +618 -0
  75. package/src/phaser/display/webgl/graphics_data.js +42 -0
  76. package/src/phaser/display/webgl/mask_manager.js +36 -0
  77. package/src/phaser/display/webgl/render_texture.js +81 -0
  78. package/src/phaser/display/webgl/renderer.js +234 -0
  79. package/src/phaser/display/webgl/shader/complex.js +74 -0
  80. package/src/phaser/display/webgl/shader/fast.js +97 -0
  81. package/src/phaser/display/webgl/shader/normal.js +225 -0
  82. package/src/phaser/display/webgl/shader/primitive.js +72 -0
  83. package/src/phaser/display/webgl/shader/strip.js +77 -0
  84. package/src/phaser/display/webgl/shader_manager.js +89 -0
  85. package/src/phaser/display/webgl/sprite_batch.js +320 -0
  86. package/src/phaser/display/webgl/stencil_manager.js +170 -0
  87. package/src/phaser/display/webgl/texture.js +117 -0
  88. package/src/phaser/display/webgl/texture_util.js +32 -0
  89. package/src/phaser/display/webgl/util.js +74 -0
  90. package/src/phaser/geom/circle.js +186 -0
  91. package/src/phaser/geom/ellipse.js +65 -0
  92. package/src/phaser/geom/line.js +190 -0
  93. package/src/phaser/geom/matrix.js +147 -0
  94. package/src/phaser/geom/point.js +164 -0
  95. package/src/phaser/geom/polygon.js +141 -0
  96. package/src/phaser/geom/rectangle.js +306 -0
  97. package/src/phaser/geom/rounded_rectangle.js +36 -0
  98. package/src/phaser/geom/util/circle.js +115 -0
  99. package/src/phaser/geom/util/ellipse.js +30 -0
  100. package/src/phaser/geom/util/line.js +130 -0
  101. package/src/phaser/geom/util/matrix.js +48 -0
  102. package/src/phaser/geom/util/point.js +276 -0
  103. package/src/phaser/geom/util/polygon.js +24 -0
  104. package/src/phaser/geom/util/rectangle.js +212 -0
  105. package/src/phaser/geom/util/rounded_rectangle.js +28 -0
  106. package/src/phaser/util/math.js +279 -0
  107. 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
+ }