phaser-rails 2.0.4.1 → 2.0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|