phaser-rails 2.0.4.1 → 2.0.5.0
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.
- checksums.yaml +4 -4
- data/lib/phaser/rails/version.rb +1 -1
- data/vendor/assets/javascripts/phaser.js +1427 -234
- data/vendor/assets/javascripts/phaser.min.js +20 -19
- metadata +2 -2
@@ -7,7 +7,7 @@
|
|
7
7
|
*
|
8
8
|
* Phaser - http://phaser.io
|
9
9
|
*
|
10
|
-
* v2.0.
|
10
|
+
* v2.0.5 "Tanchico" - Built: Tue May 20 2014 10:00:53
|
11
11
|
*
|
12
12
|
* By Richard Davey http://www.photonstorm.com @photonstorm
|
13
13
|
*
|
@@ -9622,29 +9622,55 @@ PIXI.RenderTexture = function(width, height, renderer, scaleMode)
|
|
9622
9622
|
PIXI.RenderTexture.prototype = Object.create(PIXI.Texture.prototype);
|
9623
9623
|
PIXI.RenderTexture.prototype.constructor = PIXI.RenderTexture;
|
9624
9624
|
|
9625
|
-
|
9625
|
+
/**
|
9626
|
+
* Resize the RenderTexture.
|
9627
|
+
*
|
9628
|
+
* @method resize
|
9629
|
+
* @param width {Number} The width to resize to.
|
9630
|
+
* @param height {Number} The height to resize to.
|
9631
|
+
* @param updateBase {Boolean} Should the baseTexture.width and height values be resized as well?
|
9632
|
+
*/
|
9633
|
+
PIXI.RenderTexture.prototype.resize = function(width, height, updateBase)
|
9626
9634
|
{
|
9635
|
+
if (width === this.width && height === this.height)
|
9636
|
+
{
|
9637
|
+
return;
|
9638
|
+
}
|
9639
|
+
|
9627
9640
|
this.width = width;
|
9628
9641
|
this.height = height;
|
9629
9642
|
|
9630
9643
|
this.frame.width = this.width;
|
9631
9644
|
this.frame.height = this.height;
|
9632
9645
|
|
9633
|
-
if(
|
9646
|
+
if (updateBase)
|
9647
|
+
{
|
9648
|
+
this.baseTexture.width = this.width;
|
9649
|
+
this.baseTexture.height = this.height;
|
9650
|
+
}
|
9651
|
+
|
9652
|
+
if (this.renderer.type === PIXI.WEBGL_RENDERER)
|
9634
9653
|
{
|
9635
9654
|
this.projection.x = this.width / 2;
|
9636
9655
|
this.projection.y = -this.height / 2;
|
9637
|
-
|
9638
|
-
var gl = this.renderer.gl;
|
9639
|
-
gl.bindTexture(gl.TEXTURE_2D, this.baseTexture._glTextures[gl.id]);
|
9640
|
-
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, this.width, this.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
9641
9656
|
}
|
9642
|
-
|
9657
|
+
|
9658
|
+
this.textureBuffer.resize(this.width, this.height);
|
9659
|
+
};
|
9660
|
+
|
9661
|
+
/**
|
9662
|
+
* Clears the RenderTexture.
|
9663
|
+
*
|
9664
|
+
* @method clear
|
9665
|
+
*/
|
9666
|
+
PIXI.RenderTexture.prototype.clear = function()
|
9667
|
+
{
|
9668
|
+
if (this.renderer.type === PIXI.WEBGL_RENDERER)
|
9643
9669
|
{
|
9644
|
-
this.
|
9670
|
+
this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER, this.textureBuffer.frameBuffer);
|
9645
9671
|
}
|
9646
|
-
|
9647
|
-
|
9672
|
+
|
9673
|
+
this.textureBuffer.clear();
|
9648
9674
|
};
|
9649
9675
|
|
9650
9676
|
/**
|
@@ -9764,7 +9790,7 @@ PIXI.RenderTexture.tempMatrix = new PIXI.Matrix();
|
|
9764
9790
|
*
|
9765
9791
|
* Phaser - http://phaser.io
|
9766
9792
|
*
|
9767
|
-
* v2.0.
|
9793
|
+
* v2.0.5 "Tanchico" - Built: Tue May 20 2014 10:00:53
|
9768
9794
|
*
|
9769
9795
|
* By Richard Davey http://www.photonstorm.com @photonstorm
|
9770
9796
|
*
|
@@ -9807,7 +9833,7 @@ PIXI.RenderTexture.tempMatrix = new PIXI.Matrix();
|
|
9807
9833
|
*/
|
9808
9834
|
var Phaser = Phaser || {
|
9809
9835
|
|
9810
|
-
VERSION: '2.0.
|
9836
|
+
VERSION: '2.0.5',
|
9811
9837
|
GAMES: [],
|
9812
9838
|
|
9813
9839
|
AUTO: 0,
|
@@ -9840,6 +9866,7 @@ var Phaser = Phaser || {
|
|
9840
9866
|
ELLIPSE: 16,
|
9841
9867
|
SPRITEBATCH: 17,
|
9842
9868
|
RETROFONT: 18,
|
9869
|
+
POINTER: 19,
|
9843
9870
|
|
9844
9871
|
// The various blend modes supported by pixi / phaser
|
9845
9872
|
blendModes: {
|
@@ -9871,10 +9898,10 @@ var Phaser = Phaser || {
|
|
9871
9898
|
|
9872
9899
|
};
|
9873
9900
|
|
9874
|
-
|
9875
|
-
|
9876
|
-
|
9877
|
-
};
|
9901
|
+
// We don't need this in Pixi, so we've removed it to save space
|
9902
|
+
// however the Stage object expects a reference to it, so here is a dummy entry.
|
9903
|
+
// Ensure that an existing PIXI.InteractionManager is not overriden - in case you're using your own PIXI library.
|
9904
|
+
PIXI.InteractionManager = PIXI.InteractionManager || function () {};
|
9878
9905
|
|
9879
9906
|
/* jshint supernew: true */
|
9880
9907
|
|
@@ -9890,6 +9917,71 @@ PIXI.InteractionManager = function () {
|
|
9890
9917
|
*/
|
9891
9918
|
Phaser.Utils = {
|
9892
9919
|
|
9920
|
+
/**
|
9921
|
+
* Transposes the elements of the given Array.
|
9922
|
+
*
|
9923
|
+
* @method transposeArray
|
9924
|
+
* @param {array} array - The array to transpose.
|
9925
|
+
* @return {array} The transposed array.
|
9926
|
+
*/
|
9927
|
+
transposeArray: function (array) {
|
9928
|
+
|
9929
|
+
var result = new Array(array[0].length);
|
9930
|
+
|
9931
|
+
for (var i = 0; i < array[0].length; i++)
|
9932
|
+
{
|
9933
|
+
result[i] = new Array(array.length - 1);
|
9934
|
+
|
9935
|
+
for (var j = array.length - 1; j > -1; j--)
|
9936
|
+
{
|
9937
|
+
result[i][j] = array[j][i];
|
9938
|
+
}
|
9939
|
+
}
|
9940
|
+
|
9941
|
+
return result;
|
9942
|
+
|
9943
|
+
},
|
9944
|
+
|
9945
|
+
/**
|
9946
|
+
* Rotates the given array.
|
9947
|
+
* Based on the routine from http://jsfiddle.net/MrPolywhirl/NH42z/
|
9948
|
+
*
|
9949
|
+
* @method Phaser.Utils.rotateArray
|
9950
|
+
* @param {array} matrix - The array to rotate.
|
9951
|
+
* @param {number|string} direction - The amount to rotate. Either a number: 90, -90, 270, -270, 180 or a string: 'rotateLeft', 'rotateRight' or 'rotate180'
|
9952
|
+
* @return {array} The rotated array
|
9953
|
+
*/
|
9954
|
+
rotateArray: function (matrix, direction) {
|
9955
|
+
|
9956
|
+
if (typeof direction !== 'string')
|
9957
|
+
{
|
9958
|
+
direction = ((direction % 360) + 360) % 360;
|
9959
|
+
}
|
9960
|
+
|
9961
|
+
if (direction === 90 || direction === -270 || direction === 'rotateLeft')
|
9962
|
+
{
|
9963
|
+
matrix = Phaser.Utils.transposeArray(matrix);
|
9964
|
+
matrix = matrix.reverse();
|
9965
|
+
}
|
9966
|
+
else if (direction === -90 || direction === 270 || direction === 'rotateRight')
|
9967
|
+
{
|
9968
|
+
matrix = matrix.reverse();
|
9969
|
+
matrix = Phaser.Utils.transposeArray(matrix);
|
9970
|
+
}
|
9971
|
+
else if (Math.abs(direction) === 180 || direction === 'rotate180')
|
9972
|
+
{
|
9973
|
+
for (var i = 0; i < matrix.length; i++)
|
9974
|
+
{
|
9975
|
+
matrix[i].reverse();
|
9976
|
+
}
|
9977
|
+
|
9978
|
+
matrix = matrix.reverse();
|
9979
|
+
}
|
9980
|
+
|
9981
|
+
return matrix;
|
9982
|
+
|
9983
|
+
},
|
9984
|
+
|
9893
9985
|
/**
|
9894
9986
|
* Get a unit dimension from a string.
|
9895
9987
|
*
|
@@ -10424,7 +10516,7 @@ Phaser.Circle.prototype = {
|
|
10424
10516
|
* Returns a Point object containing the coordinates of a point on the circumference of the Circle based on the given angle.
|
10425
10517
|
* @method Phaser.Circle#circumferencePoint
|
10426
10518
|
* @param {number} angle - The angle in radians (unless asDegrees is true) to return the point from.
|
10427
|
-
* @param {boolean} asDegrees - Is the given angle in radians (false) or degrees (true)?
|
10519
|
+
* @param {boolean} [asDegrees=false] - Is the given angle in radians (false) or degrees (true)?
|
10428
10520
|
* @param {Phaser.Point} [out] - An optional Point object to put the result in to. If none specified a new Point object will be created.
|
10429
10521
|
* @return {Phaser.Point} The Point object holding the result.
|
10430
10522
|
*/
|
@@ -10725,7 +10817,7 @@ Phaser.Circle.intersects = function (a, b) {
|
|
10725
10817
|
* @method Phaser.Circle.circumferencePoint
|
10726
10818
|
* @param {Phaser.Circle} a - The first Circle object.
|
10727
10819
|
* @param {number} angle - The angle in radians (unless asDegrees is true) to return the point from.
|
10728
|
-
* @param {boolean} asDegrees - Is the given angle in radians (false) or degrees (true)?
|
10820
|
+
* @param {boolean} [asDegrees=false] - Is the given angle in radians (false) or degrees (true)?
|
10729
10821
|
* @param {Phaser.Point} [out] - An optional Point object to put the result in to. If none specified a new Point object will be created.
|
10730
10822
|
* @return {Phaser.Point} The Point object holding the result.
|
10731
10823
|
*/
|
@@ -11074,11 +11166,21 @@ Phaser.Point.prototype = {
|
|
11074
11166
|
*
|
11075
11167
|
* @method Phaser.Point#angle
|
11076
11168
|
* @param {Phaser.Point|any} a - The object to get the angle from this Point to.
|
11169
|
+
* @param {boolean} [asDegrees=false] - Is the given angle in radians (false) or degrees (true)?
|
11077
11170
|
* @return {number} The angle between the two objects.
|
11078
11171
|
*/
|
11079
|
-
angle: function (a) {
|
11172
|
+
angle: function (a, asDegrees) {
|
11080
11173
|
|
11081
|
-
|
11174
|
+
if (typeof asDegrees === 'undefined') { asDegrees = false; }
|
11175
|
+
|
11176
|
+
if (asDegrees)
|
11177
|
+
{
|
11178
|
+
return Phaser.Math.radToDeg(Math.atan2(a.y - this.y, a.x - this.x));
|
11179
|
+
}
|
11180
|
+
else
|
11181
|
+
{
|
11182
|
+
return Math.atan2(a.y - this.y, a.x - this.x);
|
11183
|
+
}
|
11082
11184
|
|
11083
11185
|
},
|
11084
11186
|
|
@@ -11362,7 +11464,8 @@ Phaser.Point.equals = function (a, b) {
|
|
11362
11464
|
*/
|
11363
11465
|
Phaser.Point.angle = function (a, b) {
|
11364
11466
|
|
11365
|
-
return Math.atan2(a.x * b.y - a.y * b.x, a.x * b.x + a.y * b.y);
|
11467
|
+
// return Math.atan2(a.x * b.y - a.y * b.x, a.x * b.x + a.y * b.y);
|
11468
|
+
return Math.atan2(a.y - b.y, a.x - b.x);
|
11366
11469
|
|
11367
11470
|
};
|
11368
11471
|
|
@@ -12533,7 +12636,7 @@ Phaser.Line.prototype = {
|
|
12533
12636
|
*/
|
12534
12637
|
pointOnLine: function (x, y) {
|
12535
12638
|
|
12536
|
-
return ((x - this.start.x) * (this.end.y - this.
|
12639
|
+
return ((x - this.start.x) * (this.end.y - this.start.y) === (this.end.x - this.start.x) * (y - this.start.y));
|
12537
12640
|
|
12538
12641
|
},
|
12539
12642
|
|
@@ -12809,23 +12912,10 @@ Phaser.Line.intersectsPoints = function (a, b, e, f, asSegment, result) {
|
|
12809
12912
|
|
12810
12913
|
if (asSegment)
|
12811
12914
|
{
|
12812
|
-
if (Math.
|
12813
|
-
|
12814
|
-
|
12815
|
-
|
12816
|
-
|
12817
|
-
if (Math.pow((result.x - a.x) + (result.y - a.y), 2) > Math.pow((a.x - b.x) + (a.y - b.y), 2))
|
12818
|
-
{
|
12819
|
-
return null;
|
12820
|
-
}
|
12821
|
-
|
12822
|
-
if (Math.pow((result.x - f.x) + (result.y - f.y), 2) > Math.pow((e.x - f.x) + (e.y - f.y), 2))
|
12823
|
-
{
|
12824
|
-
return null;
|
12825
|
-
}
|
12826
|
-
|
12827
|
-
if (Math.pow((result.x - e.x) + (result.y - e.y), 2) > Math.pow((e.x - f.x) + (e.y - f.y), 2))
|
12828
|
-
{
|
12915
|
+
if ( result.x < Math.min(a.x, b.x) || result.x > Math.max(a.x, b.x) ||
|
12916
|
+
result.y < Math.min(a.y, b.y) || result.y > Math.max(a.y, b.y) ||
|
12917
|
+
result.x < Math.min(e.x, f.x) || result.x > Math.max(e.x, f.x) ||
|
12918
|
+
result.y < Math.min(e.y, f.y) || result.y > Math.max(e.y, f.y) ) {
|
12829
12919
|
return null;
|
12830
12920
|
}
|
12831
12921
|
}
|
@@ -13196,9 +13286,10 @@ Phaser.Polygon = function (points) {
|
|
13196
13286
|
}
|
13197
13287
|
|
13198
13288
|
/**
|
13199
|
-
* @property {array<Phaser.Point>|array<number>} points - The array of Points.
|
13289
|
+
* @property {array<Phaser.Point>|array<number>} points - The array of vertex Points.
|
13290
|
+
* @private
|
13200
13291
|
*/
|
13201
|
-
this.
|
13292
|
+
this._points = points;
|
13202
13293
|
|
13203
13294
|
};
|
13204
13295
|
|
@@ -13259,6 +13350,95 @@ Phaser.Polygon.prototype = {
|
|
13259
13350
|
|
13260
13351
|
Phaser.Polygon.prototype.constructor = Phaser.Polygon;
|
13261
13352
|
|
13353
|
+
/*
|
13354
|
+
* Sets and modifies the points of this polygon.
|
13355
|
+
*
|
13356
|
+
* @name Phaser.Polygon#points
|
13357
|
+
* @property {array<Phaser.Point>|array<number>} points - The array of vertex points
|
13358
|
+
*/
|
13359
|
+
Object.defineProperty(Phaser.Polygon.prototype, 'points', {
|
13360
|
+
|
13361
|
+
get: function() {
|
13362
|
+
return this._points;
|
13363
|
+
},
|
13364
|
+
|
13365
|
+
set: function(points) {
|
13366
|
+
|
13367
|
+
//if points isn't an array, use arguments as the array
|
13368
|
+
if (!(points instanceof Array))
|
13369
|
+
{
|
13370
|
+
points = Array.prototype.slice.call(arguments);
|
13371
|
+
}
|
13372
|
+
|
13373
|
+
//if this is a flat array of numbers, convert it to points
|
13374
|
+
if (typeof points[0] === 'number')
|
13375
|
+
{
|
13376
|
+
var p = [];
|
13377
|
+
|
13378
|
+
for (var i = 0, len = points.length; i < len; i += 2)
|
13379
|
+
{
|
13380
|
+
p.push(new Phaser.Point(points[i], points[i + 1]));
|
13381
|
+
}
|
13382
|
+
|
13383
|
+
points = p;
|
13384
|
+
}
|
13385
|
+
|
13386
|
+
this._points = points;
|
13387
|
+
}
|
13388
|
+
|
13389
|
+
});
|
13390
|
+
|
13391
|
+
/**
|
13392
|
+
* Returns the area of the polygon.
|
13393
|
+
*
|
13394
|
+
* @name Phaser.Circle#right
|
13395
|
+
* @readonly
|
13396
|
+
*/
|
13397
|
+
Object.defineProperty(Phaser.Polygon.prototype, 'area', {
|
13398
|
+
|
13399
|
+
get: function() {
|
13400
|
+
|
13401
|
+
var p1;
|
13402
|
+
var p2;
|
13403
|
+
var avgHeight;
|
13404
|
+
var width;
|
13405
|
+
var i;
|
13406
|
+
var y0 = Number.MAX_VALUE;
|
13407
|
+
var area = 0;
|
13408
|
+
|
13409
|
+
// Find lowest boundary
|
13410
|
+
for (i = 0; i < this.points.length; i++)
|
13411
|
+
{
|
13412
|
+
if (this.points[i].y < y0)
|
13413
|
+
{
|
13414
|
+
y0 = this.points[i].y;
|
13415
|
+
}
|
13416
|
+
}
|
13417
|
+
|
13418
|
+
for (i = 0; i< this.points.length; i++)
|
13419
|
+
{
|
13420
|
+
p1 = this.points[i];
|
13421
|
+
|
13422
|
+
if (i === this.points.length - 1)
|
13423
|
+
{
|
13424
|
+
p2 = this.points[0];
|
13425
|
+
}
|
13426
|
+
else
|
13427
|
+
{
|
13428
|
+
p2 = this.points[i+1];
|
13429
|
+
}
|
13430
|
+
|
13431
|
+
avgHeight = ((p1.y - y0) + (p2.y - y0)) / 2;
|
13432
|
+
width = p1.x - p2.x;
|
13433
|
+
area += avgHeight * width;
|
13434
|
+
}
|
13435
|
+
|
13436
|
+
return area;
|
13437
|
+
|
13438
|
+
}
|
13439
|
+
|
13440
|
+
});
|
13441
|
+
|
13262
13442
|
// Because PIXI uses its own Polygon, we'll replace it with ours to avoid duplicating code or confusion.
|
13263
13443
|
PIXI.Polygon = Phaser.Polygon;
|
13264
13444
|
|
@@ -15710,16 +15890,18 @@ Phaser.PluginManager.prototype = {
|
|
15710
15890
|
*
|
15711
15891
|
* @method Phaser.PluginManager#add
|
15712
15892
|
* @param {object|Phaser.Plugin} plugin - The Plugin to add into the PluginManager. This can be a function or an existing object.
|
15893
|
+
* @param {...*} parameter - Additional parameters that will be passed to the Plugin.init method.
|
15713
15894
|
* @return {Phaser.Plugin} The Plugin that was added to the manager.
|
15714
15895
|
*/
|
15715
15896
|
add: function (plugin) {
|
15716
15897
|
|
15898
|
+
var args = Array.prototype.splice.call(arguments, 1);
|
15717
15899
|
var result = false;
|
15718
15900
|
|
15719
15901
|
// Prototype?
|
15720
15902
|
if (typeof plugin === 'function')
|
15721
15903
|
{
|
15722
|
-
plugin = new plugin(this.game, this
|
15904
|
+
plugin = new plugin(this.game, this);
|
15723
15905
|
}
|
15724
15906
|
else
|
15725
15907
|
{
|
@@ -15776,7 +15958,7 @@ Phaser.PluginManager.prototype = {
|
|
15776
15958
|
// Allows plugins to run potentially destructive code outside of the constructor, and only if being added to the PluginManager
|
15777
15959
|
if (typeof plugin['init'] === 'function')
|
15778
15960
|
{
|
15779
|
-
plugin.init();
|
15961
|
+
plugin.init.apply(plugin, args);
|
15780
15962
|
}
|
15781
15963
|
|
15782
15964
|
return plugin;
|
@@ -15976,6 +16158,11 @@ Phaser.Stage = function (game, width, height) {
|
|
15976
16158
|
*/
|
15977
16159
|
this.offset = new Phaser.Point();
|
15978
16160
|
|
16161
|
+
/**
|
16162
|
+
* @property {Phaser.Rectangle} bounds - The bounds of the Stage. Typically x/y = Stage.offset.x/y and the width/height match the game width and height.
|
16163
|
+
*/
|
16164
|
+
this.bounds = new Phaser.Rectangle(0, 0, width, height);
|
16165
|
+
|
15979
16166
|
PIXI.Stage.call(this, 0x000000, false);
|
15980
16167
|
|
15981
16168
|
/**
|
@@ -15984,6 +16171,11 @@ Phaser.Stage = function (game, width, height) {
|
|
15984
16171
|
*/
|
15985
16172
|
this.name = '_stage_root';
|
15986
16173
|
|
16174
|
+
/**
|
16175
|
+
* @property {boolean} interactive - Pixi level var, ignored by Phaser.
|
16176
|
+
* @default
|
16177
|
+
* @private
|
16178
|
+
*/
|
15987
16179
|
this.interactive = false;
|
15988
16180
|
|
15989
16181
|
/**
|
@@ -16121,6 +16313,8 @@ Phaser.Stage.prototype.postUpdate = function () {
|
|
16121
16313
|
if (this.game.time.now > this._nextOffsetCheck)
|
16122
16314
|
{
|
16123
16315
|
Phaser.Canvas.getOffset(this.game.canvas, this.offset);
|
16316
|
+
this.bounds.x = this.offset.x;
|
16317
|
+
this.bounds.y = this.offset.y;
|
16124
16318
|
this._nextOffsetCheck = this.game.time.now + this.checkOffsetInterval;
|
16125
16319
|
}
|
16126
16320
|
}
|
@@ -16189,7 +16383,7 @@ Phaser.Stage.prototype.boot = function () {
|
|
16189
16383
|
|
16190
16384
|
Phaser.Canvas.getOffset(this.game.canvas, this.offset);
|
16191
16385
|
|
16192
|
-
this.bounds
|
16386
|
+
this.bounds.setTo(this.offset.x, this.offset.y, this.game.width, this.game.height);
|
16193
16387
|
|
16194
16388
|
var _this = this;
|
16195
16389
|
|
@@ -16283,18 +16477,27 @@ Phaser.Stage.prototype.visibilityChange = function (event) {
|
|
16283
16477
|
};
|
16284
16478
|
|
16285
16479
|
/**
|
16286
|
-
* Sets the background color for the
|
16480
|
+
* Sets the background color for the Stage. The color can be given as a hex value (#RRGGBB) or a numeric value (0xRRGGBB)
|
16287
16481
|
*
|
16288
16482
|
* @name Phaser.Stage#setBackgroundColor
|
16289
|
-
* @param {number} backgroundColor - The color of the background
|
16483
|
+
* @param {number|string} backgroundColor - The color of the background.
|
16290
16484
|
*/
|
16291
16485
|
Phaser.Stage.prototype.setBackgroundColor = function(backgroundColor)
|
16292
16486
|
{
|
16293
|
-
|
16294
|
-
|
16295
|
-
|
16296
|
-
|
16297
|
-
|
16487
|
+
if (typeof backgroundColor === 'string')
|
16488
|
+
{
|
16489
|
+
var rgb = Phaser.Color.hexToColor(backgroundColor);
|
16490
|
+
this._backgroundColor = Phaser.Color.getColor(rgb.r, rgb.g, rgb.b);
|
16491
|
+
}
|
16492
|
+
else
|
16493
|
+
{
|
16494
|
+
var rgb = Phaser.Color.getRGB(backgroundColor);
|
16495
|
+
this._backgroundColor = backgroundColor;
|
16496
|
+
}
|
16497
|
+
|
16498
|
+
this.backgroundColorSplit = [ rgb.r / 255, rgb.g / 255, rgb.b / 255 ];
|
16499
|
+
this.backgroundColorString = Phaser.Color.RGBtoString(rgb.r, rgb.g, rgb.b, 255, '#');
|
16500
|
+
|
16298
16501
|
};
|
16299
16502
|
|
16300
16503
|
/**
|
@@ -16304,20 +16507,15 @@ Phaser.Stage.prototype.setBackgroundColor = function(backgroundColor)
|
|
16304
16507
|
Object.defineProperty(Phaser.Stage.prototype, "backgroundColor", {
|
16305
16508
|
|
16306
16509
|
get: function () {
|
16510
|
+
|
16307
16511
|
return this._backgroundColor;
|
16512
|
+
|
16308
16513
|
},
|
16309
16514
|
|
16310
16515
|
set: function (color) {
|
16311
16516
|
|
16312
|
-
this.
|
16313
|
-
|
16314
|
-
if (this.game.transparent === false)
|
16517
|
+
if (!this.game.transparent)
|
16315
16518
|
{
|
16316
|
-
if (typeof color === 'string')
|
16317
|
-
{
|
16318
|
-
color = Phaser.Color.hexToRGB(color);
|
16319
|
-
}
|
16320
|
-
|
16321
16519
|
this.setBackgroundColor(color);
|
16322
16520
|
}
|
16323
16521
|
|
@@ -16987,15 +17185,57 @@ Phaser.Group.prototype.replace = function (oldChild, newChild) {
|
|
16987
17185
|
};
|
16988
17186
|
|
16989
17187
|
/**
|
16990
|
-
*
|
17188
|
+
* Checks if the child has the given property. Will scan up to 4 levels deep only.
|
17189
|
+
*
|
17190
|
+
* @method Phaser.Group#hasProperty
|
17191
|
+
* @param {*} child - The child to check for the existance of the property on.
|
17192
|
+
* @param {array} key - An array of strings that make up the property.
|
17193
|
+
* @return {boolean} True if the child has the property, otherwise false.
|
17194
|
+
*/
|
17195
|
+
Phaser.Group.prototype.hasProperty = function (child, key) {
|
17196
|
+
|
17197
|
+
var len = key.length;
|
17198
|
+
|
17199
|
+
if (len === 1 && key[0] in child)
|
17200
|
+
{
|
17201
|
+
return true;
|
17202
|
+
}
|
17203
|
+
else if (len === 2 && key[0] in child && key[1] in child[key[0]])
|
17204
|
+
{
|
17205
|
+
return true;
|
17206
|
+
}
|
17207
|
+
else if (len === 3 && key[0] in child && key[1] in child[key[0]] && key[2] in child[key[0]][key[1]])
|
17208
|
+
{
|
17209
|
+
return true;
|
17210
|
+
}
|
17211
|
+
else if (len === 4 && key[0] in child && key[1] in child[key[0]] && key[2] in child[key[0]][key[1]] && key[3] in child[key[0]][key[1]][key[2]])
|
17212
|
+
{
|
17213
|
+
return true;
|
17214
|
+
}
|
17215
|
+
|
17216
|
+
return false;
|
17217
|
+
|
17218
|
+
};
|
17219
|
+
|
17220
|
+
/**
|
17221
|
+
* Sets a property to the given value on the child. The operation parameter controls how the value is set.
|
17222
|
+
* Operation 0 means set the existing value to the given value, or if force is `false` create a new property with the given value.
|
17223
|
+
* 1 will add the given value to the value already present.
|
17224
|
+
* 2 will subtract the given value from the value already present.
|
17225
|
+
* 3 will multiply the value already present by the given value.
|
17226
|
+
* 4 will divide the value already present by the given value.
|
16991
17227
|
*
|
16992
17228
|
* @method Phaser.Group#setProperty
|
16993
17229
|
* @param {*} child - The child to set the property value on.
|
16994
17230
|
* @param {array} key - An array of strings that make up the property that will be set.
|
16995
17231
|
* @param {*} value - The value that will be set.
|
16996
17232
|
* @param {number} [operation=0] - Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it.
|
17233
|
+
* @param {boolean} [force=false] - If `force` is true then the property will be set on the child regardless if it already exists or not. If false and the property doesn't exist, nothing will be set.
|
17234
|
+
* @return {boolean} True if the property was set, false if not.
|
16997
17235
|
*/
|
16998
|
-
Phaser.Group.prototype.setProperty = function (child, key, value, operation) {
|
17236
|
+
Phaser.Group.prototype.setProperty = function (child, key, value, operation, force) {
|
17237
|
+
|
17238
|
+
if (typeof force === 'undefined') { force = false; }
|
16999
17239
|
|
17000
17240
|
operation = operation || 0;
|
17001
17241
|
|
@@ -17007,9 +17247,16 @@ Phaser.Group.prototype.setProperty = function (child, key, value, operation) {
|
|
17007
17247
|
// 3 = Multiply
|
17008
17248
|
// 4 = Divide
|
17009
17249
|
|
17250
|
+
// We can't force a property in and the child doesn't have it, so abort.
|
17251
|
+
// Equally we can't add, subtract, multiply or divide a property value if it doesn't exist, so abort in those cases too.
|
17252
|
+
if (!this.hasProperty(child, key) && (!force || operation > 0))
|
17253
|
+
{
|
17254
|
+
return false;
|
17255
|
+
}
|
17256
|
+
|
17010
17257
|
var len = key.length;
|
17011
17258
|
|
17012
|
-
if (len === 1
|
17259
|
+
if (len === 1)
|
17013
17260
|
{
|
17014
17261
|
if (operation === 0) { child[key[0]] = value; }
|
17015
17262
|
else if (operation == 1) { child[key[0]] += value; }
|
@@ -17017,7 +17264,7 @@ Phaser.Group.prototype.setProperty = function (child, key, value, operation) {
|
|
17017
17264
|
else if (operation == 3) { child[key[0]] *= value; }
|
17018
17265
|
else if (operation == 4) { child[key[0]] /= value; }
|
17019
17266
|
}
|
17020
|
-
else if (len === 2
|
17267
|
+
else if (len === 2)
|
17021
17268
|
{
|
17022
17269
|
if (operation === 0) { child[key[0]][key[1]] = value; }
|
17023
17270
|
else if (operation == 1) { child[key[0]][key[1]] += value; }
|
@@ -17025,7 +17272,7 @@ Phaser.Group.prototype.setProperty = function (child, key, value, operation) {
|
|
17025
17272
|
else if (operation == 3) { child[key[0]][key[1]] *= value; }
|
17026
17273
|
else if (operation == 4) { child[key[0]][key[1]] /= value; }
|
17027
17274
|
}
|
17028
|
-
else if (len === 3
|
17275
|
+
else if (len === 3)
|
17029
17276
|
{
|
17030
17277
|
if (operation === 0) { child[key[0]][key[1]][key[2]] = value; }
|
17031
17278
|
else if (operation == 1) { child[key[0]][key[1]][key[2]] += value; }
|
@@ -17033,7 +17280,7 @@ Phaser.Group.prototype.setProperty = function (child, key, value, operation) {
|
|
17033
17280
|
else if (operation == 3) { child[key[0]][key[1]][key[2]] *= value; }
|
17034
17281
|
else if (operation == 4) { child[key[0]][key[1]][key[2]] /= value; }
|
17035
17282
|
}
|
17036
|
-
else if (len === 4
|
17283
|
+
else if (len === 4)
|
17037
17284
|
{
|
17038
17285
|
if (operation === 0) { child[key[0]][key[1]][key[2]][key[3]] = value; }
|
17039
17286
|
else if (operation == 1) { child[key[0]][key[1]][key[2]][key[3]] += value; }
|
@@ -17042,6 +17289,8 @@ Phaser.Group.prototype.setProperty = function (child, key, value, operation) {
|
|
17042
17289
|
else if (operation == 4) { child[key[0]][key[1]][key[2]][key[3]] /= value; }
|
17043
17290
|
}
|
17044
17291
|
|
17292
|
+
return true;
|
17293
|
+
|
17045
17294
|
};
|
17046
17295
|
|
17047
17296
|
/**
|
@@ -17055,8 +17304,12 @@ Phaser.Group.prototype.setProperty = function (child, key, value, operation) {
|
|
17055
17304
|
* @param {boolean} [checkAlive=false] - If set then the child will only be updated if alive=true.
|
17056
17305
|
* @param {boolean} [checkVisible=false] - If set then the child will only be updated if visible=true.
|
17057
17306
|
* @param {number} [operation=0] - Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it.
|
17307
|
+
* @param {boolean} [force=false] - If `force` is true then the property will be set on the child regardless if it already exists or not. If false and the property doesn't exist, nothing will be set.
|
17308
|
+
* @return {boolean} True if the property was set, false if not.
|
17058
17309
|
*/
|
17059
|
-
Phaser.Group.prototype.set = function (child, key, value, checkAlive, checkVisible, operation) {
|
17310
|
+
Phaser.Group.prototype.set = function (child, key, value, checkAlive, checkVisible, operation, force) {
|
17311
|
+
|
17312
|
+
if (typeof force === 'undefined') { force = false; }
|
17060
17313
|
|
17061
17314
|
key = key.split('.');
|
17062
17315
|
|
@@ -17065,7 +17318,7 @@ Phaser.Group.prototype.set = function (child, key, value, checkAlive, checkVisib
|
|
17065
17318
|
|
17066
17319
|
if ((checkAlive === false || (checkAlive && child.alive)) && (checkVisible === false || (checkVisible && child.visible)))
|
17067
17320
|
{
|
17068
|
-
this.setProperty(child, key, value, operation);
|
17321
|
+
return this.setProperty(child, key, value, operation, force);
|
17069
17322
|
}
|
17070
17323
|
|
17071
17324
|
};
|
@@ -17083,21 +17336,22 @@ Phaser.Group.prototype.set = function (child, key, value, checkAlive, checkVisib
|
|
17083
17336
|
* @param {boolean} [checkAlive=false] - If set then only children with alive=true will be updated. This includes any Groups that are children.
|
17084
17337
|
* @param {boolean} [checkVisible=false] - If set then only children with visible=true will be updated. This includes any Groups that are children.
|
17085
17338
|
* @param {number} [operation=0] - Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it.
|
17339
|
+
* @param {boolean} [force=false] - If `force` is true then the property will be set on the child regardless if it already exists or not. If false and the property doesn't exist, nothing will be set.
|
17086
17340
|
*/
|
17087
|
-
Phaser.Group.prototype.setAll = function (key, value, checkAlive, checkVisible, operation) {
|
17088
|
-
|
17089
|
-
key = key.split('.');
|
17341
|
+
Phaser.Group.prototype.setAll = function (key, value, checkAlive, checkVisible, operation, force) {
|
17090
17342
|
|
17091
17343
|
if (typeof checkAlive === 'undefined') { checkAlive = false; }
|
17092
17344
|
if (typeof checkVisible === 'undefined') { checkVisible = false; }
|
17345
|
+
if (typeof force === 'undefined') { force = false; }
|
17093
17346
|
|
17347
|
+
key = key.split('.');
|
17094
17348
|
operation = operation || 0;
|
17095
17349
|
|
17096
17350
|
for (var i = 0, len = this.children.length; i < len; i++)
|
17097
17351
|
{
|
17098
17352
|
if ((!checkAlive || (checkAlive && this.children[i].alive)) && (!checkVisible || (checkVisible && this.children[i].visible)))
|
17099
17353
|
{
|
17100
|
-
this.setProperty(this.children[i], key, value, operation);
|
17354
|
+
this.setProperty(this.children[i], key, value, operation, force);
|
17101
17355
|
}
|
17102
17356
|
}
|
17103
17357
|
|
@@ -17117,11 +17371,13 @@ Phaser.Group.prototype.setAll = function (key, value, checkAlive, checkVisible,
|
|
17117
17371
|
* @param {boolean} [checkAlive=false] - If set then only children with alive=true will be updated. This includes any Groups that are children.
|
17118
17372
|
* @param {boolean} [checkVisible=false] - If set then only children with visible=true will be updated. This includes any Groups that are children.
|
17119
17373
|
* @param {number} [operation=0] - Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it.
|
17374
|
+
* @param {boolean} [force=false] - If `force` is true then the property will be set on the child regardless if it already exists or not. If false and the property doesn't exist, nothing will be set.
|
17120
17375
|
*/
|
17121
|
-
Phaser.Group.prototype.setAllChildren = function (key, value, checkAlive, checkVisible, operation) {
|
17376
|
+
Phaser.Group.prototype.setAllChildren = function (key, value, checkAlive, checkVisible, operation, force) {
|
17122
17377
|
|
17123
17378
|
if (typeof checkAlive === 'undefined') { checkAlive = false; }
|
17124
17379
|
if (typeof checkVisible === 'undefined') { checkVisible = false; }
|
17380
|
+
if (typeof force === 'undefined') { force = false; }
|
17125
17381
|
|
17126
17382
|
operation = operation || 0;
|
17127
17383
|
|
@@ -17131,11 +17387,11 @@ Phaser.Group.prototype.setAllChildren = function (key, value, checkAlive, checkV
|
|
17131
17387
|
{
|
17132
17388
|
if (this.children[i] instanceof Phaser.Group)
|
17133
17389
|
{
|
17134
|
-
this.children[i].setAllChildren(key, value, checkAlive, checkVisible, operation);
|
17390
|
+
this.children[i].setAllChildren(key, value, checkAlive, checkVisible, operation, force);
|
17135
17391
|
}
|
17136
17392
|
else
|
17137
17393
|
{
|
17138
|
-
this.setProperty(this.children[i], key.split('.'), value, operation);
|
17394
|
+
this.setProperty(this.children[i], key.split('.'), value, operation, force);
|
17139
17395
|
}
|
17140
17396
|
}
|
17141
17397
|
}
|
@@ -18489,6 +18745,12 @@ Phaser.ScaleManager = function (game, width, height) {
|
|
18489
18745
|
*/
|
18490
18746
|
this.margin = new Phaser.Point(0, 0);
|
18491
18747
|
|
18748
|
+
/**
|
18749
|
+
* @property {Phaser.Rectangle} bounds - The bounds of the scaled game. The x/y will match the offset of the canvas element and the width/height the scaled width and height.
|
18750
|
+
* @readonly
|
18751
|
+
*/
|
18752
|
+
this.bounds = new Phaser.Rectangle(0, 0, width, height);
|
18753
|
+
|
18492
18754
|
/**
|
18493
18755
|
* @property {number} aspectRatio - The aspect ratio of the scaled game.
|
18494
18756
|
* @readonly
|
@@ -19001,6 +19263,8 @@ Phaser.ScaleManager.prototype = {
|
|
19001
19263
|
|
19002
19264
|
Phaser.Canvas.getOffset(this.game.canvas, this.game.stage.offset);
|
19003
19265
|
|
19266
|
+
this.bounds.setTo(this.game.stage.offset.x, this.game.stage.offset.y, this.width, this.height);
|
19267
|
+
|
19004
19268
|
this.aspectRatio = this.width / this.height;
|
19005
19269
|
|
19006
19270
|
this.scaleFactor.x = this.game.width / this.width;
|
@@ -19971,6 +20235,11 @@ Phaser.Input = function (game) {
|
|
19971
20235
|
*/
|
19972
20236
|
this.hitContext = null;
|
19973
20237
|
|
20238
|
+
/**
|
20239
|
+
* @property {array} moveCallbacks - An array of callbacks that will be fired every time the activePointer receives a move event from the DOM.
|
20240
|
+
*/
|
20241
|
+
this.moveCallbacks = [];
|
20242
|
+
|
19974
20243
|
/**
|
19975
20244
|
* @property {function} moveCallback - An optional callback that will be fired every time the activePointer receives a move event from the DOM. Set to null to disable.
|
19976
20245
|
*/
|
@@ -20207,6 +20476,12 @@ Phaser.Input = function (game) {
|
|
20207
20476
|
*/
|
20208
20477
|
this.onHold = null;
|
20209
20478
|
|
20479
|
+
/**
|
20480
|
+
* @property {number} minPriorityID - You can tell all Pointers to ignore any object with a priorityID lower than the minPriorityID. Useful when stacking UI layers. Set to zero to disable.
|
20481
|
+
* @default
|
20482
|
+
*/
|
20483
|
+
this.minPriorityID = 0;
|
20484
|
+
|
20210
20485
|
/**
|
20211
20486
|
* A list of interactive objects. Te InputHandler components add and remove themselves from this.
|
20212
20487
|
* @property {Phaser.ArrayList} interactiveItems
|
@@ -20324,14 +20599,19 @@ Phaser.Input.prototype = {
|
|
20324
20599
|
this.gamepad.stop();
|
20325
20600
|
// this.gestures.stop();
|
20326
20601
|
|
20602
|
+
this.moveCallbacks = [];
|
20603
|
+
// DEPRECATED
|
20327
20604
|
this.moveCallback = null;
|
20328
20605
|
|
20329
20606
|
},
|
20330
20607
|
|
20331
20608
|
/**
|
20609
|
+
* DEPRECATED: This method will be removed in a future major point release. Please use Input.addMoveCallback instead.
|
20610
|
+
*
|
20332
20611
|
* Sets a callback that is fired every time the activePointer receives a DOM move event such as a mousemove or touchmove.
|
20333
20612
|
* It will be called every time the activePointer moves, which in a multi-touch game can be a lot of times, so this is best
|
20334
20613
|
* to only use if you've limited input to a single pointer (i.e. mouse or touch)
|
20614
|
+
*
|
20335
20615
|
* @method Phaser.Input#setMoveCallback
|
20336
20616
|
* @param {function} callback - The callback that will be called each time the activePointer receives a DOM move event.
|
20337
20617
|
* @param {object} callbackContext - The context in which the callback will be called.
|
@@ -20343,6 +20623,41 @@ Phaser.Input.prototype = {
|
|
20343
20623
|
|
20344
20624
|
},
|
20345
20625
|
|
20626
|
+
/**
|
20627
|
+
* Adds a callback that is fired every time the activePointer receives a DOM move event such as a mousemove or touchmove.
|
20628
|
+
* It will be called every time the activePointer moves, which in a multi-touch game can be a lot of times, so this is best
|
20629
|
+
* to only use if you've limited input to a single pointer (i.e. mouse or touch).
|
20630
|
+
* The callback is added to the Phaser.Input.moveCallbacks array and should be removed with Phaser.Input.deleteMoveCallback.
|
20631
|
+
*
|
20632
|
+
* @method Phaser.Input#addMoveCallback
|
20633
|
+
* @param {function} callback - The callback that will be called each time the activePointer receives a DOM move event.
|
20634
|
+
* @param {object} callbackContext - The context in which the callback will be called.
|
20635
|
+
* @return {number} The index of the callback entry. Use this index when calling Input.deleteMoveCallback.
|
20636
|
+
*/
|
20637
|
+
addMoveCallback: function (callback, callbackContext) {
|
20638
|
+
|
20639
|
+
return this.moveCallbacks.push( { callback: callback, context: callbackContext }) - 1;
|
20640
|
+
|
20641
|
+
},
|
20642
|
+
|
20643
|
+
/**
|
20644
|
+
* Adds a callback that is fired every time the activePointer receives a DOM move event such as a mousemove or touchmove.
|
20645
|
+
* It will be called every time the activePointer moves, which in a multi-touch game can be a lot of times, so this is best
|
20646
|
+
* to only use if you've limited input to a single pointer (i.e. mouse or touch).
|
20647
|
+
* The callback is added to the Phaser.Input.moveCallbacks array and should be removed with Phaser.Input.deleteMoveCallback.
|
20648
|
+
*
|
20649
|
+
* @method Phaser.Input#deleteMoveCallback
|
20650
|
+
* @param {number} index - The index of the callback to remove.
|
20651
|
+
*/
|
20652
|
+
deleteMoveCallback: function (index) {
|
20653
|
+
|
20654
|
+
if (this.moveCallbacks[index])
|
20655
|
+
{
|
20656
|
+
this.moveCallbacks.splice(index, 1);
|
20657
|
+
}
|
20658
|
+
|
20659
|
+
},
|
20660
|
+
|
20346
20661
|
/**
|
20347
20662
|
* Add a new Pointer object to the Input Manager. By default Input creates 3 pointer objects: mousePointer, pointer1 and pointer2.
|
20348
20663
|
* If you need more then use this to create a new one, up to a maximum of 10.
|
@@ -20461,6 +20776,7 @@ Phaser.Input.prototype = {
|
|
20461
20776
|
this.onUp = new Phaser.Signal();
|
20462
20777
|
this.onTap = new Phaser.Signal();
|
20463
20778
|
this.onHold = new Phaser.Signal();
|
20779
|
+
this.moveCallbacks = [];
|
20464
20780
|
}
|
20465
20781
|
|
20466
20782
|
this._pollCounter = 0;
|
@@ -20612,18 +20928,56 @@ Phaser.Input.prototype = {
|
|
20612
20928
|
},
|
20613
20929
|
|
20614
20930
|
/**
|
20615
|
-
* Get the Pointer object whos
|
20931
|
+
* Get the Pointer object whos `identifier` property matches the given identifier value.
|
20932
|
+
* The identifier property is not set until the Pointer has been used at least once, as its populated by the DOM event.
|
20933
|
+
* Also it can change every time you press the pointer down, and is not fixed once set.
|
20934
|
+
* Note: Not all browsers set the identifier property and it's not part of the W3C spec, so you may need getPointerFromId instead.
|
20935
|
+
*
|
20616
20936
|
* @method Phaser.Input#getPointerFromIdentifier
|
20617
20937
|
* @param {number} identifier - The Pointer.identifier value to search for.
|
20618
20938
|
* @return {Phaser.Pointer} A Pointer object or null if no Pointer object matches the requested identifier.
|
20619
20939
|
*/
|
20620
20940
|
getPointerFromIdentifier: function (identifier) {
|
20621
20941
|
|
20622
|
-
if (this.pointer1.identifier
|
20942
|
+
if (this.pointer1.identifier === identifier)
|
20943
|
+
{
|
20944
|
+
return this.pointer1;
|
20945
|
+
}
|
20946
|
+
else if (this.pointer2.identifier === identifier)
|
20947
|
+
{
|
20948
|
+
return this.pointer2;
|
20949
|
+
}
|
20950
|
+
else
|
20951
|
+
{
|
20952
|
+
for (var i = 3; i <= 10; i++)
|
20953
|
+
{
|
20954
|
+
if (this['pointer' + i] && this['pointer' + i].identifier === identifier)
|
20955
|
+
{
|
20956
|
+
return this['pointer' + i];
|
20957
|
+
}
|
20958
|
+
}
|
20959
|
+
}
|
20960
|
+
|
20961
|
+
return null;
|
20962
|
+
|
20963
|
+
},
|
20964
|
+
|
20965
|
+
/**
|
20966
|
+
* Get the Pointer object whos `pointerId` property matches the given value.
|
20967
|
+
* The pointerId property is not set until the Pointer has been used at least once, as its populated by the DOM event.
|
20968
|
+
* Also it can change every time you press the pointer down if the browser recycles it.
|
20969
|
+
*
|
20970
|
+
* @method Phaser.Input#getPointerFromId
|
20971
|
+
* @param {number} pointerId - The Pointer.pointerId value to search for.
|
20972
|
+
* @return {Phaser.Pointer} A Pointer object or null if no Pointer object matches the requested identifier.
|
20973
|
+
*/
|
20974
|
+
getPointerFromId: function (pointerId) {
|
20975
|
+
|
20976
|
+
if (this.pointer1.pointerId === pointerId)
|
20623
20977
|
{
|
20624
20978
|
return this.pointer1;
|
20625
20979
|
}
|
20626
|
-
else if (this.pointer2.
|
20980
|
+
else if (this.pointer2.pointerId === pointerId)
|
20627
20981
|
{
|
20628
20982
|
return this.pointer2;
|
20629
20983
|
}
|
@@ -20631,7 +20985,7 @@ Phaser.Input.prototype = {
|
|
20631
20985
|
{
|
20632
20986
|
for (var i = 3; i <= 10; i++)
|
20633
20987
|
{
|
20634
|
-
if (this['pointer' + i] && this['pointer' + i].
|
20988
|
+
if (this['pointer' + i] && this['pointer' + i].pointerId === pointerId)
|
20635
20989
|
{
|
20636
20990
|
return this['pointer' + i];
|
20637
20991
|
}
|
@@ -21072,12 +21426,12 @@ Phaser.Key.prototype = {
|
|
21072
21426
|
/**
|
21073
21427
|
* Returns the "just pressed" state of the Key. Just pressed is considered true if the key was pressed down within the duration given (default 250ms)
|
21074
21428
|
* @method Phaser.Key#justPressed
|
21075
|
-
* @param {number} [duration=
|
21429
|
+
* @param {number} [duration=50] - The duration below which the key is considered as being just pressed.
|
21076
21430
|
* @return {boolean} True if the key is just pressed otherwise false.
|
21077
21431
|
*/
|
21078
21432
|
justPressed: function (duration) {
|
21079
21433
|
|
21080
|
-
if (typeof duration === "undefined") { duration =
|
21434
|
+
if (typeof duration === "undefined") { duration = 50; }
|
21081
21435
|
|
21082
21436
|
return (this.isDown && this.duration < duration);
|
21083
21437
|
|
@@ -21086,12 +21440,12 @@ Phaser.Key.prototype = {
|
|
21086
21440
|
/**
|
21087
21441
|
* Returns the "just released" state of the Key. Just released is considered as being true if the key was released within the duration given (default 250ms)
|
21088
21442
|
* @method Phaser.Key#justReleased
|
21089
|
-
* @param {number} [duration=
|
21443
|
+
* @param {number} [duration=50] - The duration below which the key is considered as being just released.
|
21090
21444
|
* @return {boolean} True if the key is just released otherwise false.
|
21091
21445
|
*/
|
21092
21446
|
justReleased: function (duration) {
|
21093
21447
|
|
21094
|
-
if (typeof duration === "undefined") { duration =
|
21448
|
+
if (typeof duration === "undefined") { duration = 50; }
|
21095
21449
|
|
21096
21450
|
return (!this.isDown && ((this.game.time.now - this.timeUp) < duration));
|
21097
21451
|
|
@@ -21489,11 +21843,13 @@ Phaser.Keyboard.prototype = {
|
|
21489
21843
|
*
|
21490
21844
|
* @method Phaser.Keyboard#justPressed
|
21491
21845
|
* @param {number} keycode - The keycode of the key to remove, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR
|
21492
|
-
* @param {number} [duration=
|
21846
|
+
* @param {number} [duration=50] - The duration below which the key is considered as being just pressed.
|
21493
21847
|
* @return {boolean} True if the key is just pressed otherwise false.
|
21494
21848
|
*/
|
21495
21849
|
justPressed: function (keycode, duration) {
|
21496
21850
|
|
21851
|
+
if (typeof duration === 'undefined') { duration = 50; }
|
21852
|
+
|
21497
21853
|
if (this._keys[keycode])
|
21498
21854
|
{
|
21499
21855
|
return this._keys[keycode].justPressed(duration);
|
@@ -21510,11 +21866,13 @@ Phaser.Keyboard.prototype = {
|
|
21510
21866
|
*
|
21511
21867
|
* @method Phaser.Keyboard#justReleased
|
21512
21868
|
* @param {number} keycode - The keycode of the key to remove, i.e. Phaser.Keyboard.UP or Phaser.Keyboard.SPACEBAR
|
21513
|
-
* @param {number} [duration=
|
21869
|
+
* @param {number} [duration=50] - The duration below which the key is considered as being just released.
|
21514
21870
|
* @return {boolean} True if the key is just released otherwise false.
|
21515
21871
|
*/
|
21516
21872
|
justReleased: function (keycode, duration) {
|
21517
21873
|
|
21874
|
+
if (typeof duration === 'undefined') { duration = 50; }
|
21875
|
+
|
21518
21876
|
if (this._keys[keycode])
|
21519
21877
|
{
|
21520
21878
|
return this._keys[keycode].justReleased(duration);
|
@@ -21687,6 +22045,16 @@ Phaser.Mouse = function (game) {
|
|
21687
22045
|
*/
|
21688
22046
|
this.mouseUpCallback = null;
|
21689
22047
|
|
22048
|
+
/**
|
22049
|
+
* @property {function} mouseOutCallback - A callback that can be fired when the mouse is no longer over the game canvas.
|
22050
|
+
*/
|
22051
|
+
this.mouseOutCallback = null;
|
22052
|
+
|
22053
|
+
/**
|
22054
|
+
* @property {function} mouseOverCallback - A callback that can be fired when the mouse enters the game canvas (usually after a mouseout).
|
22055
|
+
*/
|
22056
|
+
this.mouseOverCallback = null;
|
22057
|
+
|
21690
22058
|
/**
|
21691
22059
|
* @property {boolean} capture - If true the DOM mouse events will have event.preventDefault applied to them, if false they will propogate fully.
|
21692
22060
|
*/
|
@@ -21710,6 +22078,12 @@ Phaser.Mouse = function (game) {
|
|
21710
22078
|
*/
|
21711
22079
|
this.locked = false;
|
21712
22080
|
|
22081
|
+
/**
|
22082
|
+
* @property {boolean} stopOnGameOut - If true Pointer.stop will be called if the mouse leaves the game canvas.
|
22083
|
+
* @default
|
22084
|
+
*/
|
22085
|
+
this.stopOnGameOut = false;
|
22086
|
+
|
21713
22087
|
/**
|
21714
22088
|
* @property {Phaser.Signal} pointerLock - This event is dispatched when the browser enters or leaves pointer lock state.
|
21715
22089
|
* @default
|
@@ -21740,6 +22114,18 @@ Phaser.Mouse = function (game) {
|
|
21740
22114
|
*/
|
21741
22115
|
this._onMouseUp = null;
|
21742
22116
|
|
22117
|
+
/**
|
22118
|
+
* @property {function} _onMouseOut - Internal event handler reference.
|
22119
|
+
* @private
|
22120
|
+
*/
|
22121
|
+
this._onMouseOut = null;
|
22122
|
+
|
22123
|
+
/**
|
22124
|
+
* @property {function} _onMouseOver - Internal event handler reference.
|
22125
|
+
* @private
|
22126
|
+
*/
|
22127
|
+
this._onMouseOver = null;
|
22128
|
+
|
21743
22129
|
};
|
21744
22130
|
|
21745
22131
|
/**
|
@@ -21800,9 +22186,19 @@ Phaser.Mouse.prototype = {
|
|
21800
22186
|
return _this.onMouseUp(event);
|
21801
22187
|
};
|
21802
22188
|
|
22189
|
+
this._onMouseOut = function (event) {
|
22190
|
+
return _this.onMouseOut(event);
|
22191
|
+
};
|
22192
|
+
|
22193
|
+
this._onMouseOver = function (event) {
|
22194
|
+
return _this.onMouseOver(event);
|
22195
|
+
};
|
22196
|
+
|
21803
22197
|
this.game.canvas.addEventListener('mousedown', this._onMouseDown, true);
|
21804
22198
|
this.game.canvas.addEventListener('mousemove', this._onMouseMove, true);
|
21805
22199
|
this.game.canvas.addEventListener('mouseup', this._onMouseUp, true);
|
22200
|
+
this.game.canvas.addEventListener('mouseover', this._onMouseOver, true);
|
22201
|
+
this.game.canvas.addEventListener('mouseout', this._onMouseOut, true);
|
21806
22202
|
|
21807
22203
|
},
|
21808
22204
|
|
@@ -21900,6 +22296,71 @@ Phaser.Mouse.prototype = {
|
|
21900
22296
|
|
21901
22297
|
},
|
21902
22298
|
|
22299
|
+
/**
|
22300
|
+
* The internal method that handles the mouse out event from the browser.
|
22301
|
+
*
|
22302
|
+
* @method Phaser.Mouse#onMouseOut
|
22303
|
+
* @param {MouseEvent} event - The native event from the browser. This gets stored in Mouse.event.
|
22304
|
+
*/
|
22305
|
+
onMouseOut: function (event) {
|
22306
|
+
|
22307
|
+
this.event = event;
|
22308
|
+
|
22309
|
+
if (this.capture)
|
22310
|
+
{
|
22311
|
+
event.preventDefault();
|
22312
|
+
}
|
22313
|
+
|
22314
|
+
if (this.mouseOutCallback)
|
22315
|
+
{
|
22316
|
+
this.mouseOutCallback.call(this.callbackContext, event);
|
22317
|
+
}
|
22318
|
+
|
22319
|
+
if (this.game.input.disabled || this.disabled)
|
22320
|
+
{
|
22321
|
+
return;
|
22322
|
+
}
|
22323
|
+
|
22324
|
+
this.game.input.mousePointer.withinGame = false;
|
22325
|
+
|
22326
|
+
if (this.stopOnGameOut)
|
22327
|
+
{
|
22328
|
+
event['identifier'] = 0;
|
22329
|
+
|
22330
|
+
this.game.input.mousePointer.stop(event);
|
22331
|
+
}
|
22332
|
+
|
22333
|
+
},
|
22334
|
+
|
22335
|
+
/**
|
22336
|
+
* The internal method that handles the mouse over event from the browser.
|
22337
|
+
*
|
22338
|
+
* @method Phaser.Mouse#onMouseOver
|
22339
|
+
* @param {MouseEvent} event - The native event from the browser. This gets stored in Mouse.event.
|
22340
|
+
*/
|
22341
|
+
onMouseOver: function (event) {
|
22342
|
+
|
22343
|
+
this.event = event;
|
22344
|
+
|
22345
|
+
if (this.capture)
|
22346
|
+
{
|
22347
|
+
event.preventDefault();
|
22348
|
+
}
|
22349
|
+
|
22350
|
+
if (this.mouseOverCallback)
|
22351
|
+
{
|
22352
|
+
this.mouseOverCallback.call(this.callbackContext, event);
|
22353
|
+
}
|
22354
|
+
|
22355
|
+
if (this.game.input.disabled || this.disabled)
|
22356
|
+
{
|
22357
|
+
return;
|
22358
|
+
}
|
22359
|
+
|
22360
|
+
this.game.input.mousePointer.withinGame = true;
|
22361
|
+
|
22362
|
+
},
|
22363
|
+
|
21903
22364
|
/**
|
21904
22365
|
* If the browser supports it you can request that the pointer be locked to the browser window.
|
21905
22366
|
* This is classically known as 'FPS controls', where the pointer can't leave the browser until the user presses an exit key.
|
@@ -21978,6 +22439,8 @@ Phaser.Mouse.prototype = {
|
|
21978
22439
|
this.game.canvas.removeEventListener('mousedown', this._onMouseDown, true);
|
21979
22440
|
this.game.canvas.removeEventListener('mousemove', this._onMouseMove, true);
|
21980
22441
|
this.game.canvas.removeEventListener('mouseup', this._onMouseUp, true);
|
22442
|
+
this.game.canvas.removeEventListener('mouseover', this._onMouseOver, true);
|
22443
|
+
this.game.canvas.removeEventListener('mouseout', this._onMouseOut, true);
|
21981
22444
|
|
21982
22445
|
}
|
21983
22446
|
|
@@ -22189,6 +22652,42 @@ Phaser.Pointer = function (game, id) {
|
|
22189
22652
|
*/
|
22190
22653
|
this.id = id;
|
22191
22654
|
|
22655
|
+
/**
|
22656
|
+
* @property {number} type - The const type of this object.
|
22657
|
+
* @readonly
|
22658
|
+
*/
|
22659
|
+
this.type = Phaser.POINTER;
|
22660
|
+
|
22661
|
+
/**
|
22662
|
+
* @property {boolean} exists - A Pointer object that exists is allowed to be checked for physics collisions and overlaps.
|
22663
|
+
* @default
|
22664
|
+
*/
|
22665
|
+
this.exists = true;
|
22666
|
+
|
22667
|
+
/**
|
22668
|
+
* @property {number} identifier - The identifier property of the Pointer as set by the DOM event when this Pointer is started.
|
22669
|
+
* @default
|
22670
|
+
*/
|
22671
|
+
this.identifier = 0;
|
22672
|
+
|
22673
|
+
/**
|
22674
|
+
* @property {number} pointerId - The pointerId property of the Pointer as set by the DOM event when this Pointer is started. The browser can and will recycle this value.
|
22675
|
+
* @default
|
22676
|
+
*/
|
22677
|
+
this.pointerId = null;
|
22678
|
+
|
22679
|
+
/**
|
22680
|
+
* @property {any} target - The target property of the Pointer as set by the DOM event when this Pointer is started.
|
22681
|
+
* @default
|
22682
|
+
*/
|
22683
|
+
this.target = null;
|
22684
|
+
|
22685
|
+
/**
|
22686
|
+
* @property {any} button - The button property of the Pointer as set by the DOM event when this Pointer is started.
|
22687
|
+
* @default
|
22688
|
+
*/
|
22689
|
+
this.button = null;
|
22690
|
+
|
22192
22691
|
/**
|
22193
22692
|
* @property {boolean} _holdSent - Local private variable to store the status of dispatching a hold event.
|
22194
22693
|
* @private
|
@@ -22203,68 +22702,84 @@ Phaser.Pointer = function (game, id) {
|
|
22203
22702
|
this._history = [];
|
22204
22703
|
|
22205
22704
|
/**
|
22206
|
-
* @property {number}
|
22705
|
+
* @property {number} _nextDrop - Local private variable storing the time at which the next history drop should occur.
|
22207
22706
|
* @private
|
22208
|
-
* @default
|
22209
22707
|
*/
|
22210
22708
|
this._nextDrop = 0;
|
22211
22709
|
|
22212
22710
|
/**
|
22213
22711
|
* @property {boolean} _stateReset - Monitor events outside of a state reset loop.
|
22214
22712
|
* @private
|
22215
|
-
* @default
|
22216
22713
|
*/
|
22217
22714
|
this._stateReset = false;
|
22218
22715
|
|
22219
22716
|
/**
|
22220
|
-
* @property {boolean} withinGame - true if the Pointer is
|
22717
|
+
* @property {boolean} withinGame - true if the Pointer is over the game canvas, otherwise false.
|
22221
22718
|
*/
|
22222
22719
|
this.withinGame = false;
|
22223
22720
|
|
22224
22721
|
/**
|
22225
|
-
* @property {number} clientX - The horizontal coordinate of
|
22226
|
-
* @default
|
22722
|
+
* @property {number} clientX - The horizontal coordinate of the Pointer within the application's client area at which the event occurred (as opposed to the coordinates within the page).
|
22227
22723
|
*/
|
22228
22724
|
this.clientX = -1;
|
22229
22725
|
|
22230
22726
|
/**
|
22231
|
-
* @property {number} clientY - The vertical coordinate of
|
22232
|
-
* @default
|
22727
|
+
* @property {number} clientY - The vertical coordinate of the Pointer within the application's client area at which the event occurred (as opposed to the coordinates within the page).
|
22233
22728
|
*/
|
22234
22729
|
this.clientY = -1;
|
22235
22730
|
|
22236
22731
|
/**
|
22237
|
-
* @property {number} pageX - The horizontal coordinate of
|
22238
|
-
* @default
|
22732
|
+
* @property {number} pageX - The horizontal coordinate of the Pointer relative to whole document.
|
22239
22733
|
*/
|
22240
22734
|
this.pageX = -1;
|
22241
22735
|
|
22242
22736
|
/**
|
22243
|
-
* @property {number} pageY - The vertical coordinate of
|
22244
|
-
* @default
|
22737
|
+
* @property {number} pageY - The vertical coordinate of the Pointer relative to whole document.
|
22245
22738
|
*/
|
22246
22739
|
this.pageY = -1;
|
22247
22740
|
|
22248
22741
|
/**
|
22249
|
-
* @property {number} screenX - The horizontal coordinate of
|
22250
|
-
* @default
|
22742
|
+
* @property {number} screenX - The horizontal coordinate of the Pointer relative to the screen.
|
22251
22743
|
*/
|
22252
22744
|
this.screenX = -1;
|
22253
22745
|
|
22254
22746
|
/**
|
22255
|
-
* @property {number} screenY - The vertical coordinate of
|
22256
|
-
* @default
|
22747
|
+
* @property {number} screenY - The vertical coordinate of the Pointer relative to the screen.
|
22257
22748
|
*/
|
22258
22749
|
this.screenY = -1;
|
22259
22750
|
|
22260
22751
|
/**
|
22261
|
-
* @property {number}
|
22752
|
+
* @property {number} rawMovementX - The horizontal raw relative movement of the Pointer in pixels since last event.
|
22753
|
+
* @default
|
22754
|
+
*/
|
22755
|
+
this.rawMovementX = 0;
|
22756
|
+
|
22757
|
+
/**
|
22758
|
+
* @property {number} rawMovementY - The vertical raw relative movement of the Pointer in pixels since last event.
|
22759
|
+
* @default
|
22760
|
+
*/
|
22761
|
+
this.rawMovementY = 0;
|
22762
|
+
|
22763
|
+
/**
|
22764
|
+
* @property {number} movementX - The horizontal processed relative movement of the Pointer in pixels since last event.
|
22765
|
+
* @default
|
22766
|
+
*/
|
22767
|
+
this.movementX = 0;
|
22768
|
+
|
22769
|
+
/**
|
22770
|
+
* @property {number} movementY - The vertical processed relative movement of the Pointer in pixels since last event.
|
22771
|
+
* @default
|
22772
|
+
*/
|
22773
|
+
this.movementY = 0;
|
22774
|
+
|
22775
|
+
/**
|
22776
|
+
* @property {number} x - The horizontal coordinate of the Pointer. This value is automatically scaled based on the game scale.
|
22262
22777
|
* @default
|
22263
22778
|
*/
|
22264
22779
|
this.x = -1;
|
22265
22780
|
|
22266
22781
|
/**
|
22267
|
-
* @property {number} y - The vertical coordinate of
|
22782
|
+
* @property {number} y - The vertical coordinate of the Pointer. This value is automatically scaled based on the game scale.
|
22268
22783
|
* @default
|
22269
22784
|
*/
|
22270
22785
|
this.y = -1;
|
@@ -22312,7 +22827,7 @@ Phaser.Pointer = function (game, id) {
|
|
22312
22827
|
this.totalTouches = 0;
|
22313
22828
|
|
22314
22829
|
/**
|
22315
|
-
* @property {number} msSinceLastClick - The number of
|
22830
|
+
* @property {number} msSinceLastClick - The number of milliseconds since the last click or touch event.
|
22316
22831
|
* @default
|
22317
22832
|
*/
|
22318
22833
|
this.msSinceLastClick = Number.MAX_VALUE;
|
@@ -22363,10 +22878,15 @@ Phaser.Pointer.prototype = {
|
|
22363
22878
|
/**
|
22364
22879
|
* Called when the Pointer is pressed onto the touchscreen.
|
22365
22880
|
* @method Phaser.Pointer#start
|
22366
|
-
* @param {
|
22881
|
+
* @param {any} event - The DOM event from the browser.
|
22367
22882
|
*/
|
22368
22883
|
start: function (event) {
|
22369
22884
|
|
22885
|
+
if (event['pointerId'])
|
22886
|
+
{
|
22887
|
+
this.pointerId = event.pointerId;
|
22888
|
+
}
|
22889
|
+
|
22370
22890
|
this.identifier = event.identifier;
|
22371
22891
|
this.target = event.target;
|
22372
22892
|
|
@@ -22484,6 +23004,15 @@ Phaser.Pointer.prototype = {
|
|
22484
23004
|
this.screenX = event.screenX;
|
22485
23005
|
this.screenY = event.screenY;
|
22486
23006
|
|
23007
|
+
if (this.isMouse && this.game.input.mouse.locked && !fromClick)
|
23008
|
+
{
|
23009
|
+
this.rawMovementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
|
23010
|
+
this.rawMovementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
|
23011
|
+
|
23012
|
+
this.movementX += this.rawMovementX;
|
23013
|
+
this.movementY += this.rawMovementY;
|
23014
|
+
}
|
23015
|
+
|
22487
23016
|
this.x = (this.pageX - this.game.stage.offset.x) * this.game.input.scale.x;
|
22488
23017
|
this.y = (this.pageY - this.game.stage.offset.y) * this.game.input.scale.y;
|
22489
23018
|
|
@@ -22491,7 +23020,7 @@ Phaser.Pointer.prototype = {
|
|
22491
23020
|
this.circle.x = this.x;
|
22492
23021
|
this.circle.y = this.y;
|
22493
23022
|
|
22494
|
-
if (this.game.input.multiInputOverride
|
23023
|
+
if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.currentPointers === 0))
|
22495
23024
|
{
|
22496
23025
|
this.game.input.activePointer = this;
|
22497
23026
|
this.game.input.x = this.x;
|
@@ -22501,17 +23030,27 @@ Phaser.Pointer.prototype = {
|
|
22501
23030
|
this.game.input.circle.y = this.game.input.y;
|
22502
23031
|
}
|
22503
23032
|
|
23033
|
+
this.withinGame = this.game.scale.bounds.contains(this.pageX, this.pageY);
|
23034
|
+
|
22504
23035
|
// If the game is paused we don't process any target objects or callbacks
|
22505
23036
|
if (this.game.paused)
|
22506
23037
|
{
|
22507
23038
|
return this;
|
22508
23039
|
}
|
22509
23040
|
|
23041
|
+
// DEPRECATED - Soon to be removed
|
22510
23042
|
if (this.game.input.moveCallback)
|
22511
23043
|
{
|
22512
23044
|
this.game.input.moveCallback.call(this.game.input.moveCallbackContext, this, this.x, this.y);
|
22513
23045
|
}
|
22514
23046
|
|
23047
|
+
var i = this.game.input.moveCallbacks.length;
|
23048
|
+
|
23049
|
+
while (i--)
|
23050
|
+
{
|
23051
|
+
this.game.input.moveCallbacks[i].callback.call(this.game.input.moveCallbacks[i].context, this, this.x, this.y);
|
23052
|
+
}
|
23053
|
+
|
22515
23054
|
// Easy out if we're dragging something and it still exists
|
22516
23055
|
if (this.targetObject !== null && this.targetObject.isDragged === true)
|
22517
23056
|
{
|
@@ -22601,6 +23140,7 @@ Phaser.Pointer.prototype = {
|
|
22601
23140
|
|
22602
23141
|
/**
|
22603
23142
|
* Called when the Pointer leaves the target area.
|
23143
|
+
*
|
22604
23144
|
* @method Phaser.Pointer#leave
|
22605
23145
|
* @param {MouseEvent|PointerEvent|TouchEvent} event - The event passed up from the input handler.
|
22606
23146
|
*/
|
@@ -22613,6 +23153,7 @@ Phaser.Pointer.prototype = {
|
|
22613
23153
|
|
22614
23154
|
/**
|
22615
23155
|
* Called when the Pointer leaves the touchscreen.
|
23156
|
+
*
|
22616
23157
|
* @method Phaser.Pointer#stop
|
22617
23158
|
* @param {MouseEvent|PointerEvent|TouchEvent} event - The event passed up from the input handler.
|
22618
23159
|
*/
|
@@ -22626,7 +23167,7 @@ Phaser.Pointer.prototype = {
|
|
22626
23167
|
|
22627
23168
|
this.timeUp = this.game.time.now;
|
22628
23169
|
|
22629
|
-
if (this.game.input.multiInputOverride
|
23170
|
+
if (this.game.input.multiInputOverride === Phaser.Input.MOUSE_OVERRIDES_TOUCH || this.game.input.multiInputOverride === Phaser.Input.MOUSE_TOUCH_COMBINE || (this.game.input.multiInputOverride === Phaser.Input.TOUCH_OVERRIDES_MOUSE && this.game.input.currentPointers === 0))
|
22630
23171
|
{
|
22631
23172
|
this.game.input.onUp.dispatch(this, event);
|
22632
23173
|
|
@@ -22658,6 +23199,8 @@ Phaser.Pointer.prototype = {
|
|
22658
23199
|
this.withinGame = false;
|
22659
23200
|
this.isDown = false;
|
22660
23201
|
this.isUp = true;
|
23202
|
+
this.pointerId = null;
|
23203
|
+
this.identifier = null;
|
22661
23204
|
|
22662
23205
|
this.positionUp.setTo(this.x, this.y);
|
22663
23206
|
|
@@ -22717,6 +23260,7 @@ Phaser.Pointer.prototype = {
|
|
22717
23260
|
this.active = false;
|
22718
23261
|
}
|
22719
23262
|
|
23263
|
+
this.pointerId = null;
|
22720
23264
|
this.identifier = null;
|
22721
23265
|
this.isDown = false;
|
22722
23266
|
this.isUp = true;
|
@@ -22732,6 +23276,17 @@ Phaser.Pointer.prototype = {
|
|
22732
23276
|
|
22733
23277
|
this.targetObject = null;
|
22734
23278
|
|
23279
|
+
},
|
23280
|
+
|
23281
|
+
/**
|
23282
|
+
* Resets the movementX and movementY properties. Use in your update handler after retrieving the values.
|
23283
|
+
* @method Phaser.Pointer#resetMovement
|
23284
|
+
*/
|
23285
|
+
resetMovement: function() {
|
23286
|
+
|
23287
|
+
this.movementX = 0;
|
23288
|
+
this.movementY = 0;
|
23289
|
+
|
22735
23290
|
}
|
22736
23291
|
|
22737
23292
|
};
|
@@ -23051,6 +23606,8 @@ Phaser.Touch.prototype = {
|
|
23051
23606
|
*/
|
23052
23607
|
onTouchEnter: function (event) {
|
23053
23608
|
|
23609
|
+
console.log('touch enter', event);
|
23610
|
+
|
23054
23611
|
this.event = event;
|
23055
23612
|
|
23056
23613
|
if (this.touchEnterCallback)
|
@@ -23182,8 +23739,7 @@ Phaser.Touch.prototype.constructor = Phaser.Touch;
|
|
23182
23739
|
* HTML5 GAMEPAD API SUPPORT IS AT AN EXPERIMENTAL STAGE!
|
23183
23740
|
* At moment of writing this (end of 2013) only Chrome supports parts of it out of the box. Firefox supports it
|
23184
23741
|
* via prefs flags (about:config, search gamepad). The browsers map the same controllers differently.
|
23185
|
-
* This class has
|
23186
|
-
* XBOX 360 controller.
|
23742
|
+
* This class has constants for Windows 7 Chrome mapping of XBOX 360 controller.
|
23187
23743
|
*
|
23188
23744
|
* @class Phaser.Gamepad
|
23189
23745
|
* @constructor
|
@@ -24668,6 +25224,12 @@ Phaser.InputHandler = function (sprite) {
|
|
24668
25224
|
*/
|
24669
25225
|
this.consumePointerEvent = false;
|
24670
25226
|
|
25227
|
+
/**
|
25228
|
+
* @property {boolean} _dragPhase - Internal cache var.
|
25229
|
+
* @private
|
25230
|
+
*/
|
25231
|
+
this._dragPhase = false;
|
25232
|
+
|
24671
25233
|
/**
|
24672
25234
|
* @property {boolean} _wasEnabled - Internal cache var.
|
24673
25235
|
* @private
|
@@ -24776,6 +25338,11 @@ Phaser.InputHandler.prototype = {
|
|
24776
25338
|
*/
|
24777
25339
|
addedToGroup: function () {
|
24778
25340
|
|
25341
|
+
if (this._dragPhase)
|
25342
|
+
{
|
25343
|
+
return;
|
25344
|
+
}
|
25345
|
+
|
24779
25346
|
if (this._wasEnabled && !this.enabled)
|
24780
25347
|
{
|
24781
25348
|
this.start();
|
@@ -24791,6 +25358,11 @@ Phaser.InputHandler.prototype = {
|
|
24791
25358
|
*/
|
24792
25359
|
removedFromGroup: function () {
|
24793
25360
|
|
25361
|
+
if (this._dragPhase)
|
25362
|
+
{
|
25363
|
+
return;
|
25364
|
+
}
|
25365
|
+
|
24794
25366
|
if (this.enabled)
|
24795
25367
|
{
|
24796
25368
|
this._wasEnabled = true;
|
@@ -24889,7 +25461,7 @@ Phaser.InputHandler.prototype = {
|
|
24889
25461
|
*/
|
24890
25462
|
validForInput: function (highestID, highestRenderID) {
|
24891
25463
|
|
24892
|
-
if (this.sprite.scale.x === 0 || this.sprite.scale.y === 0)
|
25464
|
+
if (this.sprite.scale.x === 0 || this.sprite.scale.y === 0 || this.priorityID < this.game.input.minPriorityID)
|
24893
25465
|
{
|
24894
25466
|
return false;
|
24895
25467
|
}
|
@@ -25410,7 +25982,7 @@ Phaser.InputHandler.prototype = {
|
|
25410
25982
|
}
|
25411
25983
|
|
25412
25984
|
// Stop drag
|
25413
|
-
if (this.draggable && this.isDragged && this._draggedPointerID
|
25985
|
+
if (this.draggable && this.isDragged && this._draggedPointerID === pointer.id)
|
25414
25986
|
{
|
25415
25987
|
this.stopDrag(pointer);
|
25416
25988
|
}
|
@@ -25697,6 +26269,7 @@ Phaser.InputHandler.prototype = {
|
|
25697
26269
|
|
25698
26270
|
if (this.bringToTop)
|
25699
26271
|
{
|
26272
|
+
this._dragPhase = true;
|
25700
26273
|
this.sprite.bringToTop();
|
25701
26274
|
}
|
25702
26275
|
|
@@ -25714,6 +26287,7 @@ Phaser.InputHandler.prototype = {
|
|
25714
26287
|
this.isDragged = false;
|
25715
26288
|
this._draggedPointerID = -1;
|
25716
26289
|
this._pointerData[pointer.id].isDragged = false;
|
26290
|
+
this._dragPhase = false;
|
25717
26291
|
|
25718
26292
|
if (this.snapOnRelease)
|
25719
26293
|
{
|
@@ -27098,7 +27672,7 @@ Phaser.BitmapData.prototype = {
|
|
27098
27672
|
|
27099
27673
|
result = callback.call(callbackContext, pixel, tx, ty);
|
27100
27674
|
|
27101
|
-
if (result !== false && result !== null)
|
27675
|
+
if (result !== false && result !== null && result !== undefined)
|
27102
27676
|
{
|
27103
27677
|
this.setPixel32(tx, ty, result.r, result.g, result.b, result.a, false);
|
27104
27678
|
dirty = true;
|
@@ -27386,6 +27960,8 @@ Phaser.BitmapData.prototype = {
|
|
27386
27960
|
|
27387
27961
|
/**
|
27388
27962
|
* Get the color of a specific pixel in the context into a color object.
|
27963
|
+
* If you have drawn anything to the BitmapData since it was created you must call BitmapData.update to refresh the array buffer,
|
27964
|
+
* otherwise this may return out of date color values, or worse - throw a run-time error as it tries to access an array element that doesn't exist.
|
27389
27965
|
*
|
27390
27966
|
* @method Phaser.BitmapData#getPixel
|
27391
27967
|
* @param {number} x - The x coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData.
|
@@ -27418,6 +27994,8 @@ Phaser.BitmapData.prototype = {
|
|
27418
27994
|
|
27419
27995
|
/**
|
27420
27996
|
* Get the color of a specific pixel including its alpha value.
|
27997
|
+
* If you have drawn anything to the BitmapData since it was created you must call BitmapData.update to refresh the array buffer,
|
27998
|
+
* otherwise this may return out of date color values, or worse - throw a run-time error as it tries to access an array element that doesn't exist.
|
27421
27999
|
* Note that on little-endian systems the format is 0xAABBGGRR and on big-endian the format is 0xRRGGBBAA.
|
27422
28000
|
*
|
27423
28001
|
* @method Phaser.BitmapData#getPixel32
|
@@ -27436,6 +28014,8 @@ Phaser.BitmapData.prototype = {
|
|
27436
28014
|
|
27437
28015
|
/**
|
27438
28016
|
* Get the color of a specific pixel including its alpha value as a color object containing r,g,b,a and rgba properties.
|
28017
|
+
* If you have drawn anything to the BitmapData since it was created you must call BitmapData.update to refresh the array buffer,
|
28018
|
+
* otherwise this may return out of date color values, or worse - throw a run-time error as it tries to access an array element that doesn't exist.
|
27439
28019
|
*
|
27440
28020
|
* @method Phaser.BitmapData#getPixelRGB
|
27441
28021
|
* @param {number} x - The x coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData.
|
@@ -27611,13 +28191,35 @@ Phaser.BitmapData.prototype = {
|
|
27611
28191
|
|
27612
28192
|
},
|
27613
28193
|
|
28194
|
+
/**
|
28195
|
+
* Draws a filled Rectangle to the BitmapData at the given x, y coordinates and width / height in size.
|
28196
|
+
*
|
28197
|
+
* @method Phaser.BitmapData#rect
|
28198
|
+
* @param {number} x - The x coordinate of the top-left of the Rectangle.
|
28199
|
+
* @param {number} y - The y coordinate of the top-left of the Rectangle.
|
28200
|
+
* @param {number} width - The width of the Rectangle.
|
28201
|
+
* @param {number} height - The height of the Rectangle.
|
28202
|
+
* @param {string} [fillStyle] - If set the context fillStyle will be set to this value before the rect is drawn.
|
28203
|
+
*/
|
28204
|
+
rect: function (x, y, width, height, fillStyle) {
|
28205
|
+
|
28206
|
+
if (typeof fillStyle !== 'undefined')
|
28207
|
+
{
|
28208
|
+
this.context.fillStyle = fillStyle;
|
28209
|
+
}
|
28210
|
+
|
28211
|
+
this.context.fillRect(x, y, width, height);
|
28212
|
+
this.context.fill();
|
28213
|
+
|
28214
|
+
},
|
28215
|
+
|
27614
28216
|
/**
|
27615
28217
|
* Draws a filled Circle to the BitmapData at the given x, y coordinates and radius in size.
|
27616
28218
|
*
|
27617
28219
|
* @method Phaser.BitmapData#circle
|
27618
|
-
* @param {number} x - The x coordinate to draw the Circle at.
|
27619
|
-
* @param {number} y - The y coordinate to draw the Circle at.
|
27620
|
-
* @param {number} radius - The radius of the Circle.
|
28220
|
+
* @param {number} x - The x coordinate to draw the Circle at. This is the center of the circle.
|
28221
|
+
* @param {number} y - The y coordinate to draw the Circle at. This is the center of the circle.
|
28222
|
+
* @param {number} radius - The radius of the Circle in pixels. The radius is half the diameter.
|
27621
28223
|
* @param {string} [fillStyle] - If set the context fillStyle will be set to this value before the circle is drawn.
|
27622
28224
|
*/
|
27623
28225
|
circle: function (x, y, radius, fillStyle) {
|
@@ -28071,6 +28673,9 @@ Phaser.Sprite.prototype.loadTexture = function (key, frame) {
|
|
28071
28673
|
* Crop allows you to crop the texture used to display this Sprite.
|
28072
28674
|
* Cropping takes place from the top-left of the Sprite and can be modified in real-time by providing an updated rectangle object.
|
28073
28675
|
* Note that cropping a Sprite will reset its animation to the first frame. You cannot currently crop an animated Sprite.
|
28676
|
+
* The rectangle object given to this method can be either a Phaser.Rectangle or any object so long as it has public x, y, width and height properties.
|
28677
|
+
* Please note that the rectangle object given is not duplicated by this method, but rather the Image uses a reference to the rectangle.
|
28678
|
+
* Keep this in mind if assigning a rectangle in a for-loop, or when cleaning up for garbage collection.
|
28074
28679
|
*
|
28075
28680
|
* @method Phaser.Sprite#crop
|
28076
28681
|
* @memberof Phaser.Sprite
|
@@ -28755,7 +29360,7 @@ Object.defineProperty(Phaser.Sprite.prototype, "destroyPhase", {
|
|
28755
29360
|
*
|
28756
29361
|
* @constructor
|
28757
29362
|
* @param {Phaser.Game} game - A reference to the currently running game.
|
28758
|
-
* @param {number} x - The x coordinate of the
|
29363
|
+
* @param {number} x - The x coordinate of the Image. The coordinate is relative to any parent container this Image may be in.
|
28759
29364
|
* @param {number} y - The y coordinate of the Image. The coordinate is relative to any parent container this Image may be in.
|
28760
29365
|
* @param {string|Phaser.RenderTexture|Phaser.BitmapData|PIXI.Texture} key - The texture used by the Image during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture, BitmapData or PIXI.Texture.
|
28761
29366
|
* @param {string|number} frame - If this Image is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index.
|
@@ -29028,10 +29633,13 @@ Phaser.Image.prototype.loadTexture = function (key, frame) {
|
|
29028
29633
|
/**
|
29029
29634
|
* Crop allows you to crop the texture used to display this Image.
|
29030
29635
|
* Cropping takes place from the top-left of the Image and can be modified in real-time by providing an updated rectangle object.
|
29636
|
+
* The rectangle object given to this method can be either a Phaser.Rectangle or any object so long as it has public x, y, width and height properties.
|
29637
|
+
* Please note that the rectangle object given is not duplicated by this method, but rather the Image uses a reference to the rectangle.
|
29638
|
+
* Keep this in mind if assigning a rectangle in a for-loop, or when cleaning up for garbage collection.
|
29031
29639
|
*
|
29032
29640
|
* @method Phaser.Image#crop
|
29033
29641
|
* @memberof Phaser.Image
|
29034
|
-
* @param {Phaser.Rectangle} rect - The Rectangle to crop the Image to. Pass null or no parameters to clear a previously set crop rectangle.
|
29642
|
+
* @param {Phaser.Rectangle|object} rect - The Rectangle to crop the Image to. Pass null or no parameters to clear a previously set crop rectangle.
|
29035
29643
|
*/
|
29036
29644
|
Phaser.Image.prototype.crop = function(rect) {
|
29037
29645
|
|
@@ -31796,6 +32404,12 @@ Phaser.Button = function (game, x, y, key, callback, callbackContext, overFrame,
|
|
31796
32404
|
*/
|
31797
32405
|
this._onUpFrameID = null;
|
31798
32406
|
|
32407
|
+
/**
|
32408
|
+
* @property {boolean} onOverMouseOnly - If true then onOver events (such as onOverSound) will only be triggered if the Pointer object causing them was the Mouse Pointer.
|
32409
|
+
* @default
|
32410
|
+
*/
|
32411
|
+
this.onOverMouseOnly = false;
|
32412
|
+
|
31799
32413
|
/**
|
31800
32414
|
* @property {Phaser.Sound} onOverSound - The Sound to be played when this Buttons Over state is activated.
|
31801
32415
|
* @default
|
@@ -32157,6 +32771,11 @@ Phaser.Button.prototype.onInputOverHandler = function (sprite, pointer) {
|
|
32157
32771
|
this.setState(1);
|
32158
32772
|
}
|
32159
32773
|
|
32774
|
+
if (this.onOverMouseOnly && !pointer.isMouse)
|
32775
|
+
{
|
32776
|
+
return;
|
32777
|
+
}
|
32778
|
+
|
32160
32779
|
if (this.onOverSound)
|
32161
32780
|
{
|
32162
32781
|
this.onOverSound.play(this.onOverSoundMarker);
|
@@ -32166,6 +32785,7 @@ Phaser.Button.prototype.onInputOverHandler = function (sprite, pointer) {
|
|
32166
32785
|
{
|
32167
32786
|
this.onInputOver.dispatch(this, pointer);
|
32168
32787
|
}
|
32788
|
+
|
32169
32789
|
};
|
32170
32790
|
|
32171
32791
|
/**
|
@@ -32545,10 +33165,119 @@ Phaser.Graphics.prototype.drawPolygon = function (poly) {
|
|
32545
33165
|
|
32546
33166
|
};
|
32547
33167
|
|
33168
|
+
/*
|
33169
|
+
* Draws a single {Phaser.Polygon} triangle from a {Phaser.Point} array
|
33170
|
+
*
|
33171
|
+
* @method Phaser.Graphics.prototype.drawTriangle
|
33172
|
+
* @param {Array<Phaser.Point>} points - An array of Phaser.Points that make up the three vertices of this triangle
|
33173
|
+
* @param {boolean} [cull=false] - Should we check if the triangle is back-facing
|
33174
|
+
*/
|
33175
|
+
Phaser.Graphics.prototype.drawTriangle = function(points, cull) {
|
33176
|
+
|
33177
|
+
if (typeof cull === 'undefined') { cull = false; }
|
33178
|
+
|
33179
|
+
var triangle = new Phaser.Polygon(points);
|
33180
|
+
|
33181
|
+
if (cull)
|
33182
|
+
{
|
33183
|
+
var cameraToFace = new Phaser.Point(this.game.camera.x - points[0].x, this.game.camera.y - points[0].y);
|
33184
|
+
var ab = new Phaser.Point(points[1].x - points[0].x, points[1].y - points[0].y);
|
33185
|
+
var cb = new Phaser.Point(points[1].x - points[2].x, points[1].y - points[2].y);
|
33186
|
+
var faceNormal = cb.cross(ab);
|
33187
|
+
|
33188
|
+
if (cameraToFace.dot(faceNormal) > 0)
|
33189
|
+
{
|
33190
|
+
this.drawPolygon(triangle);
|
33191
|
+
}
|
33192
|
+
}
|
33193
|
+
else
|
33194
|
+
{
|
33195
|
+
this.drawPolygon(triangle);
|
33196
|
+
}
|
33197
|
+
|
33198
|
+
};
|
33199
|
+
|
33200
|
+
/*
|
33201
|
+
* Draws {Phaser.Polygon} triangles
|
33202
|
+
*
|
33203
|
+
* @method Phaser.Graphics.prototype.drawTriangles
|
33204
|
+
* @param {Array<Phaser.Point>|Array<number>} vertices - An array of Phaser.Points or numbers that make up the vertices of the triangles
|
33205
|
+
* @param {Array<number>} {indices=null} - An array of numbers that describe what order to draw the vertices in
|
33206
|
+
* @param {boolean} [cull=false] - Should we check if the triangle is back-facing
|
33207
|
+
*/
|
33208
|
+
Phaser.Graphics.prototype.drawTriangles = function(vertices, indices, cull) {
|
33209
|
+
|
33210
|
+
if (typeof cull === 'undefined') { cull = false; }
|
33211
|
+
|
33212
|
+
var point1 = new Phaser.Point();
|
33213
|
+
var point2 = new Phaser.Point();
|
33214
|
+
var point3 = new Phaser.Point();
|
33215
|
+
var points = [];
|
33216
|
+
var i;
|
33217
|
+
|
33218
|
+
if (!indices)
|
33219
|
+
{
|
33220
|
+
if (vertices[0] instanceof Phaser.Point)
|
33221
|
+
{
|
33222
|
+
for (i = 0; i < vertices.length / 3; i++)
|
33223
|
+
{
|
33224
|
+
this.drawTriangle([vertices[i * 3], vertices[i * 3 + 1], vertices[i * 3 + 2]], cull);
|
33225
|
+
}
|
33226
|
+
}
|
33227
|
+
else
|
33228
|
+
{
|
33229
|
+
for (i = 0; i < vertices.length / 6; i++)
|
33230
|
+
{
|
33231
|
+
point1.x = vertices[i * 6 + 0];
|
33232
|
+
point1.y = vertices[i * 6 + 1];
|
33233
|
+
point2.x = vertices[i * 6 + 2];
|
33234
|
+
point2.y = vertices[i * 6 + 3];
|
33235
|
+
point3.x = vertices[i * 6 + 4];
|
33236
|
+
point3.y = vertices[i * 6 + 5];
|
33237
|
+
this.drawTriangle([point1, point2, point3], cull);
|
33238
|
+
}
|
33239
|
+
}
|
33240
|
+
}
|
33241
|
+
else
|
33242
|
+
{
|
33243
|
+
if (vertices[0] instanceof Phaser.Point)
|
33244
|
+
{
|
33245
|
+
for (i = 0; i < indices.length /3; i++)
|
33246
|
+
{
|
33247
|
+
points.push(vertices[indices[i * 3 ]]);
|
33248
|
+
points.push(vertices[indices[i * 3 + 1]]);
|
33249
|
+
points.push(vertices[indices[i * 3 + 2]]);
|
33250
|
+
|
33251
|
+
if (points.length === 3)
|
33252
|
+
{
|
33253
|
+
this.drawTriangle(points, cull);
|
33254
|
+
points = [];
|
33255
|
+
}
|
33256
|
+
}
|
33257
|
+
}
|
33258
|
+
else
|
33259
|
+
{
|
33260
|
+
for (i = 0; i < indices.length; i++)
|
33261
|
+
{
|
33262
|
+
point1.x = vertices[indices[i] * 2];
|
33263
|
+
point1.y = vertices[indices[i] * 2 + 1];
|
33264
|
+
points.push(point1.copyTo({}));
|
33265
|
+
|
33266
|
+
if (points.length === 3)
|
33267
|
+
{
|
33268
|
+
this.drawTriangle(points, cull);
|
33269
|
+
points = [];
|
33270
|
+
}
|
33271
|
+
}
|
33272
|
+
}
|
33273
|
+
}
|
33274
|
+
};
|
33275
|
+
|
32548
33276
|
/**
|
32549
33277
|
* Indicates the rotation of the Graphics, in degrees, from its original orientation. Values from 0 to 180 represent clockwise rotation; values from 0 to -180 represent counterclockwise rotation.
|
32550
33278
|
* Values outside this range are added to or subtracted from 360 to obtain a value within the range. For example, the statement player.angle = 450 is the same as player.angle = 90.
|
32551
33279
|
* If you wish to work in radians instead of degrees use the property Sprite.rotation instead.
|
33280
|
+
*
|
32552
33281
|
* @name Phaser.Graphics#angle
|
32553
33282
|
* @property {number} angle - Gets or sets the angle of rotation in degrees.
|
32554
33283
|
*/
|
@@ -32623,8 +33352,13 @@ Object.defineProperty(Phaser.Graphics.prototype, "destroyPhase", {
|
|
32623
33352
|
* @param {string} key - Internal Phaser reference key for the render texture.
|
32624
33353
|
* @param {number} [width=100] - The width of the render texture.
|
32625
33354
|
* @param {number} [height=100] - The height of the render texture.
|
33355
|
+
* @param {string} [key=''] - The key of the RenderTexture in the Cache, if stored there.
|
33356
|
+
* @param {number} [scaleMode=Phaser.scaleModes.DEFAULT] - One of the Phaser.scaleModes consts.
|
32626
33357
|
*/
|
32627
|
-
Phaser.RenderTexture = function (game, width, height, key) {
|
33358
|
+
Phaser.RenderTexture = function (game, width, height, key, scaleMode) {
|
33359
|
+
|
33360
|
+
if (typeof key === 'undefined') { key = ''; }
|
33361
|
+
if (typeof scaleMode === 'undefined') { scaleMode = Phaser.scaleModes.DEFAULT; }
|
32628
33362
|
|
32629
33363
|
/**
|
32630
33364
|
* @property {Phaser.Game} game - A reference to the currently running game.
|
@@ -32647,7 +33381,7 @@ Phaser.RenderTexture = function (game, width, height, key) {
|
|
32647
33381
|
*/
|
32648
33382
|
this._temp = new Phaser.Point();
|
32649
33383
|
|
32650
|
-
PIXI.RenderTexture.call(this, width, height);
|
33384
|
+
PIXI.RenderTexture.call(this, width, height, scaleMode);
|
32651
33385
|
|
32652
33386
|
};
|
32653
33387
|
|
@@ -33039,41 +33773,6 @@ Phaser.RetroFont.prototype.setText = function (content, multiLine, characterSpac
|
|
33039
33773
|
|
33040
33774
|
};
|
33041
33775
|
|
33042
|
-
/**
|
33043
|
-
* Over rides the default PIXI.RenderTexture resize event as we need our baseTexture resized as well.
|
33044
|
-
*
|
33045
|
-
* @method Phaser.RetroFont#resize
|
33046
|
-
* @memberof Phaser.RetroFont
|
33047
|
-
*/
|
33048
|
-
Phaser.RetroFont.prototype.resize = function (width, height) {
|
33049
|
-
|
33050
|
-
this.width = width;
|
33051
|
-
this.height = height;
|
33052
|
-
|
33053
|
-
this.frame.width = this.width;
|
33054
|
-
this.frame.height = this.height;
|
33055
|
-
|
33056
|
-
this.baseTexture.width = this.width;
|
33057
|
-
this.baseTexture.height = this.height;
|
33058
|
-
|
33059
|
-
if (this.renderer.type === PIXI.WEBGL_RENDERER)
|
33060
|
-
{
|
33061
|
-
this.projection.x = this.width / 2;
|
33062
|
-
this.projection.y = -this.height / 2;
|
33063
|
-
|
33064
|
-
var gl = this.renderer.gl;
|
33065
|
-
gl.bindTexture(gl.TEXTURE_2D, this.baseTexture._glTextures[gl.id]);
|
33066
|
-
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, this.width, this.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
33067
|
-
}
|
33068
|
-
else
|
33069
|
-
{
|
33070
|
-
this.textureBuffer.resize(this.width, this.height);
|
33071
|
-
}
|
33072
|
-
|
33073
|
-
PIXI.Texture.frameUpdates.push(this);
|
33074
|
-
|
33075
|
-
};
|
33076
|
-
|
33077
33776
|
/**
|
33078
33777
|
* Updates the BitmapData of the Sprite with the text
|
33079
33778
|
*
|
@@ -33085,21 +33784,21 @@ Phaser.RetroFont.prototype.buildRetroFontText = function () {
|
|
33085
33784
|
var cx = 0;
|
33086
33785
|
var cy = 0;
|
33087
33786
|
|
33787
|
+
this.clear();
|
33788
|
+
|
33088
33789
|
if (this.multiLine)
|
33089
33790
|
{
|
33090
33791
|
var lines = this._text.split("\n");
|
33091
33792
|
|
33092
33793
|
if (this.fixedWidth > 0)
|
33093
33794
|
{
|
33094
|
-
this.resize(this.fixedWidth, (lines.length * (this.characterHeight + this.customSpacingY)) - this.customSpacingY);
|
33795
|
+
this.resize(this.fixedWidth, (lines.length * (this.characterHeight + this.customSpacingY)) - this.customSpacingY, true);
|
33095
33796
|
}
|
33096
33797
|
else
|
33097
33798
|
{
|
33098
|
-
this.resize(this.getLongestLine() * (this.characterWidth + this.customSpacingX), (lines.length * (this.characterHeight + this.customSpacingY)) - this.customSpacingY);
|
33799
|
+
this.resize(this.getLongestLine() * (this.characterWidth + this.customSpacingX), (lines.length * (this.characterHeight + this.customSpacingY)) - this.customSpacingY, true);
|
33099
33800
|
}
|
33100
33801
|
|
33101
|
-
this.textureBuffer.clear();
|
33102
|
-
|
33103
33802
|
// Loop through each line of text
|
33104
33803
|
for (var i = 0; i < lines.length; i++)
|
33105
33804
|
{
|
@@ -33135,15 +33834,13 @@ Phaser.RetroFont.prototype.buildRetroFontText = function () {
|
|
33135
33834
|
{
|
33136
33835
|
if (this.fixedWidth > 0)
|
33137
33836
|
{
|
33138
|
-
this.resize(this.fixedWidth, this.characterHeight);
|
33837
|
+
this.resize(this.fixedWidth, this.characterHeight, true);
|
33139
33838
|
}
|
33140
33839
|
else
|
33141
33840
|
{
|
33142
|
-
this.resize(this._text.length * (this.characterWidth + this.customSpacingX), this.characterHeight);
|
33841
|
+
this.resize(this._text.length * (this.characterWidth + this.customSpacingX), this.characterHeight, true);
|
33143
33842
|
}
|
33144
33843
|
|
33145
|
-
this.textureBuffer.clear();
|
33146
|
-
|
33147
33844
|
switch (this.align)
|
33148
33845
|
{
|
33149
33846
|
case Phaser.RetroFont.ALIGN_LEFT:
|
@@ -33160,6 +33857,8 @@ Phaser.RetroFont.prototype.buildRetroFontText = function () {
|
|
33160
33857
|
break;
|
33161
33858
|
}
|
33162
33859
|
|
33860
|
+
this.textureBuffer.clear();
|
33861
|
+
|
33163
33862
|
this.pasteLine(this._text, cx, 0, this.customSpacingX);
|
33164
33863
|
}
|
33165
33864
|
|
@@ -34371,10 +35070,6 @@ Phaser.Device.prototype = {
|
|
34371
35070
|
{
|
34372
35071
|
this.safari = true;
|
34373
35072
|
}
|
34374
|
-
else if (/Silk/.test(ua))
|
34375
|
-
{
|
34376
|
-
this.silk = true;
|
34377
|
-
}
|
34378
35073
|
else if (/Trident\/(\d+\.\d+)(.*)rv:(\d+\.\d+)/.test(ua))
|
34379
35074
|
{
|
34380
35075
|
this.ie = true;
|
@@ -34383,6 +35078,12 @@ Phaser.Device.prototype = {
|
|
34383
35078
|
this.ieVersion = parseInt(RegExp.$3, 10);
|
34384
35079
|
}
|
34385
35080
|
|
35081
|
+
//Silk gets its own if clause because its ua also contains 'Safari'
|
35082
|
+
if (/Silk/.test(ua))
|
35083
|
+
{
|
35084
|
+
this.silk = true;
|
35085
|
+
}
|
35086
|
+
|
34386
35087
|
// WebApp mode in iOS
|
34387
35088
|
if (navigator['standalone'])
|
34388
35089
|
{
|
@@ -35235,7 +35936,6 @@ Phaser.Math = {
|
|
35235
35936
|
* @param {number} a2
|
35236
35937
|
* @param {boolean} radians - True if angle sizes are expressed in radians.
|
35237
35938
|
* @return {number}
|
35238
|
-
*/
|
35239
35939
|
nearestAngleBetween: function (a1, a2, radians) {
|
35240
35940
|
|
35241
35941
|
if (typeof radians === "undefined") { radians = true; }
|
@@ -35257,6 +35957,7 @@ Phaser.Math = {
|
|
35257
35957
|
return a2 - a1;
|
35258
35958
|
|
35259
35959
|
},
|
35960
|
+
*/
|
35260
35961
|
|
35261
35962
|
/**
|
35262
35963
|
* Interpolate across the shortest arc between two angles.
|
@@ -35267,7 +35968,6 @@ Phaser.Math = {
|
|
35267
35968
|
* @param {boolean} radians - True if angle sizes are expressed in radians.
|
35268
35969
|
* @param {Description} ease - Description.
|
35269
35970
|
* @return {number}
|
35270
|
-
*/
|
35271
35971
|
interpolateAngles: function (a1, a2, weight, radians, ease) {
|
35272
35972
|
|
35273
35973
|
if (typeof radians === "undefined") { radians = true; }
|
@@ -35279,6 +35979,7 @@ Phaser.Math = {
|
|
35279
35979
|
return (typeof ease === 'function') ? ease(weight, a1, a2 - a1, 1) : this.interpolateFloat(a1, a2, weight);
|
35280
35980
|
|
35281
35981
|
},
|
35982
|
+
*/
|
35282
35983
|
|
35283
35984
|
/**
|
35284
35985
|
* Generate a random bool result based on the chance value.
|
@@ -36127,6 +36828,34 @@ Phaser.Math = {
|
|
36127
36828
|
|
36128
36829
|
},
|
36129
36830
|
|
36831
|
+
/**
|
36832
|
+
* Work out what percentage value a is of value b using the given base.
|
36833
|
+
*
|
36834
|
+
* @method Phaser.Math#percent
|
36835
|
+
* @param {number} a - The value to work out the percentage for.
|
36836
|
+
* @param {number} b - The value you wish to get the percentage of.
|
36837
|
+
* @param {number} [base=0] - The base value.
|
36838
|
+
* @return {number} The percentage a is of b, between 0 and 1.
|
36839
|
+
*/
|
36840
|
+
percent: function (a, b, base) {
|
36841
|
+
|
36842
|
+
if (typeof base === 'undefined') { base = 0; }
|
36843
|
+
|
36844
|
+
if (a > b || base > b)
|
36845
|
+
{
|
36846
|
+
return 1;
|
36847
|
+
}
|
36848
|
+
else if (a < base || base > a)
|
36849
|
+
{
|
36850
|
+
return 0;
|
36851
|
+
}
|
36852
|
+
else
|
36853
|
+
{
|
36854
|
+
return (a - base) / b;
|
36855
|
+
}
|
36856
|
+
|
36857
|
+
},
|
36858
|
+
|
36130
36859
|
/**
|
36131
36860
|
* Convert degrees to radians.
|
36132
36861
|
*
|
@@ -36341,7 +37070,7 @@ Phaser.RandomDataGenerator.prototype = {
|
|
36341
37070
|
*/
|
36342
37071
|
integerInRange: function (min, max) {
|
36343
37072
|
|
36344
|
-
return Math.floor(this.realInRange(0, max - min + 1)
|
37073
|
+
return Math.floor(this.realInRange(0, max - min + 1) + min);
|
36345
37074
|
|
36346
37075
|
},
|
36347
37076
|
|
@@ -36732,37 +37461,46 @@ Phaser.QuadTree.prototype = {
|
|
36732
37461
|
},
|
36733
37462
|
|
36734
37463
|
/**
|
36735
|
-
* Return all objects that could collide with the given Sprite.
|
37464
|
+
* Return all objects that could collide with the given Sprite or Rectangle.
|
36736
37465
|
*
|
36737
37466
|
* @method Phaser.QuadTree#retrieve
|
36738
|
-
* @param {Phaser.Sprite}
|
37467
|
+
* @param {Phaser.Sprite|Phaser.Rectangle} source - The source object to check the QuadTree against. Either a Sprite or Rectangle.
|
36739
37468
|
* @return {array} - Array with all detected objects.
|
36740
37469
|
*/
|
36741
|
-
retrieve: function (
|
37470
|
+
retrieve: function (source) {
|
36742
37471
|
|
36743
|
-
if (
|
37472
|
+
if (source instanceof Phaser.Rectangle)
|
36744
37473
|
{
|
36745
|
-
|
37474
|
+
var returnObjects = this.objects;
|
37475
|
+
|
37476
|
+
var index = this.getIndex(source);
|
36746
37477
|
}
|
37478
|
+
else
|
37479
|
+
{
|
37480
|
+
if (!source.body)
|
37481
|
+
{
|
37482
|
+
return this._empty;
|
37483
|
+
}
|
36747
37484
|
|
36748
|
-
|
37485
|
+
var returnObjects = this.objects;
|
36749
37486
|
|
36750
|
-
|
37487
|
+
var index = this.getIndex(source.body);
|
37488
|
+
}
|
36751
37489
|
|
36752
37490
|
if (this.nodes[0])
|
36753
37491
|
{
|
36754
37492
|
// If rect fits into a subnode ..
|
36755
37493
|
if (index !== -1)
|
36756
37494
|
{
|
36757
|
-
returnObjects = returnObjects.concat(this.nodes[index].retrieve(
|
37495
|
+
returnObjects = returnObjects.concat(this.nodes[index].retrieve(source));
|
36758
37496
|
}
|
36759
37497
|
else
|
36760
37498
|
{
|
36761
37499
|
// If rect does not fit into a subnode, check it against all subnodes (unrolled for speed)
|
36762
|
-
returnObjects = returnObjects.concat(this.nodes[0].retrieve(
|
36763
|
-
returnObjects = returnObjects.concat(this.nodes[1].retrieve(
|
36764
|
-
returnObjects = returnObjects.concat(this.nodes[2].retrieve(
|
36765
|
-
returnObjects = returnObjects.concat(this.nodes[3].retrieve(
|
37500
|
+
returnObjects = returnObjects.concat(this.nodes[0].retrieve(source));
|
37501
|
+
returnObjects = returnObjects.concat(this.nodes[1].retrieve(source));
|
37502
|
+
returnObjects = returnObjects.concat(this.nodes[2].retrieve(source));
|
37503
|
+
returnObjects = returnObjects.concat(this.nodes[3].retrieve(source));
|
36766
37504
|
}
|
36767
37505
|
}
|
36768
37506
|
|
@@ -37457,6 +38195,30 @@ Phaser.Tween.prototype = {
|
|
37457
38195
|
|
37458
38196
|
},
|
37459
38197
|
|
38198
|
+
/**
|
38199
|
+
* Configure a Reverse Tween
|
38200
|
+
*
|
38201
|
+
* @method Phaser.Tween#from
|
38202
|
+
* @param {object} properties - Properties you want to tween from.
|
38203
|
+
* @param {number} [duration=1000] - Duration of this tween in ms.
|
38204
|
+
* @param {function} [ease=null] - Easing function. If not set it will default to Phaser.Easing.Linear.None.
|
38205
|
+
* @param {boolean} [autoStart=false] - Whether this tween will start automatically or not.
|
38206
|
+
* @param {number} [delay=0] - Delay before this tween will start, defaults to 0 (no delay). Value given is in ms.
|
38207
|
+
* @param {number} [repeat=0] - Should the tween automatically restart once complete? If you want it to run forever set as Number.MAX_VALUE. This ignores any chained tweens.
|
38208
|
+
* @param {boolean} [yoyo=false] - A tween that yoyos will reverse itself and play backwards automatically. A yoyo'd tween doesn't fire the Tween.onComplete event, so listen for Tween.onLoop instead.
|
38209
|
+
* @return {Phaser.Tween} This Tween object.
|
38210
|
+
*/
|
38211
|
+
from: function(properties, duration, ease, autoStart, delay, repeat, yoyo) {
|
38212
|
+
var _cache = {};
|
38213
|
+
for(var prop in properties) {
|
38214
|
+
if (properties.hasOwnProperty(prop)) {
|
38215
|
+
_cache[prop] = this._object[prop];
|
38216
|
+
this._object[prop] = properties[prop];
|
38217
|
+
}
|
38218
|
+
}
|
38219
|
+
this.to(_cache, duration, ease, autoStart, delay, repeat, yoyo);
|
38220
|
+
},
|
38221
|
+
|
37460
38222
|
/**
|
37461
38223
|
* Starts the tween running. Can also be called by the autoStart parameter of Tween.to.
|
37462
38224
|
*
|
@@ -37916,12 +38678,16 @@ Phaser.Tween.prototype = {
|
|
37916
38678
|
var tmp = this._valuesStartRepeat[property];
|
37917
38679
|
this._valuesStartRepeat[property] = this._valuesEnd[property];
|
37918
38680
|
this._valuesEnd[property] = tmp;
|
37919
|
-
this._reversed = !this._reversed;
|
37920
38681
|
}
|
37921
38682
|
|
37922
38683
|
this._valuesStart[property] = this._valuesStartRepeat[property];
|
37923
38684
|
}
|
37924
38685
|
|
38686
|
+
if (this._yoyo)
|
38687
|
+
{
|
38688
|
+
this._reversed = !this._reversed;
|
38689
|
+
}
|
38690
|
+
|
37925
38691
|
this._startTime = time + this._delayTime;
|
37926
38692
|
|
37927
38693
|
this.onLoop.dispatch(this._object);
|
@@ -39383,6 +40149,13 @@ Phaser.Timer.prototype = {
|
|
39383
40149
|
*/
|
39384
40150
|
pause: function () {
|
39385
40151
|
|
40152
|
+
if (!this.running)
|
40153
|
+
{
|
40154
|
+
return;
|
40155
|
+
}
|
40156
|
+
|
40157
|
+
this._codePaused = true;
|
40158
|
+
|
39386
40159
|
if (this.paused)
|
39387
40160
|
{
|
39388
40161
|
return;
|
@@ -39391,7 +40164,6 @@ Phaser.Timer.prototype = {
|
|
39391
40164
|
this._pauseStarted = this.game.time.now;
|
39392
40165
|
|
39393
40166
|
this.paused = true;
|
39394
|
-
this._codePaused = true;
|
39395
40167
|
|
39396
40168
|
},
|
39397
40169
|
|
@@ -39402,7 +40174,7 @@ Phaser.Timer.prototype = {
|
|
39402
40174
|
*/
|
39403
40175
|
_pause: function () {
|
39404
40176
|
|
39405
|
-
if (this.paused)
|
40177
|
+
if (this.paused || !this.running)
|
39406
40178
|
{
|
39407
40179
|
return;
|
39408
40180
|
}
|
@@ -39462,8 +40234,9 @@ Phaser.Timer.prototype = {
|
|
39462
40234
|
return;
|
39463
40235
|
}
|
39464
40236
|
|
39465
|
-
|
39466
|
-
this.
|
40237
|
+
var now = this.game.time.now;
|
40238
|
+
this._pauseTotal += now - this._now;
|
40239
|
+
this._now = now;
|
39467
40240
|
|
39468
40241
|
this.adjustEvents(this._pauseStarted);
|
39469
40242
|
|
@@ -39776,7 +40549,7 @@ Phaser.AnimationManager.prototype = {
|
|
39776
40549
|
*/
|
39777
40550
|
add: function (name, frames, frameRate, loop, useNumericIndex) {
|
39778
40551
|
|
39779
|
-
if (this._frameData
|
40552
|
+
if (this._frameData === null)
|
39780
40553
|
{
|
39781
40554
|
console.warn('No FrameData available for Phaser.Animation ' + name);
|
39782
40555
|
return;
|
@@ -39801,7 +40574,7 @@ Phaser.AnimationManager.prototype = {
|
|
39801
40574
|
}
|
39802
40575
|
|
39803
40576
|
// Create the signals the AnimationManager will emit
|
39804
|
-
if (this.sprite.events.onAnimationStart
|
40577
|
+
if (this.sprite.events.onAnimationStart === null)
|
39805
40578
|
{
|
39806
40579
|
this.sprite.events.onAnimationStart = new Phaser.Signal();
|
39807
40580
|
this.sprite.events.onAnimationComplete = new Phaser.Signal();
|
@@ -41630,6 +42403,23 @@ Phaser.Cache = function (game) {
|
|
41630
42403
|
*/
|
41631
42404
|
this.onSoundUnlock = new Phaser.Signal();
|
41632
42405
|
|
42406
|
+
/**
|
42407
|
+
* @property {array} _cacheMap - Const to cache object look-up array.
|
42408
|
+
*/
|
42409
|
+
this._cacheMap = [];
|
42410
|
+
|
42411
|
+
this._cacheMap[Phaser.Cache.CANVAS] = this._canvases;
|
42412
|
+
this._cacheMap[Phaser.Cache.IMAGE] = this._images;
|
42413
|
+
this._cacheMap[Phaser.Cache.TEXTURE] = this._textures;
|
42414
|
+
this._cacheMap[Phaser.Cache.SOUND] = this._sounds;
|
42415
|
+
this._cacheMap[Phaser.Cache.TEXT] = this._text;
|
42416
|
+
this._cacheMap[Phaser.Cache.PHYSICS] = this._physics;
|
42417
|
+
this._cacheMap[Phaser.Cache.TILEMAP] = this._tilemaps;
|
42418
|
+
this._cacheMap[Phaser.Cache.BINARY] = this._binary;
|
42419
|
+
this._cacheMap[Phaser.Cache.BITMAPDATA] = this._bitmapDatas;
|
42420
|
+
this._cacheMap[Phaser.Cache.BITMAPFONT] = this._bitmapFont;
|
42421
|
+
this._cacheMap[Phaser.Cache.JSON] = this._json;
|
42422
|
+
|
41633
42423
|
};
|
41634
42424
|
|
41635
42425
|
/**
|
@@ -42169,15 +42959,16 @@ Phaser.Cache.prototype = {
|
|
42169
42959
|
},
|
42170
42960
|
|
42171
42961
|
/**
|
42172
|
-
* Checks if
|
42962
|
+
* Checks if a key for the given cache object type exists.
|
42173
42963
|
*
|
42174
|
-
* @method Phaser.Cache#
|
42964
|
+
* @method Phaser.Cache#checkKey
|
42965
|
+
* @param {number} type - The Cache type to check against. I.e. Phaser.Cache.CANVAS, Phaser.Cache.IMAGE, Phaser.Cache.JSON, etc.
|
42175
42966
|
* @param {string} key - Asset key of the image to check is in the Cache.
|
42176
42967
|
* @return {boolean} True if the key exists, otherwise false.
|
42177
42968
|
*/
|
42178
|
-
|
42969
|
+
checkKey: function (type, key) {
|
42179
42970
|
|
42180
|
-
if (this.
|
42971
|
+
if (this._cacheMap[type][key])
|
42181
42972
|
{
|
42182
42973
|
return true;
|
42183
42974
|
}
|
@@ -42186,6 +42977,149 @@ Phaser.Cache.prototype = {
|
|
42186
42977
|
|
42187
42978
|
},
|
42188
42979
|
|
42980
|
+
/**
|
42981
|
+
* Checks if the given key exists in the Canvas Cache.
|
42982
|
+
*
|
42983
|
+
* @method Phaser.Cache#checkCanvasKey
|
42984
|
+
* @param {string} key - Asset key of the image to check is in the Cache.
|
42985
|
+
* @return {boolean} True if the key exists, otherwise false.
|
42986
|
+
*/
|
42987
|
+
checkCanvasKey: function (key) {
|
42988
|
+
|
42989
|
+
return this.checkKey(Phaser.Cache.CANVAS, key);
|
42990
|
+
|
42991
|
+
},
|
42992
|
+
|
42993
|
+
/**
|
42994
|
+
* Checks if the given key exists in the Image Cache. Note that this also includes Texture Atlases, Sprite Sheets and Retro Fonts.
|
42995
|
+
*
|
42996
|
+
* @method Phaser.Cache#checkImageKey
|
42997
|
+
* @param {string} key - Asset key of the image to check is in the Cache.
|
42998
|
+
* @return {boolean} True if the key exists, otherwise false.
|
42999
|
+
*/
|
43000
|
+
checkImageKey: function (key) {
|
43001
|
+
|
43002
|
+
return this.checkKey(Phaser.Cache.IMAGE, key);
|
43003
|
+
|
43004
|
+
},
|
43005
|
+
|
43006
|
+
/**
|
43007
|
+
* Checks if the given key exists in the Texture Cache.
|
43008
|
+
*
|
43009
|
+
* @method Phaser.Cache#checkTextureKey
|
43010
|
+
* @param {string} key - Asset key of the image to check is in the Cache.
|
43011
|
+
* @return {boolean} True if the key exists, otherwise false.
|
43012
|
+
*/
|
43013
|
+
checkTextureKey: function (key) {
|
43014
|
+
|
43015
|
+
return this.checkKey(Phaser.Cache.TEXTURE, key);
|
43016
|
+
|
43017
|
+
},
|
43018
|
+
|
43019
|
+
/**
|
43020
|
+
* Checks if the given key exists in the Sound Cache.
|
43021
|
+
*
|
43022
|
+
* @method Phaser.Cache#checkSoundKey
|
43023
|
+
* @param {string} key - Asset key of the image to check is in the Cache.
|
43024
|
+
* @return {boolean} True if the key exists, otherwise false.
|
43025
|
+
*/
|
43026
|
+
checkSoundKey: function (key) {
|
43027
|
+
|
43028
|
+
return this.checkKey(Phaser.Cache.SOUND, key);
|
43029
|
+
|
43030
|
+
},
|
43031
|
+
|
43032
|
+
/**
|
43033
|
+
* Checks if the given key exists in the Text Cache.
|
43034
|
+
*
|
43035
|
+
* @method Phaser.Cache#checkTextKey
|
43036
|
+
* @param {string} key - Asset key of the image to check is in the Cache.
|
43037
|
+
* @return {boolean} True if the key exists, otherwise false.
|
43038
|
+
*/
|
43039
|
+
checkTextKey: function (key) {
|
43040
|
+
|
43041
|
+
return this.checkKey(Phaser.Cache.TEXT, key);
|
43042
|
+
|
43043
|
+
},
|
43044
|
+
|
43045
|
+
/**
|
43046
|
+
* Checks if the given key exists in the Physics Cache.
|
43047
|
+
*
|
43048
|
+
* @method Phaser.Cache#checkPhysicsKey
|
43049
|
+
* @param {string} key - Asset key of the image to check is in the Cache.
|
43050
|
+
* @return {boolean} True if the key exists, otherwise false.
|
43051
|
+
*/
|
43052
|
+
checkPhysicsKey: function (key) {
|
43053
|
+
|
43054
|
+
return this.checkKey(Phaser.Cache.PHYSICS, key);
|
43055
|
+
|
43056
|
+
},
|
43057
|
+
|
43058
|
+
/**
|
43059
|
+
* Checks if the given key exists in the Tilemap Cache.
|
43060
|
+
*
|
43061
|
+
* @method Phaser.Cache#checkTilemapKey
|
43062
|
+
* @param {string} key - Asset key of the image to check is in the Cache.
|
43063
|
+
* @return {boolean} True if the key exists, otherwise false.
|
43064
|
+
*/
|
43065
|
+
checkTilemapKey: function (key) {
|
43066
|
+
|
43067
|
+
return this.checkKey(Phaser.Cache.TILEMAP, key);
|
43068
|
+
|
43069
|
+
},
|
43070
|
+
|
43071
|
+
/**
|
43072
|
+
* Checks if the given key exists in the Binary Cache.
|
43073
|
+
*
|
43074
|
+
* @method Phaser.Cache#checkBinaryKey
|
43075
|
+
* @param {string} key - Asset key of the image to check is in the Cache.
|
43076
|
+
* @return {boolean} True if the key exists, otherwise false.
|
43077
|
+
*/
|
43078
|
+
checkBinaryKey: function (key) {
|
43079
|
+
|
43080
|
+
return this.checkKey(Phaser.Cache.BINARY, key);
|
43081
|
+
|
43082
|
+
},
|
43083
|
+
|
43084
|
+
/**
|
43085
|
+
* Checks if the given key exists in the BitmapData Cache.
|
43086
|
+
*
|
43087
|
+
* @method Phaser.Cache#checkBitmapDataKey
|
43088
|
+
* @param {string} key - Asset key of the image to check is in the Cache.
|
43089
|
+
* @return {boolean} True if the key exists, otherwise false.
|
43090
|
+
*/
|
43091
|
+
checkBitmapDataKey: function (key) {
|
43092
|
+
|
43093
|
+
return this.checkKey(Phaser.Cache.BITMAPDATA, key);
|
43094
|
+
|
43095
|
+
},
|
43096
|
+
|
43097
|
+
/**
|
43098
|
+
* Checks if the given key exists in the BitmapFont Cache.
|
43099
|
+
*
|
43100
|
+
* @method Phaser.Cache#checkBitmapFontKey
|
43101
|
+
* @param {string} key - Asset key of the image to check is in the Cache.
|
43102
|
+
* @return {boolean} True if the key exists, otherwise false.
|
43103
|
+
*/
|
43104
|
+
checkBitmapFontKey: function (key) {
|
43105
|
+
|
43106
|
+
return this.checkKey(Phaser.Cache.BITMAPFONT, key);
|
43107
|
+
|
43108
|
+
},
|
43109
|
+
|
43110
|
+
/**
|
43111
|
+
* Checks if the given key exists in the JSON Cache.
|
43112
|
+
*
|
43113
|
+
* @method Phaser.Cache#checkJSONKey
|
43114
|
+
* @param {string} key - Asset key of the image to check is in the Cache.
|
43115
|
+
* @return {boolean} True if the key exists, otherwise false.
|
43116
|
+
*/
|
43117
|
+
checkJSONKey: function (key) {
|
43118
|
+
|
43119
|
+
return this.checkKey(Phaser.Cache.JSON, key);
|
43120
|
+
|
43121
|
+
},
|
43122
|
+
|
42189
43123
|
/**
|
42190
43124
|
* Get image data by key.
|
42191
43125
|
*
|
@@ -42908,6 +43842,7 @@ Phaser.Loader.prototype = {
|
|
42908
43842
|
* You can set a Sprite to be a "preload" sprite by passing it to this method.
|
42909
43843
|
* A "preload" sprite will have its width or height crop adjusted based on the percentage of the loader in real-time.
|
42910
43844
|
* This allows you to easily make loading bars for games. Note that Sprite.visible = true will be set when calling this.
|
43845
|
+
* Note: The Sprite should use a single image and not use a texture that is part of a Texture Atlas or Sprite Sheet.
|
42911
43846
|
*
|
42912
43847
|
* @method Phaser.Loader#setPreloadSprite
|
42913
43848
|
* @param {Phaser.Sprite|Phaser.Image} sprite - The sprite or image that will be cropped during the load.
|
@@ -42938,7 +43873,8 @@ Phaser.Loader.prototype = {
|
|
42938
43873
|
|
42939
43874
|
/**
|
42940
43875
|
* Check whether asset exists with a specific key.
|
42941
|
-
*
|
43876
|
+
* Use Phaser.Cache to access loaded assets, e.g. Phaser.Cache#checkImageKey
|
43877
|
+
*
|
42942
43878
|
* @method Phaser.Loader#checkKeyExists
|
42943
43879
|
* @param {string} type - The type asset you want to check.
|
42944
43880
|
* @param {string} key - Key of the asset you want to check.
|
@@ -44764,7 +45700,7 @@ Phaser.Sound.prototype = {
|
|
44764
45700
|
if (this.isPlaying === true && forceRestart === false && this.override === false)
|
44765
45701
|
{
|
44766
45702
|
// Use Restart instead
|
44767
|
-
return;
|
45703
|
+
return this;
|
44768
45704
|
}
|
44769
45705
|
|
44770
45706
|
if (this.isPlaying && this.override)
|
@@ -44818,7 +45754,7 @@ Phaser.Sound.prototype = {
|
|
44818
45754
|
else
|
44819
45755
|
{
|
44820
45756
|
console.warn("Phaser.Sound.play: audio marker " + marker + " doesn't exist");
|
44821
|
-
return;
|
45757
|
+
return this;
|
44822
45758
|
}
|
44823
45759
|
}
|
44824
45760
|
else
|
@@ -44955,6 +45891,9 @@ Phaser.Sound.prototype = {
|
|
44955
45891
|
}
|
44956
45892
|
}
|
44957
45893
|
}
|
45894
|
+
|
45895
|
+
return this;
|
45896
|
+
|
44958
45897
|
},
|
44959
45898
|
|
44960
45899
|
/**
|
@@ -45066,7 +46005,13 @@ Phaser.Sound.prototype = {
|
|
45066
46005
|
}
|
45067
46006
|
else
|
45068
46007
|
{
|
45069
|
-
|
46008
|
+
try {
|
46009
|
+
this._sound.stop(0);
|
46010
|
+
}
|
46011
|
+
catch (e)
|
46012
|
+
{
|
46013
|
+
// Thanks Android 4.4
|
46014
|
+
}
|
45070
46015
|
}
|
45071
46016
|
}
|
45072
46017
|
else if (this.usingAudioTag)
|
@@ -45243,6 +46188,8 @@ Object.defineProperty(Phaser.Sound.prototype, "volume", {
|
|
45243
46188
|
* Sound Manager constructor.
|
45244
46189
|
* The Sound Manager is responsible for playing back audio via either the Legacy HTML Audio tag or via Web Audio if the browser supports it.
|
45245
46190
|
* Note: On Firefox 25+ on Linux if you have media.gstreamer disabled in about:config then it cannot play back mp3 or m4a files.
|
46191
|
+
* The audio file type and the encoding of those files are extremely important. Not all browsers can play all audio formats.
|
46192
|
+
* There is a good guide to what's supported here: http://hpr.dogphilosophy.net/test/
|
45246
46193
|
*
|
45247
46194
|
* @class Phaser.SoundManager
|
45248
46195
|
* @classdesc Phaser Sound Manager.
|
@@ -47315,41 +48262,60 @@ Phaser.Color = {
|
|
47315
48262
|
},
|
47316
48263
|
|
47317
48264
|
/**
|
47318
|
-
* Return the component parts of a color as an Object with the properties alpha, red, green, blue
|
48265
|
+
* Return the component parts of a color as an Object with the properties alpha, red, green, blue.
|
47319
48266
|
*
|
47320
48267
|
* Alpha will only be set if it exist in the given color (0xAARRGGBB)
|
47321
48268
|
*
|
47322
48269
|
* @method Phaser.Color.getRGB
|
47323
48270
|
* @static
|
47324
48271
|
* @param {number} color - Color in RGB (0xRRGGBB) or ARGB format (0xAARRGGBB).
|
47325
|
-
* @returns {object} An Object with properties: alpha, red, green, blue.
|
48272
|
+
* @returns {object} An Object with properties: alpha, red, green, blue (also r, g, b and a). Alpha will only be present if a color value > 16777215 was given.
|
47326
48273
|
*/
|
47327
48274
|
getRGB: function (color) {
|
47328
48275
|
|
47329
|
-
|
47330
|
-
|
47331
|
-
|
47332
|
-
|
47333
|
-
|
47334
|
-
|
48276
|
+
if (color > 16777215)
|
48277
|
+
{
|
48278
|
+
// The color value has an alpha component
|
48279
|
+
return {
|
48280
|
+
alpha: color >>> 24,
|
48281
|
+
red: color >> 16 & 0xFF,
|
48282
|
+
green: color >> 8 & 0xFF,
|
48283
|
+
blue: color & 0xFF,
|
48284
|
+
a: color >>> 24,
|
48285
|
+
r: color >> 16 & 0xFF,
|
48286
|
+
g: color >> 8 & 0xFF,
|
48287
|
+
b: color & 0xFF
|
48288
|
+
};
|
48289
|
+
}
|
48290
|
+
else
|
48291
|
+
{
|
48292
|
+
return {
|
48293
|
+
alpha: 255,
|
48294
|
+
red: color >> 16 & 0xFF,
|
48295
|
+
green: color >> 8 & 0xFF,
|
48296
|
+
blue: color & 0xFF,
|
48297
|
+
a: 255,
|
48298
|
+
r: color >> 16 & 0xFF,
|
48299
|
+
g: color >> 8 & 0xFF,
|
48300
|
+
b: color & 0xFF
|
48301
|
+
};
|
48302
|
+
}
|
47335
48303
|
|
47336
48304
|
},
|
47337
48305
|
|
47338
48306
|
/**
|
47339
48307
|
* Returns a CSS friendly string value from the given color.
|
48308
|
+
*
|
47340
48309
|
* @method Phaser.Color.getWebRGB
|
47341
48310
|
* @static
|
47342
|
-
* @param {number} color
|
47343
|
-
* @returns {string}A string in the format: 'rgba(r,g,b,a)'
|
48311
|
+
* @param {number} color - Color in RGB (0xRRGGBB) or ARGB format (0xAARRGGBB).
|
48312
|
+
* @returns {string} A string in the format: 'rgba(r,g,b,a)'
|
47344
48313
|
*/
|
47345
48314
|
getWebRGB: function (color) {
|
47346
48315
|
|
47347
|
-
var
|
47348
|
-
var red = color >> 16 & 0xFF;
|
47349
|
-
var green = color >> 8 & 0xFF;
|
47350
|
-
var blue = color & 0xFF;
|
48316
|
+
var rgb = Phaser.Color.getRGB(color);
|
47351
48317
|
|
47352
|
-
return 'rgba(' +
|
48318
|
+
return 'rgba(' + rgb.r.toString() + ',' + rgb.g.toString() + ',' + rgb.b.toString() + ',' + rgb.a.toString() + ')';
|
47353
48319
|
|
47354
48320
|
},
|
47355
48321
|
|
@@ -49105,6 +50071,53 @@ Phaser.Physics.Arcade.prototype = {
|
|
49105
50071
|
|
49106
50072
|
},
|
49107
50073
|
|
50074
|
+
/**
|
50075
|
+
* Given a Group and a Pointer this will check to see which Group children overlap with the Pointer coordinates.
|
50076
|
+
* Each child will be sent to the given callback for further processing.
|
50077
|
+
* Note that the children are not checked for depth order, but simply if they overlap the Pointer or not.
|
50078
|
+
*
|
50079
|
+
* @method Phaser.Physics.Arcade#getObjectsUnderPointer
|
50080
|
+
* @param {Phaser.Pointer} pointer - The Pointer to check.
|
50081
|
+
* @param {Phaser.Group} group - The Group to check.
|
50082
|
+
* @param {function} [callback] - A callback function that is called if the object overlaps with the Pointer. The callback will be sent two parameters: the Pointer and the Object that overlapped with it.
|
50083
|
+
* @param {object} [callbackContext] - The context in which to run the callback.
|
50084
|
+
* @return {array} An array of the Sprites from the Group that overlapped the Pointer coordinates.
|
50085
|
+
*/
|
50086
|
+
getObjectsUnderPointer: function (pointer, group, callback, callbackContext) {
|
50087
|
+
|
50088
|
+
if (group.length === 0 || !pointer.exists)
|
50089
|
+
{
|
50090
|
+
return;
|
50091
|
+
}
|
50092
|
+
|
50093
|
+
this.quadTree.clear();
|
50094
|
+
|
50095
|
+
this.quadTree.reset(this.game.world.bounds.x, this.game.world.bounds.y, this.game.world.bounds.width, this.game.world.bounds.height, this.maxObjects, this.maxLevels);
|
50096
|
+
|
50097
|
+
this.quadTree.populate(group);
|
50098
|
+
|
50099
|
+
var rect = new Phaser.Rectangle(pointer.x, pointer.y, 1, 1);
|
50100
|
+
var output = [];
|
50101
|
+
|
50102
|
+
this._potentials = this.quadTree.retrieve(rect);
|
50103
|
+
|
50104
|
+
for (var i = 0, len = this._potentials.length; i < len; i++)
|
50105
|
+
{
|
50106
|
+
if (this._potentials[i].hitTest(pointer.x, pointer.y))
|
50107
|
+
{
|
50108
|
+
if (callback)
|
50109
|
+
{
|
50110
|
+
callback.call(callbackContext, pointer, this._potentials[i].sprite);
|
50111
|
+
}
|
50112
|
+
|
50113
|
+
output.push(this._potentials[i].sprite);
|
50114
|
+
}
|
50115
|
+
}
|
50116
|
+
|
50117
|
+
return output;
|
50118
|
+
|
50119
|
+
},
|
50120
|
+
|
49108
50121
|
/**
|
49109
50122
|
* Move the given display object towards the destination object at a steady velocity.
|
49110
50123
|
* If you specify a maxTime then it will adjust the speed (overwriting what you set) so it arrives at the destination in that number of seconds.
|
@@ -50701,12 +51714,12 @@ Phaser.Particles.Arcade.Emitter.prototype.makeParticles = function (keys, frames
|
|
50701
51714
|
|
50702
51715
|
while (i < quantity)
|
50703
51716
|
{
|
50704
|
-
if (
|
51717
|
+
if (Array.isArray(keys))
|
50705
51718
|
{
|
50706
51719
|
rndKey = this.game.rnd.pick(keys);
|
50707
51720
|
}
|
50708
51721
|
|
50709
|
-
if (
|
51722
|
+
if (Array.isArray(frames))
|
50710
51723
|
{
|
50711
51724
|
rndFrame = this.game.rnd.pick(frames);
|
50712
51725
|
}
|
@@ -51709,6 +52722,30 @@ Phaser.Tilemap.CSV = 0;
|
|
51709
52722
|
*/
|
51710
52723
|
Phaser.Tilemap.TILED_JSON = 1;
|
51711
52724
|
|
52725
|
+
/**
|
52726
|
+
* @constant
|
52727
|
+
* @type {number}
|
52728
|
+
*/
|
52729
|
+
Phaser.Tilemap.NORTH = 0;
|
52730
|
+
|
52731
|
+
/**
|
52732
|
+
* @constant
|
52733
|
+
* @type {number}
|
52734
|
+
*/
|
52735
|
+
Phaser.Tilemap.EAST = 1;
|
52736
|
+
|
52737
|
+
/**
|
52738
|
+
* @constant
|
52739
|
+
* @type {number}
|
52740
|
+
*/
|
52741
|
+
Phaser.Tilemap.SOUTH = 2;
|
52742
|
+
|
52743
|
+
/**
|
52744
|
+
* @constant
|
52745
|
+
* @type {number}
|
52746
|
+
*/
|
52747
|
+
Phaser.Tilemap.WEST = 3;
|
52748
|
+
|
51712
52749
|
Phaser.Tilemap.prototype = {
|
51713
52750
|
|
51714
52751
|
/**
|
@@ -51928,7 +52965,7 @@ Phaser.Tilemap.prototype = {
|
|
51928
52965
|
|
51929
52966
|
for (var property in this.objects[name][i].properties)
|
51930
52967
|
{
|
51931
|
-
group.set(sprite, property, this.objects[name][i].properties[property], false, false, 0);
|
52968
|
+
group.set(sprite, property, this.objects[name][i].properties[property], false, false, 0, true);
|
51932
52969
|
}
|
51933
52970
|
}
|
51934
52971
|
}
|
@@ -52202,11 +53239,13 @@ Phaser.Tilemap.prototype = {
|
|
52202
53239
|
* @param {number|array} indexes - Either a single tile index, or an array of tile IDs to be checked for collision.
|
52203
53240
|
* @param {boolean} [collides=true] - If true it will enable collision. If false it will clear collision.
|
52204
53241
|
* @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. If not given will default to this.currentLayer.
|
53242
|
+
* @param {boolean} [recalculate=true] - Recalculates the tile faces after the update.
|
52205
53243
|
*/
|
52206
|
-
setCollision: function (indexes, collides, layer) {
|
53244
|
+
setCollision: function (indexes, collides, layer, recalculate) {
|
52207
53245
|
|
52208
53246
|
if (typeof collides === 'undefined') { collides = true; }
|
52209
|
-
|
53247
|
+
if (typeof recalculate === 'undefined') { recalculate = true; }
|
53248
|
+
|
52210
53249
|
layer = this.getLayer(layer);
|
52211
53250
|
|
52212
53251
|
if (typeof indexes === 'number')
|
@@ -52221,8 +53260,11 @@ Phaser.Tilemap.prototype = {
|
|
52221
53260
|
this.setCollisionByIndex(indexes[i], collides, layer, false);
|
52222
53261
|
}
|
52223
53262
|
|
52224
|
-
|
52225
|
-
|
53263
|
+
if (recalculate)
|
53264
|
+
{
|
53265
|
+
// Now re-calculate interesting faces
|
53266
|
+
this.calculateFaces(layer);
|
53267
|
+
}
|
52226
53268
|
}
|
52227
53269
|
|
52228
53270
|
},
|
@@ -52237,11 +53279,13 @@ Phaser.Tilemap.prototype = {
|
|
52237
53279
|
* @param {number} stop - The last index of the tile to be set for collision.
|
52238
53280
|
* @param {boolean} [collides=true] - If true it will enable collision. If false it will clear collision.
|
52239
53281
|
* @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. If not given will default to this.currentLayer.
|
53282
|
+
* @param {boolean} [recalculate=true] - Recalculates the tile faces after the update.
|
52240
53283
|
*/
|
52241
|
-
setCollisionBetween: function (start, stop, collides, layer) {
|
53284
|
+
setCollisionBetween: function (start, stop, collides, layer, recalculate) {
|
52242
53285
|
|
52243
53286
|
if (typeof collides === 'undefined') { collides = true; }
|
52244
|
-
|
53287
|
+
if (typeof recalculate === 'undefined') { recalculate = true; }
|
53288
|
+
|
52245
53289
|
layer = this.getLayer(layer);
|
52246
53290
|
|
52247
53291
|
if (start > stop)
|
@@ -52254,8 +53298,11 @@ Phaser.Tilemap.prototype = {
|
|
52254
53298
|
this.setCollisionByIndex(index, collides, layer, false);
|
52255
53299
|
}
|
52256
53300
|
|
52257
|
-
|
52258
|
-
|
53301
|
+
if (recalculate)
|
53302
|
+
{
|
53303
|
+
// Now re-calculate interesting faces
|
53304
|
+
this.calculateFaces(layer);
|
53305
|
+
}
|
52259
53306
|
|
52260
53307
|
},
|
52261
53308
|
|
@@ -52267,11 +53314,13 @@ Phaser.Tilemap.prototype = {
|
|
52267
53314
|
* @param {array} indexes - An array of the tile IDs to not be counted for collision.
|
52268
53315
|
* @param {boolean} [collides=true] - If true it will enable collision. If false it will clear collision.
|
52269
53316
|
* @param {number|string|Phaser.TilemapLayer} [layer] - The layer to operate on. If not given will default to this.currentLayer.
|
53317
|
+
* @param {boolean} [recalculate=true] - Recalculates the tile faces after the update.
|
52270
53318
|
*/
|
52271
|
-
setCollisionByExclusion: function (indexes, collides, layer) {
|
53319
|
+
setCollisionByExclusion: function (indexes, collides, layer, recalculate) {
|
52272
53320
|
|
52273
53321
|
if (typeof collides === 'undefined') { collides = true; }
|
52274
|
-
|
53322
|
+
if (typeof recalculate === 'undefined') { recalculate = true; }
|
53323
|
+
|
52275
53324
|
layer = this.getLayer(layer);
|
52276
53325
|
|
52277
53326
|
// Collide everything, except the IDs given in the indexes array
|
@@ -52283,8 +53332,11 @@ Phaser.Tilemap.prototype = {
|
|
52283
53332
|
}
|
52284
53333
|
}
|
52285
53334
|
|
52286
|
-
|
52287
|
-
|
53335
|
+
if (recalculate)
|
53336
|
+
{
|
53337
|
+
// Now re-calculate interesting faces
|
53338
|
+
this.calculateFaces(layer);
|
53339
|
+
}
|
52288
53340
|
|
52289
53341
|
},
|
52290
53342
|
|
@@ -52710,6 +53762,73 @@ Phaser.Tilemap.prototype = {
|
|
52710
53762
|
|
52711
53763
|
},
|
52712
53764
|
|
53765
|
+
/**
|
53766
|
+
* Searches the entire map layer for the first tile matching the given index, then returns that Phaser.Tile object.
|
53767
|
+
* If no match is found it returns null.
|
53768
|
+
* The search starts from the top-left tile and continues horizontally until it hits the end of the row, then it drops down to the next column.
|
53769
|
+
* If the reverse boolean is true, it scans starting from the bottom-right corner travelling up to the top-left.
|
53770
|
+
*
|
53771
|
+
* @method Phaser.Tilemap#searchTileIndex
|
53772
|
+
* @param {number} index - The tile index value to search for.
|
53773
|
+
* @param {number} [skip=0] - The number of times to skip a matching tile before returning.
|
53774
|
+
* @param {number} [reverse=false] - If true it will scan the layer in reverse, starting at the bottom-right. Otherwise it scans from the top-left.
|
53775
|
+
* @param {number|string|Phaser.TilemapLayer} [layer] - The layer to get the tile from.
|
53776
|
+
* @return {Phaser.Tile} The first (or n skipped) tile with the matching index.
|
53777
|
+
*/
|
53778
|
+
searchTileIndex: function (index, skip, reverse, layer) {
|
53779
|
+
|
53780
|
+
if (typeof skip === 'undefined') { skip = 0; }
|
53781
|
+
if (typeof reverse === 'undefined') { reverse = false; }
|
53782
|
+
|
53783
|
+
layer = this.getLayer(layer);
|
53784
|
+
|
53785
|
+
var c = 0;
|
53786
|
+
|
53787
|
+
if (reverse)
|
53788
|
+
{
|
53789
|
+
for (var y = this.layers[layer].height - 1; y >= 0; y--)
|
53790
|
+
{
|
53791
|
+
for (var x = this.layers[layer].width - 1; x >= 0; x--)
|
53792
|
+
{
|
53793
|
+
if (this.layers[layer].data[y][x].index === index)
|
53794
|
+
{
|
53795
|
+
if (c === skip)
|
53796
|
+
{
|
53797
|
+
return this.layers[layer].data[y][x];
|
53798
|
+
}
|
53799
|
+
else
|
53800
|
+
{
|
53801
|
+
c++;
|
53802
|
+
}
|
53803
|
+
}
|
53804
|
+
}
|
53805
|
+
}
|
53806
|
+
}
|
53807
|
+
else
|
53808
|
+
{
|
53809
|
+
for (var y = 0; y < this.layers[layer].height; y++)
|
53810
|
+
{
|
53811
|
+
for (var x = 0; x < this.layers[layer].width; x++)
|
53812
|
+
{
|
53813
|
+
if (this.layers[layer].data[y][x].index === index)
|
53814
|
+
{
|
53815
|
+
if (c === skip)
|
53816
|
+
{
|
53817
|
+
return this.layers[layer].data[y][x];
|
53818
|
+
}
|
53819
|
+
else
|
53820
|
+
{
|
53821
|
+
c++;
|
53822
|
+
}
|
53823
|
+
}
|
53824
|
+
}
|
53825
|
+
}
|
53826
|
+
}
|
53827
|
+
|
53828
|
+
return null;
|
53829
|
+
|
53830
|
+
},
|
53831
|
+
|
52713
53832
|
/**
|
52714
53833
|
* Gets a tile from the Tilemap Layer. The coordinates are given in tile values.
|
52715
53834
|
*
|
@@ -52717,9 +53836,12 @@ Phaser.Tilemap.prototype = {
|
|
52717
53836
|
* @param {number} x - X position to get the tile from (given in tile units, not pixels)
|
52718
53837
|
* @param {number} y - Y position to get the tile from (given in tile units, not pixels)
|
52719
53838
|
* @param {number|string|Phaser.TilemapLayer} [layer] - The layer to get the tile from.
|
52720
|
-
* @
|
53839
|
+
* @param {boolean} [nonNull=false] - If true getTile won't return null for empty tiles, but a Tile object with an index of -1.
|
53840
|
+
* @return {Phaser.Tile} The tile at the given coordinates or null if no tile was found or the coordinates were invalid.
|
52721
53841
|
*/
|
52722
|
-
getTile: function (x, y, layer) {
|
53842
|
+
getTile: function (x, y, layer, nonNull) {
|
53843
|
+
|
53844
|
+
if (typeof nonNull === 'undefined') { nonNull = false; }
|
52723
53845
|
|
52724
53846
|
layer = this.getLayer(layer);
|
52725
53847
|
|
@@ -52727,13 +53849,24 @@ Phaser.Tilemap.prototype = {
|
|
52727
53849
|
{
|
52728
53850
|
if (this.layers[layer].data[y][x].index === -1)
|
52729
53851
|
{
|
52730
|
-
|
53852
|
+
if (nonNull)
|
53853
|
+
{
|
53854
|
+
return this.layers[layer].data[y][x];
|
53855
|
+
}
|
53856
|
+
else
|
53857
|
+
{
|
53858
|
+
return null;
|
53859
|
+
}
|
52731
53860
|
}
|
52732
53861
|
else
|
52733
53862
|
{
|
52734
53863
|
return this.layers[layer].data[y][x];
|
52735
53864
|
}
|
52736
53865
|
}
|
53866
|
+
else
|
53867
|
+
{
|
53868
|
+
return null;
|
53869
|
+
}
|
52737
53870
|
|
52738
53871
|
},
|
52739
53872
|
|
@@ -53165,6 +54298,29 @@ Phaser.Tilemap.prototype = {
|
|
53165
54298
|
|
53166
54299
|
Phaser.Tilemap.prototype.constructor = Phaser.Tilemap;
|
53167
54300
|
|
54301
|
+
/**
|
54302
|
+
* @name Phaser.Tilemap#layer
|
54303
|
+
* @property {number|string|Phaser.TilemapLayer} layer - The current layer object.
|
54304
|
+
*/
|
54305
|
+
Object.defineProperty(Phaser.Tilemap.prototype, "layer", {
|
54306
|
+
|
54307
|
+
get: function () {
|
54308
|
+
|
54309
|
+
return this.layers[this.currentLayer];
|
54310
|
+
|
54311
|
+
},
|
54312
|
+
|
54313
|
+
set: function (value) {
|
54314
|
+
|
54315
|
+
if (value !== this.currentLayer)
|
54316
|
+
{
|
54317
|
+
this.setLayer(value);
|
54318
|
+
}
|
54319
|
+
|
54320
|
+
}
|
54321
|
+
|
54322
|
+
});
|
54323
|
+
|
53168
54324
|
/**
|
53169
54325
|
* @author Richard Davey <rich@photonstorm.com>
|
53170
54326
|
* @copyright 2014 Photon Storm Ltd.
|
@@ -54313,6 +55469,15 @@ Phaser.TilemapParser = {
|
|
54313
55469
|
var objects = {};
|
54314
55470
|
var collision = {};
|
54315
55471
|
|
55472
|
+
function slice (obj, fields) {
|
55473
|
+
var sliced = {};
|
55474
|
+
for (var k in fields) {
|
55475
|
+
var key = fields[k];
|
55476
|
+
sliced[key] = obj[key];
|
55477
|
+
}
|
55478
|
+
return sliced;
|
55479
|
+
}
|
55480
|
+
|
54316
55481
|
for (var i = 0; i < json.layers.length; i++)
|
54317
55482
|
{
|
54318
55483
|
if (json.layers[i].type !== 'objectgroup')
|
@@ -54364,9 +55529,37 @@ Phaser.TilemapParser = {
|
|
54364
55529
|
}
|
54365
55530
|
|
54366
55531
|
collision[json.layers[i].name].push(object);
|
54367
|
-
|
54368
55532
|
}
|
55533
|
+
// polygon
|
55534
|
+
else if (json.layers[i].objects[v].polygon)
|
55535
|
+
{
|
55536
|
+
var object = slice(json.layers[i].objects[v],
|
55537
|
+
["name", "x", "y", "visible", "properties" ]);
|
55538
|
+
|
55539
|
+
// Parse the polygon into an array
|
55540
|
+
object.polygon = [];
|
55541
|
+
for (var p = 0; p < json.layers[i].objects[v].polygon.length; p++)
|
55542
|
+
{
|
55543
|
+
object.polygon.push([ json.layers[i].objects[v].polygon[p].x, json.layers[i].objects[v].polygon[p].y ]);
|
55544
|
+
}
|
55545
|
+
objects[json.layers[i].name].push(object);
|
54369
55546
|
|
55547
|
+
}
|
55548
|
+
// ellipse
|
55549
|
+
else if (json.layers[i].objects[v].ellipse)
|
55550
|
+
{
|
55551
|
+
var object = slice(json.layers[i].objects[v],
|
55552
|
+
["name", "ellipse", "x", "y", "width", "height", "visible", "properties" ]);
|
55553
|
+
objects[json.layers[i].name].push(object);
|
55554
|
+
}
|
55555
|
+
// otherwise it's a rectangle
|
55556
|
+
else
|
55557
|
+
{
|
55558
|
+
var object = slice(json.layers[i].objects[v],
|
55559
|
+
["name", "x", "y", "width", "height", "visible", "properties" ]);
|
55560
|
+
object.rectangle = true;
|
55561
|
+
objects[json.layers[i].name].push(object);
|
55562
|
+
}
|
54370
55563
|
}
|
54371
55564
|
}
|
54372
55565
|
|
@@ -73122,7 +74315,6 @@ Phaser.Physics.P2.prototype = {
|
|
73122
74315
|
{
|
73123
74316
|
output.push(body);
|
73124
74317
|
}
|
73125
|
-
|
73126
74318
|
}
|
73127
74319
|
|
73128
74320
|
return output;
|
@@ -73147,7 +74339,7 @@ Phaser.Physics.P2.prototype = {
|
|
73147
74339
|
map.layers[layer].bodies[i].destroy();
|
73148
74340
|
}
|
73149
74341
|
|
73150
|
-
map.layers[layer].bodies.length =
|
74342
|
+
map.layers[layer].bodies.length = 0;
|
73151
74343
|
|
73152
74344
|
},
|
73153
74345
|
|
@@ -73186,7 +74378,7 @@ Phaser.Physics.P2.prototype = {
|
|
73186
74378
|
{
|
73187
74379
|
var tile = map.layers[layer].data[y][x];
|
73188
74380
|
|
73189
|
-
if (tile && tile.collides)
|
74381
|
+
if (tile && tile.index > -1 && tile.collides)
|
73190
74382
|
{
|
73191
74383
|
if (optimize)
|
73192
74384
|
{
|
@@ -75663,6 +76855,7 @@ Object.defineProperty(Phaser.Physics.P2.Body.prototype, "debug", {
|
|
75663
76855
|
/**
|
75664
76856
|
* A Body can be set to collide against the World bounds automatically if this is set to true. Otherwise it will leave the World.
|
75665
76857
|
* Note that this only applies if your World has bounds! The response to the collision should be managed via CollisionMaterials.
|
76858
|
+
*
|
75666
76859
|
* @name Phaser.Physics.P2.Body#collideWorldBounds
|
75667
76860
|
* @property {boolean} collideWorldBounds - Should the Body collide with the World bounds?
|
75668
76861
|
*/
|
@@ -76342,7 +77535,7 @@ Phaser.Physics.P2.DistanceConstraint = function (world, bodyA, bodyB, distance,
|
|
76342
77535
|
|
76343
77536
|
distance = world.pxm(distance);
|
76344
77537
|
|
76345
|
-
p2.DistanceConstraint.call(this, bodyA, bodyB, distance, maxForce);
|
77538
|
+
p2.DistanceConstraint.call(this, bodyA, bodyB, distance, {maxForce: maxForce});
|
76346
77539
|
|
76347
77540
|
};
|
76348
77541
|
|