phaser-rails 2.6.1.0 → 2.6.2.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 +1066 -792
- data/vendor/assets/javascripts/phaser.map +1 -1
- data/vendor/assets/javascripts/phaser.min.js +26 -26
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20941a8d4d4008a1646c5e31bffacd105f354375
|
4
|
+
data.tar.gz: af1055871cf47a5f67a65dd7ec6f16b05dc1de2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5fe638710ab190e43038824de000f89e80ad9254de317f1137a3a426d42ccba9144744f6a818255a788ed9e8bb6f0f164994535befef9150f957190a0b7c3a96
|
7
|
+
data.tar.gz: 25e57d4de22928fb387fb302628c55f349e9056cada076ca4d35363ba09eeec2032fef605628527edaa1b90efd5d24e58635b2d930111a21ab74e57509b1e416
|
data/lib/phaser/rails/version.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
*
|
8
8
|
* Phaser - http://phaser.io
|
9
9
|
*
|
10
|
-
* v2.6.
|
10
|
+
* v2.6.2 "Kore Springs" - Built: Fri Aug 26 2016 01:02:57
|
11
11
|
*
|
12
12
|
* By Richard Davey http://www.photonstorm.com @photonstorm
|
13
13
|
*
|
@@ -13784,7 +13784,7 @@ PIXI.defaultRenderOptions = {
|
|
13784
13784
|
* @class PIXI.DisplayObject
|
13785
13785
|
* @constructor
|
13786
13786
|
*/
|
13787
|
-
PIXI.DisplayObject = function() {
|
13787
|
+
PIXI.DisplayObject = function () {
|
13788
13788
|
|
13789
13789
|
/**
|
13790
13790
|
* The coordinates, in pixels, of this DisplayObject, relative to its parent container.
|
@@ -13885,15 +13885,6 @@ PIXI.DisplayObject = function() {
|
|
13885
13885
|
*/
|
13886
13886
|
this.parent = null;
|
13887
13887
|
|
13888
|
-
/**
|
13889
|
-
* The stage that this DisplayObject is connected to.
|
13890
|
-
*
|
13891
|
-
* @property {PIXI.Stage} stage
|
13892
|
-
* @default
|
13893
|
-
* @readOnly
|
13894
|
-
*/
|
13895
|
-
this.stage = null;
|
13896
|
-
|
13897
13888
|
/**
|
13898
13889
|
* The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent.
|
13899
13890
|
* This value is the calculated total, based on the alpha values of all parents of this DisplayObjects
|
@@ -13995,7 +13986,7 @@ PIXI.DisplayObject = function() {
|
|
13995
13986
|
* @property {PIXI.Rectangle} _bounds - The cached bounds of this object.
|
13996
13987
|
* @private
|
13997
13988
|
*/
|
13998
|
-
this._bounds = new PIXI.Rectangle(0, 0,
|
13989
|
+
this._bounds = new PIXI.Rectangle(0, 0, 0, 0);
|
13999
13990
|
|
14000
13991
|
/**
|
14001
13992
|
* @property {PIXI.Rectangle} _currentBounds - The most recently calculated bounds of this object.
|
@@ -14030,8 +14021,7 @@ PIXI.DisplayObject.prototype = {
|
|
14030
14021
|
/**
|
14031
14022
|
* Destroy this DisplayObject.
|
14032
14023
|
*
|
14033
|
-
* Removes any cached sprites, sets renderable flag to false, and nulls
|
14034
|
-
* bounds and mask.
|
14024
|
+
* Removes any cached sprites, sets renderable flag to false, and nulls filters, bounds and mask.
|
14035
14025
|
*
|
14036
14026
|
* Also iteratively calls `destroy` on any children.
|
14037
14027
|
*
|
@@ -14053,7 +14043,6 @@ PIXI.DisplayObject.prototype = {
|
|
14053
14043
|
|
14054
14044
|
this.hitArea = null;
|
14055
14045
|
this.parent = null;
|
14056
|
-
this.stage = null;
|
14057
14046
|
this.worldTransform = null;
|
14058
14047
|
this.filterArea = null;
|
14059
14048
|
this.renderable = false;
|
@@ -14082,7 +14071,7 @@ PIXI.DisplayObject.prototype = {
|
|
14082
14071
|
* the new, updated, worldTransform property, along with the parent transform used.
|
14083
14072
|
*
|
14084
14073
|
* @method PIXI.DisplayObject#updateTransform
|
14085
|
-
* @param {PIXI.
|
14074
|
+
* @param {PIXI.DisplayObjectContainer} [parent] - Optional parent to calculate this DisplayObjects transform from.
|
14086
14075
|
* @return {PIXI.DisplayObject} - A reference to this DisplayObject.
|
14087
14076
|
*/
|
14088
14077
|
updateTransform: function (parent) {
|
@@ -14180,21 +14169,6 @@ PIXI.DisplayObject.prototype = {
|
|
14180
14169
|
|
14181
14170
|
},
|
14182
14171
|
|
14183
|
-
/**
|
14184
|
-
* Sets the root Stage object that this DisplayObject is connected to.
|
14185
|
-
*
|
14186
|
-
* @method PIXI.DisplayObject#setStageReference
|
14187
|
-
* @param {Phaser.Stage} stage - The stage that the object will have as its current stage reference
|
14188
|
-
* @return {PIXI.DisplayObject} - A reference to this DisplayObject.
|
14189
|
-
*/
|
14190
|
-
setStageReference: function (stage)
|
14191
|
-
{
|
14192
|
-
this.stage = stage;
|
14193
|
-
|
14194
|
-
return this;
|
14195
|
-
|
14196
|
-
},
|
14197
|
-
|
14198
14172
|
/**
|
14199
14173
|
* To be overridden by classes that require it.
|
14200
14174
|
*
|
@@ -14439,16 +14413,24 @@ Object.defineProperties(PIXI.DisplayObject.prototype, {
|
|
14439
14413
|
{
|
14440
14414
|
var item = this.parent;
|
14441
14415
|
|
14442
|
-
|
14416
|
+
if (!item)
|
14417
|
+
{
|
14418
|
+
return this.visible;
|
14419
|
+
}
|
14420
|
+
else
|
14443
14421
|
{
|
14444
|
-
|
14422
|
+
do
|
14445
14423
|
{
|
14446
|
-
|
14424
|
+
if (!item.visible)
|
14425
|
+
{
|
14426
|
+
return false;
|
14427
|
+
}
|
14428
|
+
|
14429
|
+
item = item.parent;
|
14447
14430
|
}
|
14431
|
+
while (item);
|
14448
14432
|
|
14449
|
-
item = item.parent;
|
14450
14433
|
}
|
14451
|
-
while (item);
|
14452
14434
|
|
14453
14435
|
return true;
|
14454
14436
|
}
|
@@ -14604,8 +14586,8 @@ Object.defineProperties(PIXI.DisplayObject.prototype, {
|
|
14604
14586
|
* @extends DisplayObject
|
14605
14587
|
* @constructor
|
14606
14588
|
*/
|
14607
|
-
PIXI.DisplayObjectContainer = function()
|
14608
|
-
|
14589
|
+
PIXI.DisplayObjectContainer = function () {
|
14590
|
+
|
14609
14591
|
PIXI.DisplayObject.call(this);
|
14610
14592
|
|
14611
14593
|
/**
|
@@ -14630,69 +14612,9 @@ PIXI.DisplayObjectContainer = function()
|
|
14630
14612
|
|
14631
14613
|
};
|
14632
14614
|
|
14633
|
-
// constructor
|
14634
14615
|
PIXI.DisplayObjectContainer.prototype = Object.create( PIXI.DisplayObject.prototype );
|
14635
14616
|
PIXI.DisplayObjectContainer.prototype.constructor = PIXI.DisplayObjectContainer;
|
14636
14617
|
|
14637
|
-
/**
|
14638
|
-
* The width of the displayObjectContainer, setting this will actually modify the scale to achieve the value set
|
14639
|
-
*
|
14640
|
-
* @property width
|
14641
|
-
* @type Number
|
14642
|
-
*/
|
14643
|
-
Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'width', {
|
14644
|
-
|
14645
|
-
get: function() {
|
14646
|
-
return this.scale.x * this.getLocalBounds().width;
|
14647
|
-
},
|
14648
|
-
|
14649
|
-
set: function(value) {
|
14650
|
-
|
14651
|
-
var width = this.getLocalBounds().width;
|
14652
|
-
|
14653
|
-
if (width !== 0)
|
14654
|
-
{
|
14655
|
-
this.scale.x = value / width;
|
14656
|
-
}
|
14657
|
-
else
|
14658
|
-
{
|
14659
|
-
this.scale.x = 1;
|
14660
|
-
}
|
14661
|
-
|
14662
|
-
this._width = value;
|
14663
|
-
}
|
14664
|
-
});
|
14665
|
-
|
14666
|
-
/**
|
14667
|
-
* The height of the displayObjectContainer, setting this will actually modify the scale to achieve the value set
|
14668
|
-
*
|
14669
|
-
* @property height
|
14670
|
-
* @type Number
|
14671
|
-
*/
|
14672
|
-
Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'height', {
|
14673
|
-
|
14674
|
-
get: function() {
|
14675
|
-
return this.scale.y * this.getLocalBounds().height;
|
14676
|
-
},
|
14677
|
-
|
14678
|
-
set: function(value) {
|
14679
|
-
|
14680
|
-
var height = this.getLocalBounds().height;
|
14681
|
-
|
14682
|
-
if (height !== 0)
|
14683
|
-
{
|
14684
|
-
this.scale.y = value / height;
|
14685
|
-
}
|
14686
|
-
else
|
14687
|
-
{
|
14688
|
-
this.scale.y = 1;
|
14689
|
-
}
|
14690
|
-
|
14691
|
-
this._height = value;
|
14692
|
-
}
|
14693
|
-
|
14694
|
-
});
|
14695
|
-
|
14696
14618
|
/**
|
14697
14619
|
* Adds a child to the container.
|
14698
14620
|
*
|
@@ -14700,9 +14622,10 @@ Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'height', {
|
|
14700
14622
|
* @param child {DisplayObject} The DisplayObject to add to the container
|
14701
14623
|
* @return {DisplayObject} The child that was added.
|
14702
14624
|
*/
|
14703
|
-
PIXI.DisplayObjectContainer.prototype.addChild = function(child)
|
14704
|
-
|
14625
|
+
PIXI.DisplayObjectContainer.prototype.addChild = function (child) {
|
14626
|
+
|
14705
14627
|
return this.addChildAt(child, this.children.length);
|
14628
|
+
|
14706
14629
|
};
|
14707
14630
|
|
14708
14631
|
/**
|
@@ -14713,11 +14636,11 @@ PIXI.DisplayObjectContainer.prototype.addChild = function(child)
|
|
14713
14636
|
* @param index {Number} The index to place the child in
|
14714
14637
|
* @return {DisplayObject} The child that was added.
|
14715
14638
|
*/
|
14716
|
-
PIXI.DisplayObjectContainer.prototype.addChildAt = function(child, index)
|
14717
|
-
|
14718
|
-
if(index >= 0 && index <= this.children.length)
|
14639
|
+
PIXI.DisplayObjectContainer.prototype.addChildAt = function (child, index) {
|
14640
|
+
|
14641
|
+
if (index >= 0 && index <= this.children.length)
|
14719
14642
|
{
|
14720
|
-
if(child.parent)
|
14643
|
+
if (child.parent)
|
14721
14644
|
{
|
14722
14645
|
child.parent.removeChild(child);
|
14723
14646
|
}
|
@@ -14726,14 +14649,13 @@ PIXI.DisplayObjectContainer.prototype.addChildAt = function(child, index)
|
|
14726
14649
|
|
14727
14650
|
this.children.splice(index, 0, child);
|
14728
14651
|
|
14729
|
-
if(this.stage)child.setStageReference(this.stage);
|
14730
|
-
|
14731
14652
|
return child;
|
14732
14653
|
}
|
14733
14654
|
else
|
14734
14655
|
{
|
14735
14656
|
throw new Error(child + 'addChildAt: The index '+ index +' supplied is out of bounds ' + this.children.length);
|
14736
14657
|
}
|
14658
|
+
|
14737
14659
|
};
|
14738
14660
|
|
14739
14661
|
/**
|
@@ -14743,16 +14665,18 @@ PIXI.DisplayObjectContainer.prototype.addChildAt = function(child, index)
|
|
14743
14665
|
* @param child {DisplayObject}
|
14744
14666
|
* @param child2 {DisplayObject}
|
14745
14667
|
*/
|
14746
|
-
PIXI.DisplayObjectContainer.prototype.swapChildren = function(child, child2)
|
14747
|
-
|
14748
|
-
if(child === child2)
|
14668
|
+
PIXI.DisplayObjectContainer.prototype.swapChildren = function (child, child2) {
|
14669
|
+
|
14670
|
+
if (child === child2)
|
14671
|
+
{
|
14749
14672
|
return;
|
14750
14673
|
}
|
14751
14674
|
|
14752
14675
|
var index1 = this.getChildIndex(child);
|
14753
14676
|
var index2 = this.getChildIndex(child2);
|
14754
14677
|
|
14755
|
-
if(index1 < 0 || index2 < 0)
|
14678
|
+
if (index1 < 0 || index2 < 0)
|
14679
|
+
{
|
14756
14680
|
throw new Error('swapChildren: Both the supplied DisplayObjects must be a child of the caller.');
|
14757
14681
|
}
|
14758
14682
|
|
@@ -14768,14 +14692,17 @@ PIXI.DisplayObjectContainer.prototype.swapChildren = function(child, child2)
|
|
14768
14692
|
* @param child {DisplayObject} The DisplayObject instance to identify
|
14769
14693
|
* @return {Number} The index position of the child display object to identify
|
14770
14694
|
*/
|
14771
|
-
PIXI.DisplayObjectContainer.prototype.getChildIndex = function(child)
|
14772
|
-
|
14695
|
+
PIXI.DisplayObjectContainer.prototype.getChildIndex = function (child) {
|
14696
|
+
|
14773
14697
|
var index = this.children.indexOf(child);
|
14698
|
+
|
14774
14699
|
if (index === -1)
|
14775
14700
|
{
|
14776
14701
|
throw new Error('The supplied DisplayObject must be a child of the caller');
|
14777
14702
|
}
|
14703
|
+
|
14778
14704
|
return index;
|
14705
|
+
|
14779
14706
|
};
|
14780
14707
|
|
14781
14708
|
/**
|
@@ -14785,15 +14712,18 @@ PIXI.DisplayObjectContainer.prototype.getChildIndex = function(child)
|
|
14785
14712
|
* @param child {DisplayObject} The child DisplayObject instance for which you want to change the index number
|
14786
14713
|
* @param index {Number} The resulting index number for the child display object
|
14787
14714
|
*/
|
14788
|
-
PIXI.DisplayObjectContainer.prototype.setChildIndex = function(child, index)
|
14789
|
-
|
14715
|
+
PIXI.DisplayObjectContainer.prototype.setChildIndex = function (child, index) {
|
14716
|
+
|
14790
14717
|
if (index < 0 || index >= this.children.length)
|
14791
14718
|
{
|
14792
14719
|
throw new Error('The supplied index is out of bounds');
|
14793
14720
|
}
|
14721
|
+
|
14794
14722
|
var currentIndex = this.getChildIndex(child);
|
14723
|
+
|
14795
14724
|
this.children.splice(currentIndex, 1); //remove from old position
|
14796
14725
|
this.children.splice(index, 0, child); //add at new position
|
14726
|
+
|
14797
14727
|
};
|
14798
14728
|
|
14799
14729
|
/**
|
@@ -14803,12 +14733,13 @@ PIXI.DisplayObjectContainer.prototype.setChildIndex = function(child, index)
|
|
14803
14733
|
* @param index {Number} The index to get the child from
|
14804
14734
|
* @return {DisplayObject} The child at the given index, if any.
|
14805
14735
|
*/
|
14806
|
-
PIXI.DisplayObjectContainer.prototype.getChildAt = function(index)
|
14807
|
-
|
14736
|
+
PIXI.DisplayObjectContainer.prototype.getChildAt = function (index) {
|
14737
|
+
|
14808
14738
|
if (index < 0 || index >= this.children.length)
|
14809
14739
|
{
|
14810
14740
|
throw new Error('getChildAt: Supplied index '+ index +' does not exist in the child list, or the supplied DisplayObject must be a child of the caller');
|
14811
14741
|
}
|
14742
|
+
|
14812
14743
|
return this.children[index];
|
14813
14744
|
|
14814
14745
|
};
|
@@ -14820,12 +14751,17 @@ PIXI.DisplayObjectContainer.prototype.getChildAt = function(index)
|
|
14820
14751
|
* @param child {DisplayObject} The DisplayObject to remove
|
14821
14752
|
* @return {DisplayObject} The child that was removed.
|
14822
14753
|
*/
|
14823
|
-
PIXI.DisplayObjectContainer.prototype.removeChild = function(child)
|
14824
|
-
|
14825
|
-
var index = this.children.indexOf(
|
14826
|
-
|
14754
|
+
PIXI.DisplayObjectContainer.prototype.removeChild = function (child) {
|
14755
|
+
|
14756
|
+
var index = this.children.indexOf(child);
|
14757
|
+
|
14758
|
+
if (index === -1)
|
14759
|
+
{
|
14760
|
+
return;
|
14761
|
+
}
|
14827
14762
|
|
14828
|
-
return this.removeChildAt(
|
14763
|
+
return this.removeChildAt(index);
|
14764
|
+
|
14829
14765
|
};
|
14830
14766
|
|
14831
14767
|
/**
|
@@ -14835,15 +14771,19 @@ PIXI.DisplayObjectContainer.prototype.removeChild = function(child)
|
|
14835
14771
|
* @param index {Number} The index to get the child from
|
14836
14772
|
* @return {DisplayObject} The child that was removed.
|
14837
14773
|
*/
|
14838
|
-
PIXI.DisplayObjectContainer.prototype.removeChildAt = function(index)
|
14839
|
-
|
14840
|
-
var child = this.getChildAt(
|
14841
|
-
|
14842
|
-
|
14774
|
+
PIXI.DisplayObjectContainer.prototype.removeChildAt = function (index) {
|
14775
|
+
|
14776
|
+
var child = this.getChildAt(index);
|
14777
|
+
|
14778
|
+
if (child)
|
14779
|
+
{
|
14780
|
+
child.parent = undefined;
|
14781
|
+
|
14782
|
+
this.children.splice(index, 1);
|
14783
|
+
}
|
14843
14784
|
|
14844
|
-
child.parent = undefined;
|
14845
|
-
this.children.splice( index, 1 );
|
14846
14785
|
return child;
|
14786
|
+
|
14847
14787
|
};
|
14848
14788
|
|
14849
14789
|
/**
|
@@ -14853,21 +14793,23 @@ PIXI.DisplayObjectContainer.prototype.removeChildAt = function(index)
|
|
14853
14793
|
* @param beginIndex {Number} The beginning position. Default value is 0.
|
14854
14794
|
* @param endIndex {Number} The ending position. Default value is size of the container.
|
14855
14795
|
*/
|
14856
|
-
PIXI.DisplayObjectContainer.prototype.removeChildren = function(beginIndex, endIndex)
|
14857
|
-
|
14858
|
-
|
14859
|
-
|
14860
|
-
var range = end - begin;
|
14796
|
+
PIXI.DisplayObjectContainer.prototype.removeChildren = function (beginIndex, endIndex) {
|
14797
|
+
|
14798
|
+
if (beginIndex === undefined) { beginIndex = 0; }
|
14799
|
+
if (endIndex === undefined) { endIndex = this.children.length; }
|
14861
14800
|
|
14862
|
-
|
14801
|
+
var range = endIndex - beginIndex;
|
14802
|
+
|
14803
|
+
if (range > 0 && range <= endIndex)
|
14863
14804
|
{
|
14864
14805
|
var removed = this.children.splice(begin, range);
|
14865
|
-
|
14806
|
+
|
14807
|
+
for (var i = 0; i < removed.length; i++)
|
14808
|
+
{
|
14866
14809
|
var child = removed[i];
|
14867
|
-
if(this.stage)
|
14868
|
-
child.removeStageReference();
|
14869
14810
|
child.parent = undefined;
|
14870
14811
|
}
|
14812
|
+
|
14871
14813
|
return removed;
|
14872
14814
|
}
|
14873
14815
|
else if (range === 0 && this.children.length === 0)
|
@@ -14878,6 +14820,7 @@ PIXI.DisplayObjectContainer.prototype.removeChildren = function(beginIndex, endI
|
|
14878
14820
|
{
|
14879
14821
|
throw new Error( 'removeChildren: Range Error, numeric values are outside the acceptable range' );
|
14880
14822
|
}
|
14823
|
+
|
14881
14824
|
};
|
14882
14825
|
|
14883
14826
|
/*
|
@@ -14886,8 +14829,8 @@ PIXI.DisplayObjectContainer.prototype.removeChildren = function(beginIndex, endI
|
|
14886
14829
|
* @method updateTransform
|
14887
14830
|
* @private
|
14888
14831
|
*/
|
14889
|
-
PIXI.DisplayObjectContainer.prototype.updateTransform = function()
|
14890
|
-
|
14832
|
+
PIXI.DisplayObjectContainer.prototype.updateTransform = function () {
|
14833
|
+
|
14891
14834
|
if (!this.visible)
|
14892
14835
|
{
|
14893
14836
|
return;
|
@@ -14904,25 +14847,50 @@ PIXI.DisplayObjectContainer.prototype.updateTransform = function()
|
|
14904
14847
|
{
|
14905
14848
|
this.children[i].updateTransform();
|
14906
14849
|
}
|
14850
|
+
|
14907
14851
|
};
|
14908
14852
|
|
14909
14853
|
// performance increase to avoid using call.. (10x faster)
|
14910
14854
|
PIXI.DisplayObjectContainer.prototype.displayObjectContainerUpdateTransform = PIXI.DisplayObjectContainer.prototype.updateTransform;
|
14911
14855
|
|
14912
14856
|
/**
|
14913
|
-
* Retrieves the bounds of the displayObjectContainer as a rectangle. The bounds calculation takes all visible children into consideration.
|
14857
|
+
* Retrieves the global bounds of the displayObjectContainer as a rectangle. The bounds calculation takes all visible children into consideration.
|
14914
14858
|
*
|
14915
14859
|
* @method getBounds
|
14860
|
+
* @param {PIXI.DisplayObject|PIXI.Matrix} [targetCoordinateSpace] Returns a rectangle that defines the area of the display object relative to the coordinate system of the targetCoordinateSpace object.
|
14916
14861
|
* @return {Rectangle} The rectangular bounding area
|
14917
14862
|
*/
|
14918
|
-
PIXI.DisplayObjectContainer.prototype.getBounds = function()
|
14919
|
-
|
14920
|
-
|
14921
|
-
|
14922
|
-
|
14863
|
+
PIXI.DisplayObjectContainer.prototype.getBounds = function (targetCoordinateSpace) {
|
14864
|
+
|
14865
|
+
var isTargetCoordinateSpaceDisplayObject = (targetCoordinateSpace && targetCoordinateSpace instanceof PIXI.DisplayObject);
|
14866
|
+
var isTargetCoordinateSpaceThisOrParent = true;
|
14867
|
+
|
14868
|
+
if (!isTargetCoordinateSpaceDisplayObject)
|
14869
|
+
{
|
14870
|
+
targetCoordinateSpace = this;
|
14871
|
+
}
|
14872
|
+
else if (targetCoordinateSpace instanceof PIXI.DisplayObjectContainer)
|
14873
|
+
{
|
14874
|
+
isTargetCoordinateSpaceThisOrParent = targetCoordinateSpace.contains(this);
|
14875
|
+
}
|
14876
|
+
else
|
14877
|
+
{
|
14878
|
+
isTargetCoordinateSpaceThisOrParent = false;
|
14923
14879
|
}
|
14924
14880
|
|
14925
|
-
|
14881
|
+
var i;
|
14882
|
+
|
14883
|
+
if (isTargetCoordinateSpaceDisplayObject)
|
14884
|
+
{
|
14885
|
+
var matrixCache = targetCoordinateSpace.worldTransform;
|
14886
|
+
|
14887
|
+
targetCoordinateSpace.worldTransform = PIXI.identityMatrix;
|
14888
|
+
|
14889
|
+
for (i = 0; i < targetCoordinateSpace.children.length; i++)
|
14890
|
+
{
|
14891
|
+
targetCoordinateSpace.children[i].updateTransform();
|
14892
|
+
}
|
14893
|
+
}
|
14926
14894
|
|
14927
14895
|
var minX = Infinity;
|
14928
14896
|
var minY = Infinity;
|
@@ -14936,10 +14904,10 @@ PIXI.DisplayObjectContainer.prototype.getBounds = function()
|
|
14936
14904
|
|
14937
14905
|
var childVisible = false;
|
14938
14906
|
|
14939
|
-
for (
|
14907
|
+
for (i = 0; i < this.children.length; i++)
|
14940
14908
|
{
|
14941
14909
|
var child = this.children[i];
|
14942
|
-
|
14910
|
+
|
14943
14911
|
if (!child.visible)
|
14944
14912
|
{
|
14945
14913
|
continue;
|
@@ -14948,90 +14916,133 @@ PIXI.DisplayObjectContainer.prototype.getBounds = function()
|
|
14948
14916
|
childVisible = true;
|
14949
14917
|
|
14950
14918
|
childBounds = this.children[i].getBounds();
|
14951
|
-
|
14952
|
-
minX = minX < childBounds.x ? minX : childBounds.x;
|
14953
|
-
minY = minY < childBounds.y ? minY : childBounds.y;
|
14919
|
+
|
14920
|
+
minX = (minX < childBounds.x) ? minX : childBounds.x;
|
14921
|
+
minY = (minY < childBounds.y) ? minY : childBounds.y;
|
14954
14922
|
|
14955
14923
|
childMaxX = childBounds.width + childBounds.x;
|
14956
14924
|
childMaxY = childBounds.height + childBounds.y;
|
14957
14925
|
|
14958
|
-
maxX = maxX > childMaxX ? maxX : childMaxX;
|
14959
|
-
maxY = maxY > childMaxY ? maxY : childMaxY;
|
14960
|
-
}
|
14961
|
-
|
14962
|
-
if (!childVisible)
|
14963
|
-
{
|
14964
|
-
return PIXI.EmptyRectangle;
|
14926
|
+
maxX = (maxX > childMaxX) ? maxX : childMaxX;
|
14927
|
+
maxY = (maxY > childMaxY) ? maxY : childMaxY;
|
14965
14928
|
}
|
14966
14929
|
|
14967
14930
|
var bounds = this._bounds;
|
14968
14931
|
|
14932
|
+
if (!childVisible)
|
14933
|
+
{
|
14934
|
+
bounds = new PIXI.Rectangle();
|
14935
|
+
|
14936
|
+
var w0 = bounds.x;
|
14937
|
+
var w1 = bounds.width + bounds.x;
|
14938
|
+
|
14939
|
+
var h0 = bounds.y;
|
14940
|
+
var h1 = bounds.height + bounds.y;
|
14941
|
+
|
14942
|
+
var worldTransform = this.worldTransform;
|
14943
|
+
|
14944
|
+
var a = worldTransform.a;
|
14945
|
+
var b = worldTransform.b;
|
14946
|
+
var c = worldTransform.c;
|
14947
|
+
var d = worldTransform.d;
|
14948
|
+
var tx = worldTransform.tx;
|
14949
|
+
var ty = worldTransform.ty;
|
14950
|
+
|
14951
|
+
var x1 = a * w1 + c * h1 + tx;
|
14952
|
+
var y1 = d * h1 + b * w1 + ty;
|
14953
|
+
|
14954
|
+
var x2 = a * w0 + c * h1 + tx;
|
14955
|
+
var y2 = d * h1 + b * w0 + ty;
|
14956
|
+
|
14957
|
+
var x3 = a * w0 + c * h0 + tx;
|
14958
|
+
var y3 = d * h0 + b * w0 + ty;
|
14959
|
+
|
14960
|
+
var x4 = a * w1 + c * h0 + tx;
|
14961
|
+
var y4 = d * h0 + b * w1 + ty;
|
14962
|
+
|
14963
|
+
maxX = x1;
|
14964
|
+
maxY = y1;
|
14965
|
+
|
14966
|
+
minX = x1;
|
14967
|
+
minY = y1;
|
14968
|
+
|
14969
|
+
minX = x2 < minX ? x2 : minX;
|
14970
|
+
minX = x3 < minX ? x3 : minX;
|
14971
|
+
minX = x4 < minX ? x4 : minX;
|
14972
|
+
|
14973
|
+
minY = y2 < minY ? y2 : minY;
|
14974
|
+
minY = y3 < minY ? y3 : minY;
|
14975
|
+
minY = y4 < minY ? y4 : minY;
|
14976
|
+
|
14977
|
+
maxX = x2 > maxX ? x2 : maxX;
|
14978
|
+
maxX = x3 > maxX ? x3 : maxX;
|
14979
|
+
maxX = x4 > maxX ? x4 : maxX;
|
14980
|
+
|
14981
|
+
maxY = y2 > maxY ? y2 : maxY;
|
14982
|
+
maxY = y3 > maxY ? y3 : maxY;
|
14983
|
+
maxY = y4 > maxY ? y4 : maxY;
|
14984
|
+
}
|
14985
|
+
|
14969
14986
|
bounds.x = minX;
|
14970
14987
|
bounds.y = minY;
|
14971
14988
|
bounds.width = maxX - minX;
|
14972
14989
|
bounds.height = maxY - minY;
|
14973
14990
|
|
14974
|
-
|
14975
|
-
|
14976
|
-
|
14977
|
-
/**
|
14978
|
-
* Retrieves the non-global local bounds of the displayObjectContainer as a rectangle. The calculation takes all visible children into consideration.
|
14979
|
-
*
|
14980
|
-
* @method getLocalBounds
|
14981
|
-
* @return {Rectangle} The rectangular bounding area
|
14982
|
-
*/
|
14983
|
-
PIXI.DisplayObjectContainer.prototype.getLocalBounds = function()
|
14984
|
-
{
|
14985
|
-
var matrixCache = this.worldTransform;
|
14986
|
-
|
14987
|
-
this.worldTransform = PIXI.identityMatrix;
|
14991
|
+
if (isTargetCoordinateSpaceDisplayObject)
|
14992
|
+
{
|
14993
|
+
targetCoordinateSpace.worldTransform = matrixCache;
|
14988
14994
|
|
14989
|
-
|
14990
|
-
|
14991
|
-
|
14995
|
+
for (i = 0; i < targetCoordinateSpace.children.length; i++)
|
14996
|
+
{
|
14997
|
+
targetCoordinateSpace.children[i].updateTransform();
|
14998
|
+
}
|
14992
14999
|
}
|
14993
15000
|
|
14994
|
-
|
15001
|
+
if (!isTargetCoordinateSpaceThisOrParent)
|
15002
|
+
{
|
15003
|
+
var targetCoordinateSpaceBounds = targetCoordinateSpace.getBounds();
|
14995
15004
|
|
14996
|
-
|
14997
|
-
|
14998
|
-
|
14999
|
-
{
|
15000
|
-
this.children[i].updateTransform();
|
15001
|
-
}
|
15005
|
+
bounds.x -= targetCoordinateSpaceBounds.x;
|
15006
|
+
bounds.y -= targetCoordinateSpaceBounds.y;
|
15007
|
+
}
|
15002
15008
|
|
15003
15009
|
return bounds;
|
15010
|
+
|
15004
15011
|
};
|
15005
15012
|
|
15006
15013
|
/**
|
15007
|
-
*
|
15014
|
+
* Retrieves the non-global local bounds of the displayObjectContainer as a rectangle without any transformations. The calculation takes all visible children into consideration.
|
15008
15015
|
*
|
15009
|
-
* @method
|
15010
|
-
* @
|
15016
|
+
* @method getLocalBounds
|
15017
|
+
* @return {Rectangle} The rectangular bounding area
|
15011
15018
|
*/
|
15012
|
-
PIXI.DisplayObjectContainer.prototype.
|
15013
|
-
|
15014
|
-
this.
|
15015
|
-
|
15016
|
-
for (var i=0; i < this.children.length; i++)
|
15017
|
-
{
|
15018
|
-
this.children[i].setStageReference(stage)
|
15019
|
-
}
|
15019
|
+
PIXI.DisplayObjectContainer.prototype.getLocalBounds = function () {
|
15020
|
+
|
15021
|
+
return this.getBounds(this);
|
15022
|
+
|
15020
15023
|
};
|
15021
15024
|
|
15022
15025
|
/**
|
15023
|
-
|
15024
|
-
|
15025
|
-
|
15026
|
-
|
15027
|
-
|
15028
|
-
|
15029
|
-
|
15026
|
+
* Determines whether the specified display object is a child of the DisplayObjectContainer instance or the instance itself.
|
15027
|
+
*
|
15028
|
+
* @method contains
|
15029
|
+
* @param {DisplayObject} child
|
15030
|
+
* @returns {boolean}
|
15031
|
+
*/
|
15032
|
+
PIXI.DisplayObjectContainer.prototype.contains = function (child) {
|
15033
|
+
|
15034
|
+
if (!child)
|
15030
15035
|
{
|
15031
|
-
|
15036
|
+
return false;
|
15037
|
+
}
|
15038
|
+
else if (child === this)
|
15039
|
+
{
|
15040
|
+
return true;
|
15041
|
+
}
|
15042
|
+
else
|
15043
|
+
{
|
15044
|
+
return this.contains(child.parent);
|
15032
15045
|
}
|
15033
|
-
|
15034
|
-
this.stage = null;
|
15035
15046
|
};
|
15036
15047
|
|
15037
15048
|
/**
|
@@ -15041,9 +15052,12 @@ PIXI.DisplayObjectContainer.prototype.removeStageReference = function()
|
|
15041
15052
|
* @param renderSession {RenderSession}
|
15042
15053
|
* @private
|
15043
15054
|
*/
|
15044
|
-
PIXI.DisplayObjectContainer.prototype._renderWebGL = function(renderSession)
|
15045
|
-
|
15046
|
-
if (!this.visible || this.alpha <= 0)
|
15055
|
+
PIXI.DisplayObjectContainer.prototype._renderWebGL = function (renderSession) {
|
15056
|
+
|
15057
|
+
if (!this.visible || this.alpha <= 0)
|
15058
|
+
{
|
15059
|
+
return;
|
15060
|
+
}
|
15047
15061
|
|
15048
15062
|
if (this._cacheAsBitmap)
|
15049
15063
|
{
|
@@ -15090,6 +15104,7 @@ PIXI.DisplayObjectContainer.prototype._renderWebGL = function(renderSession)
|
|
15090
15104
|
this.children[i]._renderWebGL(renderSession);
|
15091
15105
|
}
|
15092
15106
|
}
|
15107
|
+
|
15093
15108
|
};
|
15094
15109
|
|
15095
15110
|
/**
|
@@ -15099,9 +15114,12 @@ PIXI.DisplayObjectContainer.prototype._renderWebGL = function(renderSession)
|
|
15099
15114
|
* @param renderSession {RenderSession}
|
15100
15115
|
* @private
|
15101
15116
|
*/
|
15102
|
-
PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession)
|
15103
|
-
|
15104
|
-
if (this.visible === false || this.alpha === 0)
|
15117
|
+
PIXI.DisplayObjectContainer.prototype._renderCanvas = function (renderSession) {
|
15118
|
+
|
15119
|
+
if (this.visible === false || this.alpha === 0)
|
15120
|
+
{
|
15121
|
+
return;
|
15122
|
+
}
|
15105
15123
|
|
15106
15124
|
if (this._cacheAsBitmap)
|
15107
15125
|
{
|
@@ -15126,6 +15144,66 @@ PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession)
|
|
15126
15144
|
|
15127
15145
|
};
|
15128
15146
|
|
15147
|
+
/**
|
15148
|
+
* The width of the displayObjectContainer, setting this will actually modify the scale to achieve the value set
|
15149
|
+
*
|
15150
|
+
* @property width
|
15151
|
+
* @type Number
|
15152
|
+
*/
|
15153
|
+
Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'width', {
|
15154
|
+
|
15155
|
+
get: function() {
|
15156
|
+
return this.getLocalBounds().width * this.scale.x;
|
15157
|
+
},
|
15158
|
+
|
15159
|
+
set: function(value) {
|
15160
|
+
|
15161
|
+
var width = this.getLocalBounds().width;
|
15162
|
+
|
15163
|
+
if (width !== 0)
|
15164
|
+
{
|
15165
|
+
this.scale.x = value / width;
|
15166
|
+
}
|
15167
|
+
else
|
15168
|
+
{
|
15169
|
+
this.scale.x = 1;
|
15170
|
+
}
|
15171
|
+
|
15172
|
+
this._width = value;
|
15173
|
+
}
|
15174
|
+
});
|
15175
|
+
|
15176
|
+
/**
|
15177
|
+
* The height of the displayObjectContainer, setting this will actually modify the scale to achieve the value set
|
15178
|
+
*
|
15179
|
+
* @property height
|
15180
|
+
* @type Number
|
15181
|
+
*/
|
15182
|
+
Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'height', {
|
15183
|
+
|
15184
|
+
get: function() {
|
15185
|
+
return this.getLocalBounds().height * this.scale.y;
|
15186
|
+
},
|
15187
|
+
|
15188
|
+
set: function(value) {
|
15189
|
+
|
15190
|
+
var height = this.getLocalBounds().height;
|
15191
|
+
|
15192
|
+
if (height !== 0)
|
15193
|
+
{
|
15194
|
+
this.scale.y = value / height;
|
15195
|
+
}
|
15196
|
+
else
|
15197
|
+
{
|
15198
|
+
this.scale.y = 1;
|
15199
|
+
}
|
15200
|
+
|
15201
|
+
this._height = value;
|
15202
|
+
}
|
15203
|
+
|
15204
|
+
});
|
15205
|
+
|
15206
|
+
|
15129
15207
|
/**
|
15130
15208
|
* @author Mat Groves http://matgroves.com/ @Doormat23
|
15131
15209
|
*/
|
@@ -15137,14 +15215,9 @@ PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession)
|
|
15137
15215
|
* @extends DisplayObjectContainer
|
15138
15216
|
* @constructor
|
15139
15217
|
* @param texture {Texture} The texture for this sprite
|
15140
|
-
*
|
15141
|
-
* A sprite can be created directly from an image like this :
|
15142
|
-
* var sprite = new PIXI.Sprite.fromImage('assets/image.png');
|
15143
|
-
* yourStage.addChild(sprite);
|
15144
|
-
* then obviously don't forget to add it to the stage you have already created
|
15145
15218
|
*/
|
15146
|
-
PIXI.Sprite = function(texture)
|
15147
|
-
|
15219
|
+
PIXI.Sprite = function (texture) {
|
15220
|
+
|
15148
15221
|
PIXI.DisplayObjectContainer.call(this);
|
15149
15222
|
|
15150
15223
|
/**
|
@@ -15224,7 +15297,8 @@ PIXI.Sprite = function(texture)
|
|
15224
15297
|
this.blendMode = PIXI.blendModes.NORMAL;
|
15225
15298
|
|
15226
15299
|
/**
|
15227
|
-
* The shader that will be used to render
|
15300
|
+
* The shader that will be used to render this Sprite.
|
15301
|
+
* Set to null to remove a current shader.
|
15228
15302
|
*
|
15229
15303
|
* @property shader
|
15230
15304
|
* @type AbstractFilter
|
@@ -15444,6 +15518,36 @@ PIXI.Sprite.prototype.getBounds = function(matrix)
|
|
15444
15518
|
return bounds;
|
15445
15519
|
};
|
15446
15520
|
|
15521
|
+
/**
|
15522
|
+
* Retrieves the non-global local bounds of the Sprite as a rectangle. The calculation takes all visible children into consideration.
|
15523
|
+
*
|
15524
|
+
* @method getLocalBounds
|
15525
|
+
* @return {Rectangle} The rectangular bounding area
|
15526
|
+
*/
|
15527
|
+
PIXI.Sprite.prototype.getLocalBounds = function () {
|
15528
|
+
|
15529
|
+
var matrixCache = this.worldTransform;
|
15530
|
+
|
15531
|
+
this.worldTransform = PIXI.identityMatrix;
|
15532
|
+
|
15533
|
+
for (var i = 0; i < this.children.length; i++)
|
15534
|
+
{
|
15535
|
+
this.children[i].updateTransform();
|
15536
|
+
}
|
15537
|
+
|
15538
|
+
var bounds = this.getBounds();
|
15539
|
+
|
15540
|
+
this.worldTransform = matrixCache;
|
15541
|
+
|
15542
|
+
for (i = 0; i < this.children.length; i++)
|
15543
|
+
{
|
15544
|
+
this.children[i].updateTransform();
|
15545
|
+
}
|
15546
|
+
|
15547
|
+
return bounds;
|
15548
|
+
|
15549
|
+
};
|
15550
|
+
|
15447
15551
|
/**
|
15448
15552
|
* Renders the object using the WebGL renderer
|
15449
15553
|
*
|
@@ -15631,8 +15735,6 @@ PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix)
|
|
15631
15735
|
|
15632
15736
|
var container = new PIXI.SpriteBatch();
|
15633
15737
|
|
15634
|
-
stage.addChild(container);
|
15635
|
-
|
15636
15738
|
for(var i = 0; i < 100; i++)
|
15637
15739
|
{
|
15638
15740
|
var sprite = new PIXI.Sprite.fromImage("myImage.png");
|
@@ -20316,12 +20418,12 @@ PIXI.CanvasRenderer = function (game) {
|
|
20316
20418
|
PIXI.CanvasRenderer.prototype.constructor = PIXI.CanvasRenderer;
|
20317
20419
|
|
20318
20420
|
/**
|
20319
|
-
* Renders the Stage to this canvas view
|
20421
|
+
* Renders the DisplayObjectContainer, usually the Phaser.Stage, to this canvas view.
|
20320
20422
|
*
|
20321
20423
|
* @method render
|
20322
|
-
* @param
|
20424
|
+
* @param root {Phaser.Stage|PIXI.DisplayObjectContainer} The root element to be rendered.
|
20323
20425
|
*/
|
20324
|
-
PIXI.CanvasRenderer.prototype.render = function (
|
20426
|
+
PIXI.CanvasRenderer.prototype.render = function (root) {
|
20325
20427
|
|
20326
20428
|
this.context.setTransform(1, 0, 0, 1, 0, 0);
|
20327
20429
|
|
@@ -20345,17 +20447,18 @@ PIXI.CanvasRenderer.prototype.render = function (stage) {
|
|
20345
20447
|
{
|
20346
20448
|
this.context.clearRect(0, 0, this.width, this.height);
|
20347
20449
|
}
|
20348
|
-
else
|
20450
|
+
else if (root._bgColor)
|
20349
20451
|
{
|
20350
|
-
this.context.fillStyle =
|
20452
|
+
this.context.fillStyle = root._bgColor.rgba;
|
20351
20453
|
this.context.fillRect(0, 0, this.width , this.height);
|
20352
20454
|
}
|
20353
20455
|
}
|
20354
20456
|
|
20355
|
-
this.renderDisplayObject(
|
20457
|
+
this.renderDisplayObject(root);
|
20356
20458
|
|
20357
20459
|
};
|
20358
20460
|
|
20461
|
+
|
20359
20462
|
/**
|
20360
20463
|
* Removes everything from the renderer and optionally removes the Canvas DOM element.
|
20361
20464
|
*
|
@@ -22639,7 +22742,6 @@ Object.defineProperty(PIXI.TilingSprite.prototype, 'height', {
|
|
22639
22742
|
|
22640
22743
|
var root = this;
|
22641
22744
|
|
22642
|
-
/* global Phaser:true */
|
22643
22745
|
/**
|
22644
22746
|
* @author Richard Davey <rich@photonstorm.com>
|
22645
22747
|
* @copyright 2016 Photon Storm Ltd.
|
@@ -22649,14 +22751,14 @@ Object.defineProperty(PIXI.TilingSprite.prototype, 'height', {
|
|
22649
22751
|
/**
|
22650
22752
|
* @namespace Phaser
|
22651
22753
|
*/
|
22652
|
-
var Phaser = Phaser || {
|
22754
|
+
var Phaser = Phaser || { // jshint ignore:line
|
22653
22755
|
|
22654
22756
|
/**
|
22655
22757
|
* The Phaser version number.
|
22656
22758
|
* @constant
|
22657
22759
|
* @type {string}
|
22658
22760
|
*/
|
22659
|
-
VERSION: '2.6.
|
22761
|
+
VERSION: '2.6.2',
|
22660
22762
|
|
22661
22763
|
/**
|
22662
22764
|
* An array of Phaser game instances.
|
@@ -23242,7 +23344,7 @@ if (!Array.isArray)
|
|
23242
23344
|
{
|
23243
23345
|
Array.isArray = function (arg)
|
23244
23346
|
{
|
23245
|
-
return Object.prototype.toString.call(arg)
|
23347
|
+
return Object.prototype.toString.call(arg) === '[object Array]';
|
23246
23348
|
};
|
23247
23349
|
}
|
23248
23350
|
|
@@ -24265,7 +24367,9 @@ Phaser.Circle.contains = function (a, x, y) {
|
|
24265
24367
|
* @return {boolean} A value of true if the object has exactly the same values for the x, y and diameter properties as this Circle object; otherwise false.
|
24266
24368
|
*/
|
24267
24369
|
Phaser.Circle.equals = function (a, b) {
|
24268
|
-
|
24370
|
+
|
24371
|
+
return (a.x === b.x && a.y === b.y && a.diameter === b.diameter);
|
24372
|
+
|
24269
24373
|
};
|
24270
24374
|
|
24271
24375
|
/**
|
@@ -24277,7 +24381,9 @@ Phaser.Circle.equals = function (a, b) {
|
|
24277
24381
|
* @return {boolean} A value of true if the specified object intersects with this Circle object; otherwise false.
|
24278
24382
|
*/
|
24279
24383
|
Phaser.Circle.intersects = function (a, b) {
|
24384
|
+
|
24280
24385
|
return (Phaser.Math.distance(a.x, a.y, b.x, b.y) <= (a.radius + b.radius));
|
24386
|
+
|
24281
24387
|
};
|
24282
24388
|
|
24283
24389
|
/**
|
@@ -24982,7 +25088,7 @@ Phaser.Line.prototype = {
|
|
24982
25088
|
|
24983
25089
|
var i = 1;
|
24984
25090
|
|
24985
|
-
while (!((x1
|
25091
|
+
while (!((x1 === x2) && (y1 === y2)))
|
24986
25092
|
{
|
24987
25093
|
var e2 = err << 1;
|
24988
25094
|
|
@@ -25316,7 +25422,7 @@ Phaser.Line.intersects = function (a, b, asSegment, result) {
|
|
25316
25422
|
*
|
25317
25423
|
* The for the purposes of this function rectangles are considered 'solid'.
|
25318
25424
|
*
|
25319
|
-
* @method intersectsRectangle
|
25425
|
+
* @method Phaser.Line.intersectsRectangle
|
25320
25426
|
* @param {Phaser.Line} line - The line to check for intersection with.
|
25321
25427
|
* @param {Phaser.Rectangle|object} rect - The rectangle, or rectangle-like object, to check for intersection with.
|
25322
25428
|
* @return {boolean} True if the line intersects with the rectangle edges, or starts or ends within the rectangle.
|
@@ -27951,7 +28057,7 @@ Phaser.Rectangle.containsRect = function (a, b) {
|
|
27951
28057
|
*/
|
27952
28058
|
Phaser.Rectangle.equals = function (a, b) {
|
27953
28059
|
|
27954
|
-
return (a.x
|
28060
|
+
return (a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height);
|
27955
28061
|
|
27956
28062
|
};
|
27957
28063
|
|
@@ -31772,7 +31878,11 @@ Phaser.Stage.prototype.updateTransform = function () {
|
|
31772
31878
|
*/
|
31773
31879
|
Phaser.Stage.prototype.checkVisibility = function () {
|
31774
31880
|
|
31775
|
-
if (document.
|
31881
|
+
if (document.hidden !== undefined)
|
31882
|
+
{
|
31883
|
+
this._hiddenVar = 'visibilitychange';
|
31884
|
+
}
|
31885
|
+
else if (document.webkitHidden !== undefined)
|
31776
31886
|
{
|
31777
31887
|
this._hiddenVar = 'webkitvisibilitychange';
|
31778
31888
|
}
|
@@ -31784,10 +31894,6 @@ Phaser.Stage.prototype.checkVisibility = function () {
|
|
31784
31894
|
{
|
31785
31895
|
this._hiddenVar = 'msvisibilitychange';
|
31786
31896
|
}
|
31787
|
-
else if (document.hidden !== undefined)
|
31788
|
-
{
|
31789
|
-
this._hiddenVar = 'visibilitychange';
|
31790
|
-
}
|
31791
31897
|
else
|
31792
31898
|
{
|
31793
31899
|
this._hiddenVar = null;
|
@@ -32276,6 +32382,13 @@ Phaser.Group.RETURN_TOTAL = 1;
|
|
32276
32382
|
*/
|
32277
32383
|
Phaser.Group.RETURN_CHILD = 2;
|
32278
32384
|
|
32385
|
+
/**
|
32386
|
+
* A returnType value, as specified in {@link #iterate} eg.
|
32387
|
+
* @constant
|
32388
|
+
* @type {integer}
|
32389
|
+
*/
|
32390
|
+
Phaser.Group.RETURN_ALL = 3;
|
32391
|
+
|
32279
32392
|
/**
|
32280
32393
|
* A sort ordering value, as specified in {@link #sort} eg.
|
32281
32394
|
* @constant
|
@@ -32348,7 +32461,7 @@ Phaser.Group.prototype.add = function (child, silent, index) {
|
|
32348
32461
|
this.addToHash(child);
|
32349
32462
|
}
|
32350
32463
|
|
32351
|
-
if (this.inputEnableChildren && !child.inputEnabled)
|
32464
|
+
if (this.inputEnableChildren && (!child.input || child.inputEnabled))
|
32352
32465
|
{
|
32353
32466
|
child.inputEnabled = true;
|
32354
32467
|
}
|
@@ -32637,7 +32750,7 @@ Phaser.Group.prototype.updateZ = function () {
|
|
32637
32750
|
* the `alignTo` method in order to be positioned by this call. All default Phaser Game Objects have
|
32638
32751
|
* this.
|
32639
32752
|
*
|
32640
|
-
* The grid dimensions are determined by the first four arguments. The `
|
32753
|
+
* The grid dimensions are determined by the first four arguments. The `width` and `height` arguments
|
32641
32754
|
* relate to the width and height of the grid respectively.
|
32642
32755
|
*
|
32643
32756
|
* For example if the Group had 100 children in it:
|
@@ -32651,13 +32764,13 @@ Phaser.Group.prototype.updateZ = function () {
|
|
32651
32764
|
*
|
32652
32765
|
* This will align the children into a grid of 25x4, again using 32 pixels per grid cell.
|
32653
32766
|
*
|
32654
|
-
* You can choose to set _either_ the `
|
32767
|
+
* You can choose to set _either_ the `width` or `height` value to -1. Doing so tells the method
|
32655
32768
|
* to keep on aligning children until there are no children left. For example if this Group had
|
32656
32769
|
* 48 children in it, the following:
|
32657
32770
|
*
|
32658
32771
|
* `Group.align(-1, 8, 32, 32)`
|
32659
32772
|
*
|
32660
|
-
* ... will align the children so that there are 8
|
32773
|
+
* ... will align the children so that there are 8 children vertically (the second argument),
|
32661
32774
|
* and each row will contain 6 sprites, except the last one, which will contain 5 (totaling 48)
|
32662
32775
|
*
|
32663
32776
|
* You can also do:
|
@@ -32675,26 +32788,27 @@ Phaser.Group.prototype.updateZ = function () {
|
|
32675
32788
|
* The final argument; `offset` lets you start the alignment from a specific child index.
|
32676
32789
|
*
|
32677
32790
|
* @method Phaser.Group#align
|
32678
|
-
* @param {integer}
|
32679
|
-
* @param {integer}
|
32791
|
+
* @param {integer} width - The width of the grid in items (not pixels). Set to -1 for a dynamic width. If -1 then you must set an explicit height value.
|
32792
|
+
* @param {integer} height - The height of the grid in items (not pixels). Set to -1 for a dynamic height. If -1 then you must set an explicit width value.
|
32680
32793
|
* @param {integer} cellWidth - The width of each grid cell, in pixels.
|
32681
32794
|
* @param {integer} cellHeight - The height of each grid cell, in pixels.
|
32682
32795
|
* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`.
|
32683
32796
|
* @param {integer} [offset=0] - Optional index to start the alignment from. Defaults to zero, the first child in the Group, but can be set to any valid child index value.
|
32797
|
+
* @return {boolean} True if the Group children were aligned, otherwise false.
|
32684
32798
|
*/
|
32685
|
-
Phaser.Group.prototype.align = function (
|
32799
|
+
Phaser.Group.prototype.align = function (width, height, cellWidth, cellHeight, position, offset) {
|
32686
32800
|
|
32687
32801
|
if (position === undefined) { position = Phaser.TOP_LEFT; }
|
32688
32802
|
if (offset === undefined) { offset = 0; }
|
32689
32803
|
|
32690
|
-
if (this.children.length === 0 || offset > this.children.length || (
|
32804
|
+
if (this.children.length === 0 || offset > this.children.length || (width === -1 && height === -1))
|
32691
32805
|
{
|
32692
|
-
return;
|
32806
|
+
return false;
|
32693
32807
|
}
|
32694
32808
|
|
32695
32809
|
var r = new Phaser.Rectangle(0, 0, cellWidth, cellHeight);
|
32696
|
-
var w = (
|
32697
|
-
var h = (
|
32810
|
+
var w = (width * cellWidth);
|
32811
|
+
var h = (height * cellHeight);
|
32698
32812
|
|
32699
32813
|
for (var i = offset; i < this.children.length; i++)
|
32700
32814
|
{
|
@@ -32709,7 +32823,7 @@ Phaser.Group.prototype.align = function (rows, columns, cellWidth, cellHeight, p
|
|
32709
32823
|
continue;
|
32710
32824
|
}
|
32711
32825
|
|
32712
|
-
if (
|
32826
|
+
if (width === -1)
|
32713
32827
|
{
|
32714
32828
|
// We keep laying them out horizontally until we've done them all
|
32715
32829
|
r.y += cellHeight;
|
@@ -32720,7 +32834,7 @@ Phaser.Group.prototype.align = function (rows, columns, cellWidth, cellHeight, p
|
|
32720
32834
|
r.y = 0;
|
32721
32835
|
}
|
32722
32836
|
}
|
32723
|
-
else if (
|
32837
|
+
else if (height === -1)
|
32724
32838
|
{
|
32725
32839
|
// We keep laying them out vertically until we've done them all
|
32726
32840
|
r.x += cellWidth;
|
@@ -32744,12 +32858,14 @@ Phaser.Group.prototype.align = function (rows, columns, cellWidth, cellHeight, p
|
|
32744
32858
|
if (r.y === h)
|
32745
32859
|
{
|
32746
32860
|
// We've hit the column limit, so return, even if there are children left
|
32747
|
-
return;
|
32861
|
+
return true;
|
32748
32862
|
}
|
32749
32863
|
}
|
32750
32864
|
}
|
32751
32865
|
}
|
32752
32866
|
|
32867
|
+
return true;
|
32868
|
+
|
32753
32869
|
};
|
32754
32870
|
|
32755
32871
|
/**
|
@@ -33129,34 +33245,34 @@ Phaser.Group.prototype.setProperty = function (child, key, value, operation, for
|
|
33129
33245
|
if (len === 1)
|
33130
33246
|
{
|
33131
33247
|
if (operation === 0) { child[key[0]] = value; }
|
33132
|
-
else if (operation
|
33133
|
-
else if (operation
|
33134
|
-
else if (operation
|
33135
|
-
else if (operation
|
33248
|
+
else if (operation === 1) { child[key[0]] += value; }
|
33249
|
+
else if (operation === 2) { child[key[0]] -= value; }
|
33250
|
+
else if (operation === 3) { child[key[0]] *= value; }
|
33251
|
+
else if (operation === 4) { child[key[0]] /= value; }
|
33136
33252
|
}
|
33137
33253
|
else if (len === 2)
|
33138
33254
|
{
|
33139
33255
|
if (operation === 0) { child[key[0]][key[1]] = value; }
|
33140
|
-
else if (operation
|
33141
|
-
else if (operation
|
33142
|
-
else if (operation
|
33143
|
-
else if (operation
|
33256
|
+
else if (operation === 1) { child[key[0]][key[1]] += value; }
|
33257
|
+
else if (operation === 2) { child[key[0]][key[1]] -= value; }
|
33258
|
+
else if (operation === 3) { child[key[0]][key[1]] *= value; }
|
33259
|
+
else if (operation === 4) { child[key[0]][key[1]] /= value; }
|
33144
33260
|
}
|
33145
33261
|
else if (len === 3)
|
33146
33262
|
{
|
33147
33263
|
if (operation === 0) { child[key[0]][key[1]][key[2]] = value; }
|
33148
|
-
else if (operation
|
33149
|
-
else if (operation
|
33150
|
-
else if (operation
|
33151
|
-
else if (operation
|
33264
|
+
else if (operation === 1) { child[key[0]][key[1]][key[2]] += value; }
|
33265
|
+
else if (operation === 2) { child[key[0]][key[1]][key[2]] -= value; }
|
33266
|
+
else if (operation === 3) { child[key[0]][key[1]][key[2]] *= value; }
|
33267
|
+
else if (operation === 4) { child[key[0]][key[1]][key[2]] /= value; }
|
33152
33268
|
}
|
33153
33269
|
else if (len === 4)
|
33154
33270
|
{
|
33155
33271
|
if (operation === 0) { child[key[0]][key[1]][key[2]][key[3]] = value; }
|
33156
|
-
else if (operation
|
33157
|
-
else if (operation
|
33158
|
-
else if (operation
|
33159
|
-
else if (operation
|
33272
|
+
else if (operation === 1) { child[key[0]][key[1]][key[2]][key[3]] += value; }
|
33273
|
+
else if (operation === 2) { child[key[0]][key[1]][key[2]][key[3]] -= value; }
|
33274
|
+
else if (operation === 3) { child[key[0]][key[1]][key[2]][key[3]] *= value; }
|
33275
|
+
else if (operation === 4) { child[key[0]][key[1]][key[2]][key[3]] /= value; }
|
33160
33276
|
}
|
33161
33277
|
|
33162
33278
|
return true;
|
@@ -33447,40 +33563,37 @@ Phaser.Group.prototype.callbackFromArray = function (child, callback, length) {
|
|
33447
33563
|
|
33448
33564
|
// Kinda looks like a Christmas tree
|
33449
33565
|
|
33450
|
-
if (length
|
33566
|
+
if (length === 1)
|
33451
33567
|
{
|
33452
33568
|
if (child[callback[0]])
|
33453
33569
|
{
|
33454
33570
|
return child[callback[0]];
|
33455
33571
|
}
|
33456
33572
|
}
|
33457
|
-
else if (length
|
33573
|
+
else if (length === 2)
|
33458
33574
|
{
|
33459
33575
|
if (child[callback[0]][callback[1]])
|
33460
33576
|
{
|
33461
33577
|
return child[callback[0]][callback[1]];
|
33462
33578
|
}
|
33463
33579
|
}
|
33464
|
-
else if (length
|
33580
|
+
else if (length === 3)
|
33465
33581
|
{
|
33466
33582
|
if (child[callback[0]][callback[1]][callback[2]])
|
33467
33583
|
{
|
33468
33584
|
return child[callback[0]][callback[1]][callback[2]];
|
33469
33585
|
}
|
33470
33586
|
}
|
33471
|
-
else if (length
|
33587
|
+
else if (length === 4)
|
33472
33588
|
{
|
33473
33589
|
if (child[callback[0]][callback[1]][callback[2]][callback[3]])
|
33474
33590
|
{
|
33475
33591
|
return child[callback[0]][callback[1]][callback[2]][callback[3]];
|
33476
33592
|
}
|
33477
33593
|
}
|
33478
|
-
else
|
33594
|
+
else if (child[callback])
|
33479
33595
|
{
|
33480
|
-
|
33481
|
-
{
|
33482
|
-
return child[callback];
|
33483
|
-
}
|
33596
|
+
return child[callback];
|
33484
33597
|
}
|
33485
33598
|
|
33486
33599
|
return false;
|
@@ -33955,13 +34068,25 @@ Phaser.Group.prototype.descendingSortHandler = function (a, b) {
|
|
33955
34068
|
*/
|
33956
34069
|
Phaser.Group.prototype.iterate = function (key, value, returnType, callback, callbackContext, args) {
|
33957
34070
|
|
33958
|
-
if (
|
34071
|
+
if (this.children.length === 0)
|
33959
34072
|
{
|
33960
|
-
|
34073
|
+
if (returnType === Phaser.Group.RETURN_TOTAL)
|
34074
|
+
{
|
34075
|
+
return 0;
|
34076
|
+
}
|
34077
|
+
else if (returnType === Phaser.Group.RETURN_ALL)
|
34078
|
+
{
|
34079
|
+
return [];
|
34080
|
+
}
|
33961
34081
|
}
|
33962
34082
|
|
33963
34083
|
var total = 0;
|
33964
34084
|
|
34085
|
+
if (returnType === Phaser.Group.RETURN_ALL)
|
34086
|
+
{
|
34087
|
+
var output = [];
|
34088
|
+
}
|
34089
|
+
|
33965
34090
|
for (var i = 0; i < this.children.length; i++)
|
33966
34091
|
{
|
33967
34092
|
if (this.children[i][key] === value)
|
@@ -33985,6 +34110,10 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal
|
|
33985
34110
|
{
|
33986
34111
|
return this.children[i];
|
33987
34112
|
}
|
34113
|
+
else if (returnType === Phaser.Group.RETURN_ALL)
|
34114
|
+
{
|
34115
|
+
output.push(this.children[i]);
|
34116
|
+
}
|
33988
34117
|
}
|
33989
34118
|
}
|
33990
34119
|
|
@@ -33992,9 +34121,15 @@ Phaser.Group.prototype.iterate = function (key, value, returnType, callback, cal
|
|
33992
34121
|
{
|
33993
34122
|
return total;
|
33994
34123
|
}
|
33995
|
-
|
33996
|
-
|
33997
|
-
|
34124
|
+
else if (returnType === Phaser.Group.RETURN_ALL)
|
34125
|
+
{
|
34126
|
+
return output;
|
34127
|
+
}
|
34128
|
+
else
|
34129
|
+
{
|
34130
|
+
// RETURN_CHILD or RETURN_NONE
|
34131
|
+
return null;
|
34132
|
+
}
|
33998
34133
|
|
33999
34134
|
};
|
34000
34135
|
|
@@ -34281,24 +34416,83 @@ Phaser.Group.prototype.countDead = function () {
|
|
34281
34416
|
* Returns a random child from the group.
|
34282
34417
|
*
|
34283
34418
|
* @method Phaser.Group#getRandom
|
34284
|
-
* @param {integer} [startIndex=0] - Offset from the front of the
|
34419
|
+
* @param {integer} [startIndex=0] - Offset from the front of the group (lowest child).
|
34285
34420
|
* @param {integer} [length=(to top)] - Restriction on the number of values you want to randomly select from.
|
34286
34421
|
* @return {any} A random child of this Group.
|
34287
34422
|
*/
|
34288
34423
|
Phaser.Group.prototype.getRandom = function (startIndex, length) {
|
34289
34424
|
|
34290
|
-
if (
|
34425
|
+
if (startIndex === undefined) { startIndex = 0; }
|
34426
|
+
if (length === undefined) { length = this.children.length; }
|
34427
|
+
|
34428
|
+
if (length === 0)
|
34291
34429
|
{
|
34292
34430
|
return null;
|
34293
34431
|
}
|
34294
34432
|
|
34295
|
-
startIndex = startIndex || 0;
|
34296
|
-
length = length || this.children.length;
|
34297
|
-
|
34298
34433
|
return Phaser.ArrayUtils.getRandomItem(this.children, startIndex, length);
|
34299
34434
|
|
34300
34435
|
};
|
34301
34436
|
|
34437
|
+
/**
|
34438
|
+
* Returns a random child from the Group that has `exists` set to `true`.
|
34439
|
+
*
|
34440
|
+
* Optionally you can specify a start and end index. For example if this Group had 100 children,
|
34441
|
+
* and you set `startIndex` to 0 and `endIndex` to 50, it would return a random child from only
|
34442
|
+
* the first 50 children in the Group.
|
34443
|
+
*
|
34444
|
+
* @method Phaser.Group#getRandomExists
|
34445
|
+
* @param {integer} [startIndex=0] - The first child index to start the search from.
|
34446
|
+
* @param {integer} [endIndex] - The last child index to search up to.
|
34447
|
+
* @return {any} A random child of this Group that exists.
|
34448
|
+
*/
|
34449
|
+
Phaser.Group.prototype.getRandomExists = function (startIndex, endIndex) {
|
34450
|
+
|
34451
|
+
var list = this.getAll('exists', true, startIndex, endIndex);
|
34452
|
+
|
34453
|
+
return this.game.rnd.pick(list);
|
34454
|
+
|
34455
|
+
};
|
34456
|
+
|
34457
|
+
/**
|
34458
|
+
* Returns all children in this Group.
|
34459
|
+
*
|
34460
|
+
* You can optionally specify a matching criteria using the `property` and `value` arguments.
|
34461
|
+
*
|
34462
|
+
* For example: `getAll('exists', true)` would return only children that have their exists property set.
|
34463
|
+
*
|
34464
|
+
* Optionally you can specify a start and end index. For example if this Group had 100 children,
|
34465
|
+
* and you set `startIndex` to 0 and `endIndex` to 50, it would return a random child from only
|
34466
|
+
* the first 50 children in the Group.
|
34467
|
+
*
|
34468
|
+
* @method Phaser.Group#getAll
|
34469
|
+
* @param {string} [property] - An optional property to test against the value argument.
|
34470
|
+
* @param {any} [value] - If property is set then Child.property must strictly equal this value to be included in the results.
|
34471
|
+
* @param {integer} [startIndex=0] - The first child index to start the search from.
|
34472
|
+
* @param {integer} [endIndex] - The last child index to search up until.
|
34473
|
+
* @return {any} A random existing child of this Group.
|
34474
|
+
*/
|
34475
|
+
Phaser.Group.prototype.getAll = function (property, value, startIndex, endIndex) {
|
34476
|
+
|
34477
|
+
if (startIndex === undefined) { startIndex = 0; }
|
34478
|
+
if (endIndex === undefined) { endIndex = this.children.length; }
|
34479
|
+
|
34480
|
+
var output = [];
|
34481
|
+
|
34482
|
+
for (var i = startIndex; i < endIndex; i++)
|
34483
|
+
{
|
34484
|
+
var child = this.children[i];
|
34485
|
+
|
34486
|
+
if (property && child[property] === value)
|
34487
|
+
{
|
34488
|
+
output.push(child);
|
34489
|
+
}
|
34490
|
+
}
|
34491
|
+
|
34492
|
+
return output;
|
34493
|
+
|
34494
|
+
};
|
34495
|
+
|
34302
34496
|
/**
|
34303
34497
|
* Removes the given child from this group.
|
34304
34498
|
*
|
@@ -34579,11 +34773,6 @@ Object.defineProperty(Phaser.Group.prototype, "angle", {
|
|
34579
34773
|
* It is derived by calling `getBounds`, calculating the Groups dimensions based on its
|
34580
34774
|
* visible children.
|
34581
34775
|
*
|
34582
|
-
* Note that no ancestors are factored into the result, meaning that if this Group is
|
34583
|
-
* nested within another Group, with heavy transforms on it, the result of this property
|
34584
|
-
* is likely to be incorrect. It is safe to get and set this property if the Group is a
|
34585
|
-
* top-level descendant of Phaser.World, or untransformed parents.
|
34586
|
-
*
|
34587
34776
|
* @name Phaser.Group#centerX
|
34588
34777
|
* @property {number} centerX
|
34589
34778
|
*/
|
@@ -34591,13 +34780,13 @@ Object.defineProperty(Phaser.Group.prototype, "centerX", {
|
|
34591
34780
|
|
34592
34781
|
get: function () {
|
34593
34782
|
|
34594
|
-
return this.getBounds().centerX;
|
34783
|
+
return this.getBounds(this.parent).centerX;
|
34595
34784
|
|
34596
34785
|
},
|
34597
34786
|
|
34598
34787
|
set: function (value) {
|
34599
34788
|
|
34600
|
-
var r = this.getBounds();
|
34789
|
+
var r = this.getBounds(this.parent);
|
34601
34790
|
var offset = this.x - r.x;
|
34602
34791
|
|
34603
34792
|
this.x = (value + offset) - r.halfWidth;
|
@@ -34612,11 +34801,6 @@ Object.defineProperty(Phaser.Group.prototype, "centerX", {
|
|
34612
34801
|
* It is derived by calling `getBounds`, calculating the Groups dimensions based on its
|
34613
34802
|
* visible children.
|
34614
34803
|
*
|
34615
|
-
* Note that no ancestors are factored into the result, meaning that if this Group is
|
34616
|
-
* nested within another Group, with heavy transforms on it, the result of this property
|
34617
|
-
* is likely to be incorrect. It is safe to get and set this property if the Group is a
|
34618
|
-
* top-level descendant of Phaser.World, or untransformed parents.
|
34619
|
-
*
|
34620
34804
|
* @name Phaser.Group#centerY
|
34621
34805
|
* @property {number} centerY
|
34622
34806
|
*/
|
@@ -34624,13 +34808,13 @@ Object.defineProperty(Phaser.Group.prototype, "centerY", {
|
|
34624
34808
|
|
34625
34809
|
get: function () {
|
34626
34810
|
|
34627
|
-
return this.getBounds().centerY;
|
34811
|
+
return this.getBounds(this.parent).centerY;
|
34628
34812
|
|
34629
34813
|
},
|
34630
34814
|
|
34631
34815
|
set: function (value) {
|
34632
34816
|
|
34633
|
-
var r = this.getBounds();
|
34817
|
+
var r = this.getBounds(this.parent);
|
34634
34818
|
var offset = this.y - r.y;
|
34635
34819
|
|
34636
34820
|
this.y = (value + offset) - r.halfHeight;
|
@@ -34645,11 +34829,6 @@ Object.defineProperty(Phaser.Group.prototype, "centerY", {
|
|
34645
34829
|
* It is derived by calling `getBounds`, calculating the Groups dimensions based on its
|
34646
34830
|
* visible children.
|
34647
34831
|
*
|
34648
|
-
* Note that no ancestors are factored into the result, meaning that if this Group is
|
34649
|
-
* nested within another Group, with heavy transforms on it, the result of this property
|
34650
|
-
* is likely to be incorrect. It is safe to get and set this property if the Group is a
|
34651
|
-
* top-level descendant of Phaser.World, or untransformed parents.
|
34652
|
-
*
|
34653
34832
|
* @name Phaser.Group#left
|
34654
34833
|
* @property {number} left
|
34655
34834
|
*/
|
@@ -34657,13 +34836,13 @@ Object.defineProperty(Phaser.Group.prototype, "left", {
|
|
34657
34836
|
|
34658
34837
|
get: function () {
|
34659
34838
|
|
34660
|
-
return this.getBounds().left;
|
34839
|
+
return this.getBounds(this.parent).left;
|
34661
34840
|
|
34662
34841
|
},
|
34663
34842
|
|
34664
34843
|
set: function (value) {
|
34665
34844
|
|
34666
|
-
var r = this.getBounds();
|
34845
|
+
var r = this.getBounds(this.parent);
|
34667
34846
|
var offset = this.x - r.x;
|
34668
34847
|
|
34669
34848
|
this.x = value + offset;
|
@@ -34677,11 +34856,6 @@ Object.defineProperty(Phaser.Group.prototype, "left", {
|
|
34677
34856
|
*
|
34678
34857
|
* It is derived by calling `getBounds`, calculating the Groups dimensions based on its
|
34679
34858
|
* visible children.
|
34680
|
-
*
|
34681
|
-
* Note that no ancestors are factored into the result, meaning that if this Group is
|
34682
|
-
* nested within another Group, with heavy transforms on it, the result of this property
|
34683
|
-
* is likely to be incorrect. It is safe to get and set this property if the Group is a
|
34684
|
-
* top-level descendant of Phaser.World, or untransformed parents.
|
34685
34859
|
*
|
34686
34860
|
* @name Phaser.Group#right
|
34687
34861
|
* @property {number} right
|
@@ -34690,13 +34864,13 @@ Object.defineProperty(Phaser.Group.prototype, "right", {
|
|
34690
34864
|
|
34691
34865
|
get: function () {
|
34692
34866
|
|
34693
|
-
return this.getBounds().right;
|
34867
|
+
return this.getBounds(this.parent).right;
|
34694
34868
|
|
34695
34869
|
},
|
34696
34870
|
|
34697
34871
|
set: function (value) {
|
34698
34872
|
|
34699
|
-
var r = this.getBounds();
|
34873
|
+
var r = this.getBounds(this.parent);
|
34700
34874
|
var offset = this.x - r.x;
|
34701
34875
|
|
34702
34876
|
this.x = (value + offset) - r.width;
|
@@ -34710,11 +34884,6 @@ Object.defineProperty(Phaser.Group.prototype, "right", {
|
|
34710
34884
|
*
|
34711
34885
|
* It is derived by calling `getBounds`, calculating the Groups dimensions based on its
|
34712
34886
|
* visible children.
|
34713
|
-
*
|
34714
|
-
* Note that no ancestors are factored into the result, meaning that if this Group is
|
34715
|
-
* nested within another Group, with heavy transforms on it, the result of this property
|
34716
|
-
* is likely to be incorrect. It is safe to get and set this property if the Group is a
|
34717
|
-
* top-level descendant of Phaser.World, or untransformed parents.
|
34718
34887
|
*
|
34719
34888
|
* @name Phaser.Group#top
|
34720
34889
|
* @property {number} top
|
@@ -34723,13 +34892,13 @@ Object.defineProperty(Phaser.Group.prototype, "top", {
|
|
34723
34892
|
|
34724
34893
|
get: function () {
|
34725
34894
|
|
34726
|
-
return this.getBounds().top;
|
34895
|
+
return this.getBounds(this.parent).top;
|
34727
34896
|
|
34728
34897
|
},
|
34729
34898
|
|
34730
34899
|
set: function (value) {
|
34731
34900
|
|
34732
|
-
var r = this.getBounds();
|
34901
|
+
var r = this.getBounds(this.parent);
|
34733
34902
|
var offset = this.y - r.y;
|
34734
34903
|
|
34735
34904
|
this.y = (value + offset);
|
@@ -34744,11 +34913,6 @@ Object.defineProperty(Phaser.Group.prototype, "top", {
|
|
34744
34913
|
* It is derived by calling `getBounds`, calculating the Groups dimensions based on its
|
34745
34914
|
* visible children.
|
34746
34915
|
*
|
34747
|
-
* Note that no ancestors are factored into the result, meaning that if this Group is
|
34748
|
-
* nested within another Group, with heavy transforms on it, the result of this property
|
34749
|
-
* is likely to be incorrect. It is safe to get and set this property if the Group is a
|
34750
|
-
* top-level descendant of Phaser.World, or untransformed parents.
|
34751
|
-
*
|
34752
34916
|
* @name Phaser.Group#bottom
|
34753
34917
|
* @property {number} bottom
|
34754
34918
|
*/
|
@@ -34756,13 +34920,13 @@ Object.defineProperty(Phaser.Group.prototype, "bottom", {
|
|
34756
34920
|
|
34757
34921
|
get: function () {
|
34758
34922
|
|
34759
|
-
return this.getBounds().bottom;
|
34923
|
+
return this.getBounds(this.parent).bottom;
|
34760
34924
|
|
34761
34925
|
},
|
34762
34926
|
|
34763
34927
|
set: function (value) {
|
34764
34928
|
|
34765
|
-
var r = this.getBounds();
|
34929
|
+
var r = this.getBounds(this.parent);
|
34766
34930
|
var offset = this.y - r.y;
|
34767
34931
|
|
34768
34932
|
this.y = (value + offset) - r.height;
|
@@ -35901,7 +36065,7 @@ Phaser.Game.prototype = {
|
|
35901
36065
|
r = 'WebGL';
|
35902
36066
|
c++;
|
35903
36067
|
}
|
35904
|
-
else if (this.renderType
|
36068
|
+
else if (this.renderType === Phaser.HEADLESS)
|
35905
36069
|
{
|
35906
36070
|
r = 'Headless';
|
35907
36071
|
}
|
@@ -41172,8 +41336,6 @@ Phaser.InputHandler.prototype = {
|
|
41172
41336
|
this.sprite.events.onAddedToGroup.add(this.addedToGroup, this);
|
41173
41337
|
this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup, this);
|
41174
41338
|
|
41175
|
-
this.flagged = false;
|
41176
|
-
|
41177
41339
|
return this.sprite;
|
41178
41340
|
|
41179
41341
|
},
|
@@ -41230,7 +41392,6 @@ Phaser.InputHandler.prototype = {
|
|
41230
41392
|
reset: function () {
|
41231
41393
|
|
41232
41394
|
this.enabled = false;
|
41233
|
-
this.flagged = false;
|
41234
41395
|
|
41235
41396
|
for (var i = 0; i < 10; i++)
|
41236
41397
|
{
|
@@ -42658,7 +42819,7 @@ Phaser.Gamepad = function (game) {
|
|
42658
42819
|
* @property {boolean} _gamepadSupportAvailable - Are gamepads supported in this browser or not?
|
42659
42820
|
* @private
|
42660
42821
|
*/
|
42661
|
-
this._gamepadSupportAvailable = !!navigator.webkitGetGamepads || !!navigator.webkitGamepads || (navigator.userAgent.indexOf('Firefox/')
|
42822
|
+
this._gamepadSupportAvailable = !!navigator.webkitGetGamepads || !!navigator.webkitGamepads || (navigator.userAgent.indexOf('Firefox/') !== -1) || !!navigator.getGamepads;
|
42662
42823
|
|
42663
42824
|
/**
|
42664
42825
|
* Used to check for differences between earlier polls and current state of gamepads.
|
@@ -44799,7 +44960,7 @@ Phaser.Keyboard.prototype.constructor = Phaser.Keyboard;
|
|
44799
44960
|
* _Note_: Use `Phaser.KeyCode.KEY` instead of `Phaser.Keyboard.KEY` to refer to a key code;
|
44800
44961
|
* the latter approach is supported for compatibility.
|
44801
44962
|
*
|
44802
|
-
* @
|
44963
|
+
* @class Phaser.KeyCode
|
44803
44964
|
*/
|
44804
44965
|
Phaser.KeyCode = {
|
44805
44966
|
/** @static */
|
@@ -45009,8 +45170,10 @@ Phaser.KeyCode = {
|
|
45009
45170
|
};
|
45010
45171
|
|
45011
45172
|
// Duplicate Phaser.KeyCode values in Phaser.Keyboard for compatibility
|
45012
|
-
for (var key in Phaser.KeyCode)
|
45013
|
-
|
45173
|
+
for (var key in Phaser.KeyCode)
|
45174
|
+
{
|
45175
|
+
if (Phaser.KeyCode.hasOwnProperty(key) && !key.match(/[a-z]/))
|
45176
|
+
{
|
45014
45177
|
Phaser.Keyboard[key] = Phaser.KeyCode[key];
|
45015
45178
|
}
|
45016
45179
|
}
|
@@ -46073,7 +46236,7 @@ Phaser.Component.Crop.prototype = {
|
|
46073
46236
|
* @param {Phaser.Rectangle} rect - The Rectangle used during cropping. Pass null or no parameters to clear a previously set crop rectangle.
|
46074
46237
|
* @param {boolean} [copy=false] - If false `cropRect` will be stored as a reference to the given rect. If true it will copy the rect values into a local Phaser Rectangle object stored in cropRect.
|
46075
46238
|
*/
|
46076
|
-
crop: function(rect, copy) {
|
46239
|
+
crop: function (rect, copy) {
|
46077
46240
|
|
46078
46241
|
if (copy === undefined) { copy = false; }
|
46079
46242
|
|
@@ -46110,13 +46273,18 @@ Phaser.Component.Crop.prototype = {
|
|
46110
46273
|
*
|
46111
46274
|
* @method
|
46112
46275
|
*/
|
46113
|
-
updateCrop: function() {
|
46276
|
+
updateCrop: function () {
|
46114
46277
|
|
46115
46278
|
if (!this.cropRect)
|
46116
46279
|
{
|
46117
46280
|
return;
|
46118
46281
|
}
|
46119
46282
|
|
46283
|
+
var oldX = this.texture.crop.x;
|
46284
|
+
var oldY = this.texture.crop.y;
|
46285
|
+
var oldW = this.texture.crop.width;
|
46286
|
+
var oldH = this.texture.crop.height;
|
46287
|
+
|
46120
46288
|
this._crop = Phaser.Rectangle.clone(this.cropRect, this._crop);
|
46121
46289
|
this._crop.x += this._frame.x;
|
46122
46290
|
this._crop.y += this._frame.y;
|
@@ -46139,6 +46307,11 @@ Phaser.Component.Crop.prototype = {
|
|
46139
46307
|
|
46140
46308
|
this.texture._updateUvs();
|
46141
46309
|
|
46310
|
+
if (this.tint !== 0xffffff && (oldX !== cx || oldY !== cy || oldW !== cw || oldH !== ch))
|
46311
|
+
{
|
46312
|
+
this.texture.requiresReTint = true;
|
46313
|
+
}
|
46314
|
+
|
46142
46315
|
}
|
46143
46316
|
|
46144
46317
|
};
|
@@ -46316,6 +46489,7 @@ Phaser.Component.Destroy.prototype = {
|
|
46316
46489
|
if (this._crop)
|
46317
46490
|
{
|
46318
46491
|
this._crop = null;
|
46492
|
+
this.cropRect = null;
|
46319
46493
|
}
|
46320
46494
|
|
46321
46495
|
if (this._frame)
|
@@ -49178,6 +49352,7 @@ Phaser.Sprite.prototype.preUpdate = function() {
|
|
49178
49352
|
* @extends Phaser.Component.LoadTexture
|
49179
49353
|
* @extends Phaser.Component.Overlap
|
49180
49354
|
* @extends Phaser.Component.Reset
|
49355
|
+
* @extends Phaser.Component.ScaleMinMax
|
49181
49356
|
* @extends Phaser.Component.Smoothed
|
49182
49357
|
* @constructor
|
49183
49358
|
* @param {Phaser.Game} game - A reference to the currently running game.
|
@@ -49222,6 +49397,7 @@ Phaser.Component.Core.install.call(Phaser.Image.prototype, [
|
|
49222
49397
|
'LoadTexture',
|
49223
49398
|
'Overlap',
|
49224
49399
|
'Reset',
|
49400
|
+
'ScaleMinMax',
|
49225
49401
|
'Smoothed'
|
49226
49402
|
]);
|
49227
49403
|
|
@@ -49420,7 +49596,7 @@ Phaser.Button = function (game, x, y, key, callback, callbackContext, overFrame,
|
|
49420
49596
|
this.onOverMouseOnly = true;
|
49421
49597
|
|
49422
49598
|
/**
|
49423
|
-
*
|
49599
|
+
* Suppress the over event if a pointer was just released and it matches the given {@link Phaser.PointerModer pointer mode bitmask}.
|
49424
49600
|
*
|
49425
49601
|
* This behavior was introduced in Phaser 2.3.1; this property is a soft-revert of the change.
|
49426
49602
|
*
|
@@ -51615,6 +51791,8 @@ Phaser.BitmapData.prototype = {
|
|
51615
51791
|
ctx.shadowOffsetX = x || 10;
|
51616
51792
|
ctx.shadowOffsetY = y || 10;
|
51617
51793
|
}
|
51794
|
+
|
51795
|
+
return this;
|
51618
51796
|
|
51619
51797
|
},
|
51620
51798
|
|
@@ -51766,6 +51944,8 @@ Phaser.BitmapData.prototype = {
|
|
51766
51944
|
ctx.fillText(text, x, y);
|
51767
51945
|
|
51768
51946
|
ctx.font = prevFont;
|
51947
|
+
|
51948
|
+
return this;
|
51769
51949
|
|
51770
51950
|
},
|
51771
51951
|
|
@@ -52438,6 +52618,16 @@ PIXI.Graphics = function()
|
|
52438
52618
|
*/
|
52439
52619
|
this.dirty = true;
|
52440
52620
|
|
52621
|
+
/**
|
52622
|
+
* Used to detect if the bounds have been invalidated, by this Graphics being cleared or drawn to.
|
52623
|
+
* If this is set to true then the updateLocalBounds is called once in the postUpdate method.
|
52624
|
+
*
|
52625
|
+
* @property _boundsDirty
|
52626
|
+
* @type Boolean
|
52627
|
+
* @private
|
52628
|
+
*/
|
52629
|
+
this._boundsDirty = false;
|
52630
|
+
|
52441
52631
|
/**
|
52442
52632
|
* Used to detect if the webgl graphics object has changed. If this is set to true then the graphics object will be recalculated.
|
52443
52633
|
*
|
@@ -52529,7 +52719,7 @@ PIXI.Graphics.prototype.lineTo = function(x, y)
|
|
52529
52719
|
|
52530
52720
|
this.currentPath.shape.points.push(x, y);
|
52531
52721
|
this.dirty = true;
|
52532
|
-
this.
|
52722
|
+
this._boundsDirty = true;
|
52533
52723
|
|
52534
52724
|
return this;
|
52535
52725
|
};
|
@@ -52584,7 +52774,7 @@ PIXI.Graphics.prototype.quadraticCurveTo = function(cpX, cpY, toX, toY)
|
|
52584
52774
|
}
|
52585
52775
|
|
52586
52776
|
this.dirty = true;
|
52587
|
-
this.
|
52777
|
+
this._boundsDirty = true;
|
52588
52778
|
|
52589
52779
|
return this;
|
52590
52780
|
};
|
@@ -52643,7 +52833,7 @@ PIXI.Graphics.prototype.bezierCurveTo = function(cpX, cpY, cpX2, cpY2, toX, toY)
|
|
52643
52833
|
}
|
52644
52834
|
|
52645
52835
|
this.dirty = true;
|
52646
|
-
this.
|
52836
|
+
this._boundsDirty = true;
|
52647
52837
|
|
52648
52838
|
return this;
|
52649
52839
|
};
|
@@ -52713,7 +52903,7 @@ PIXI.Graphics.prototype.arcTo = function(x1, y1, x2, y2, radius)
|
|
52713
52903
|
}
|
52714
52904
|
|
52715
52905
|
this.dirty = true;
|
52716
|
-
this.
|
52906
|
+
this._boundsDirty = true;
|
52717
52907
|
|
52718
52908
|
return this;
|
52719
52909
|
};
|
@@ -52799,7 +52989,7 @@ PIXI.Graphics.prototype.arc = function(cx, cy, radius, startAngle, endAngle, ant
|
|
52799
52989
|
}
|
52800
52990
|
|
52801
52991
|
this.dirty = true;
|
52802
|
-
this.
|
52992
|
+
this._boundsDirty = true;
|
52803
52993
|
|
52804
52994
|
return this;
|
52805
52995
|
};
|
@@ -52958,6 +53148,7 @@ PIXI.Graphics.prototype.clear = function()
|
|
52958
53148
|
this.filling = false;
|
52959
53149
|
|
52960
53150
|
this.dirty = true;
|
53151
|
+
this._boundsDirty = true;
|
52961
53152
|
this.clearDirty = true;
|
52962
53153
|
this.graphicsData = [];
|
52963
53154
|
|
@@ -53248,6 +53439,32 @@ PIXI.Graphics.prototype.getBounds = function(matrix)
|
|
53248
53439
|
|
53249
53440
|
};
|
53250
53441
|
|
53442
|
+
/**
|
53443
|
+
* Retrieves the non-global local bounds of the graphic shape as a rectangle. The calculation takes all visible children into consideration.
|
53444
|
+
*
|
53445
|
+
* @method getLocalBounds
|
53446
|
+
* @return {Rectangle} The rectangular bounding area
|
53447
|
+
*/
|
53448
|
+
PIXI.Graphics.prototype.getLocalBounds = function () {
|
53449
|
+
var matrixCache = this.worldTransform;
|
53450
|
+
|
53451
|
+
this.worldTransform = PIXI.identityMatrix;
|
53452
|
+
|
53453
|
+
for (var i = 0; i < this.children.length; i++) {
|
53454
|
+
this.children[i].updateTransform();
|
53455
|
+
}
|
53456
|
+
|
53457
|
+
var bounds = this.getBounds();
|
53458
|
+
|
53459
|
+
this.worldTransform = matrixCache;
|
53460
|
+
|
53461
|
+
for (i = 0; i < this.children.length; i++) {
|
53462
|
+
this.children[i].updateTransform();
|
53463
|
+
}
|
53464
|
+
|
53465
|
+
return bounds;
|
53466
|
+
};
|
53467
|
+
|
53251
53468
|
/**
|
53252
53469
|
* Tests if a point is inside this graphics object
|
53253
53470
|
*
|
@@ -53508,8 +53725,7 @@ PIXI.Graphics.prototype.drawShape = function(shape)
|
|
53508
53725
|
}
|
53509
53726
|
|
53510
53727
|
this.dirty = true;
|
53511
|
-
|
53512
|
-
this.updateLocalBounds();
|
53728
|
+
this._boundsDirty = true;
|
53513
53729
|
|
53514
53730
|
return data;
|
53515
53731
|
|
@@ -53661,175 +53877,6 @@ PIXI.GraphicsData.prototype.clone = function() {
|
|
53661
53877
|
);
|
53662
53878
|
|
53663
53879
|
};
|
53664
|
-
/*
|
53665
|
-
PolyK library
|
53666
|
-
url: http://polyk.ivank.net
|
53667
|
-
Released under MIT licence.
|
53668
|
-
|
53669
|
-
Copyright (c) 2012 Ivan Kuckir
|
53670
|
-
|
53671
|
-
Permission is hereby granted, free of charge, to any person
|
53672
|
-
obtaining a copy of this software and associated documentation
|
53673
|
-
files (the "Software"), to deal in the Software without
|
53674
|
-
restriction, including without limitation the rights to use,
|
53675
|
-
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
53676
|
-
copies of the Software, and to permit persons to whom the
|
53677
|
-
Software is furnished to do so, subject to the following
|
53678
|
-
conditions:
|
53679
|
-
|
53680
|
-
The above copyright notice and this permission notice shall be
|
53681
|
-
included in all copies or substantial portions of the Software.
|
53682
|
-
|
53683
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
53684
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
53685
|
-
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
53686
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
53687
|
-
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
53688
|
-
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
53689
|
-
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
53690
|
-
OTHER DEALINGS IN THE SOFTWARE.
|
53691
|
-
|
53692
|
-
This is an amazing lib!
|
53693
|
-
|
53694
|
-
Slightly modified by Mat Groves (matgroves.com);
|
53695
|
-
*/
|
53696
|
-
|
53697
|
-
/**
|
53698
|
-
* Based on the Polyk library http://polyk.ivank.net released under MIT licence.
|
53699
|
-
* This is an amazing lib!
|
53700
|
-
* Slightly modified by Mat Groves (matgroves.com);
|
53701
|
-
* @class PolyK
|
53702
|
-
*/
|
53703
|
-
PIXI.PolyK = {};
|
53704
|
-
|
53705
|
-
/**
|
53706
|
-
* Triangulates shapes for webGL graphic fills.
|
53707
|
-
*
|
53708
|
-
* @method Triangulate
|
53709
|
-
*/
|
53710
|
-
PIXI.PolyK.Triangulate = function(p)
|
53711
|
-
{
|
53712
|
-
var sign = true;
|
53713
|
-
|
53714
|
-
var n = p.length >> 1;
|
53715
|
-
if(n < 3) return [];
|
53716
|
-
|
53717
|
-
var tgs = [];
|
53718
|
-
var avl = [];
|
53719
|
-
for(var i = 0; i < n; i++) avl.push(i);
|
53720
|
-
|
53721
|
-
i = 0;
|
53722
|
-
var al = n;
|
53723
|
-
while(al > 3)
|
53724
|
-
{
|
53725
|
-
var i0 = avl[(i+0)%al];
|
53726
|
-
var i1 = avl[(i+1)%al];
|
53727
|
-
var i2 = avl[(i+2)%al];
|
53728
|
-
|
53729
|
-
var ax = p[2*i0], ay = p[2*i0+1];
|
53730
|
-
var bx = p[2*i1], by = p[2*i1+1];
|
53731
|
-
var cx = p[2*i2], cy = p[2*i2+1];
|
53732
|
-
|
53733
|
-
var earFound = false;
|
53734
|
-
if(PIXI.PolyK._convex(ax, ay, bx, by, cx, cy, sign))
|
53735
|
-
{
|
53736
|
-
earFound = true;
|
53737
|
-
for(var j = 0; j < al; j++)
|
53738
|
-
{
|
53739
|
-
var vi = avl[j];
|
53740
|
-
if(vi === i0 || vi === i1 || vi === i2) continue;
|
53741
|
-
|
53742
|
-
if(PIXI.PolyK._PointInTriangle(p[2*vi], p[2*vi+1], ax, ay, bx, by, cx, cy)) {
|
53743
|
-
earFound = false;
|
53744
|
-
break;
|
53745
|
-
}
|
53746
|
-
}
|
53747
|
-
}
|
53748
|
-
|
53749
|
-
if(earFound)
|
53750
|
-
{
|
53751
|
-
tgs.push(i0, i1, i2);
|
53752
|
-
avl.splice((i+1)%al, 1);
|
53753
|
-
al--;
|
53754
|
-
i = 0;
|
53755
|
-
}
|
53756
|
-
else if(i++ > 3*al)
|
53757
|
-
{
|
53758
|
-
// need to flip flip reverse it!
|
53759
|
-
// reset!
|
53760
|
-
if(sign)
|
53761
|
-
{
|
53762
|
-
tgs = [];
|
53763
|
-
avl = [];
|
53764
|
-
for(i = 0; i < n; i++) avl.push(i);
|
53765
|
-
|
53766
|
-
i = 0;
|
53767
|
-
al = n;
|
53768
|
-
|
53769
|
-
sign = false;
|
53770
|
-
}
|
53771
|
-
else
|
53772
|
-
{
|
53773
|
-
// window.console.log("PIXI Warning: shape too complex to fill");
|
53774
|
-
return null;
|
53775
|
-
}
|
53776
|
-
}
|
53777
|
-
}
|
53778
|
-
|
53779
|
-
tgs.push(avl[0], avl[1], avl[2]);
|
53780
|
-
return tgs;
|
53781
|
-
};
|
53782
|
-
|
53783
|
-
/**
|
53784
|
-
* Checks whether a point is within a triangle
|
53785
|
-
*
|
53786
|
-
* @method _PointInTriangle
|
53787
|
-
* @param px {Number} x coordinate of the point to test
|
53788
|
-
* @param py {Number} y coordinate of the point to test
|
53789
|
-
* @param ax {Number} x coordinate of the a point of the triangle
|
53790
|
-
* @param ay {Number} y coordinate of the a point of the triangle
|
53791
|
-
* @param bx {Number} x coordinate of the b point of the triangle
|
53792
|
-
* @param by {Number} y coordinate of the b point of the triangle
|
53793
|
-
* @param cx {Number} x coordinate of the c point of the triangle
|
53794
|
-
* @param cy {Number} y coordinate of the c point of the triangle
|
53795
|
-
* @private
|
53796
|
-
* @return {Boolean}
|
53797
|
-
*/
|
53798
|
-
PIXI.PolyK._PointInTriangle = function(px, py, ax, ay, bx, by, cx, cy)
|
53799
|
-
{
|
53800
|
-
var v0x = cx-ax;
|
53801
|
-
var v0y = cy-ay;
|
53802
|
-
var v1x = bx-ax;
|
53803
|
-
var v1y = by-ay;
|
53804
|
-
var v2x = px-ax;
|
53805
|
-
var v2y = py-ay;
|
53806
|
-
|
53807
|
-
var dot00 = v0x*v0x+v0y*v0y;
|
53808
|
-
var dot01 = v0x*v1x+v0y*v1y;
|
53809
|
-
var dot02 = v0x*v2x+v0y*v2y;
|
53810
|
-
var dot11 = v1x*v1x+v1y*v1y;
|
53811
|
-
var dot12 = v1x*v2x+v1y*v2y;
|
53812
|
-
|
53813
|
-
var invDenom = 1 / (dot00 * dot11 - dot01 * dot01);
|
53814
|
-
var u = (dot11 * dot02 - dot01 * dot12) * invDenom;
|
53815
|
-
var v = (dot00 * dot12 - dot01 * dot02) * invDenom;
|
53816
|
-
|
53817
|
-
// Check if point is in triangle
|
53818
|
-
return (u >= 0) && (v >= 0) && (u + v < 1);
|
53819
|
-
};
|
53820
|
-
|
53821
|
-
/**
|
53822
|
-
* Checks whether a shape is convex
|
53823
|
-
*
|
53824
|
-
* @method _convex
|
53825
|
-
* @private
|
53826
|
-
* @return {Boolean}
|
53827
|
-
*/
|
53828
|
-
PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign)
|
53829
|
-
{
|
53830
|
-
return ((ay-by)*(cx-bx) + (bx-ax)*(cy-by) >= 0) === sign;
|
53831
|
-
};
|
53832
|
-
|
53833
53880
|
/*
|
53834
53881
|
Copyright (c) 2016, Mapbox
|
53835
53882
|
|
@@ -55807,6 +55854,28 @@ Phaser.Graphics.prototype.preUpdate = function () {
|
|
55807
55854
|
|
55808
55855
|
};
|
55809
55856
|
|
55857
|
+
/**
|
55858
|
+
* Automatically called by World
|
55859
|
+
* @method Phaser.Graphics.prototype.postUpdate
|
55860
|
+
*/
|
55861
|
+
Phaser.Graphics.prototype.postUpdate = function () {
|
55862
|
+
|
55863
|
+
Phaser.Component.PhysicsBody.postUpdate.call(this);
|
55864
|
+
Phaser.Component.FixedToCamera.postUpdate.call(this);
|
55865
|
+
|
55866
|
+
if (this._boundsDirty)
|
55867
|
+
{
|
55868
|
+
this.updateLocalBounds();
|
55869
|
+
this._boundsDirty = false;
|
55870
|
+
}
|
55871
|
+
|
55872
|
+
for (var i = 0; i < this.children.length; i++)
|
55873
|
+
{
|
55874
|
+
this.children[i].postUpdate();
|
55875
|
+
}
|
55876
|
+
|
55877
|
+
};
|
55878
|
+
|
55810
55879
|
/**
|
55811
55880
|
* Destroy this Graphics instance.
|
55812
55881
|
*
|
@@ -55943,7 +56012,6 @@ Phaser.Graphics.prototype.drawTriangles = function(vertices, indices, cull) {
|
|
55943
56012
|
* @constructor
|
55944
56013
|
* @extends PIXI.RenderTexture
|
55945
56014
|
* @param {Phaser.Game} game - Current game instance.
|
55946
|
-
* @param {string} key - Internal Phaser reference key for the render texture.
|
55947
56015
|
* @param {number} [width=100] - The width of the render texture.
|
55948
56016
|
* @param {number} [height=100] - The height of the render texture.
|
55949
56017
|
* @param {string} [key=''] - The key of the RenderTexture in the Cache, if stored there.
|
@@ -56309,8 +56377,6 @@ Phaser.Text.prototype.destroy = function (destroyChildren) {
|
|
56309
56377
|
|
56310
56378
|
this.texture.destroy(true);
|
56311
56379
|
|
56312
|
-
PIXI.CanvasPool.remove(this);
|
56313
|
-
|
56314
56380
|
Phaser.Component.Destroy.prototype.destroy.call(this, destroyChildren);
|
56315
56381
|
|
56316
56382
|
};
|
@@ -56668,6 +56734,8 @@ Phaser.Text.prototype.updateText = function () {
|
|
56668
56734
|
|
56669
56735
|
this.updateTexture();
|
56670
56736
|
|
56737
|
+
this.dirty = false;
|
56738
|
+
|
56671
56739
|
};
|
56672
56740
|
|
56673
56741
|
/**
|
@@ -57527,20 +57595,20 @@ Phaser.Text.prototype.updateTexture = function () {
|
|
57527
57595
|
// Align the canvas based on the bounds
|
57528
57596
|
if (this.style.boundsAlignH === 'right')
|
57529
57597
|
{
|
57530
|
-
x += this.textBounds.width - this.canvas.width;
|
57598
|
+
x += this.textBounds.width - this.canvas.width / this.resolution;
|
57531
57599
|
}
|
57532
57600
|
else if (this.style.boundsAlignH === 'center')
|
57533
57601
|
{
|
57534
|
-
x += this.textBounds.halfWidth - (this.canvas.width / 2);
|
57602
|
+
x += this.textBounds.halfWidth - (this.canvas.width / this.resolution / 2);
|
57535
57603
|
}
|
57536
57604
|
|
57537
57605
|
if (this.style.boundsAlignV === 'bottom')
|
57538
57606
|
{
|
57539
|
-
y += this.textBounds.height - this.canvas.height;
|
57607
|
+
y += this.textBounds.height - this.canvas.height / this.resolution;
|
57540
57608
|
}
|
57541
57609
|
else if (this.style.boundsAlignV === 'middle')
|
57542
57610
|
{
|
57543
|
-
y += this.textBounds.halfHeight - (this.canvas.height / 2);
|
57611
|
+
y += this.textBounds.halfHeight - (this.canvas.height / this.resolution / 2);
|
57544
57612
|
}
|
57545
57613
|
|
57546
57614
|
this.pivot.x = -x;
|
@@ -58655,7 +58723,8 @@ Phaser.BitmapText.prototype.scanLine = function (data, scale, text) {
|
|
58655
58723
|
var kerning = (prevCharCode && charData.kerning[prevCharCode]) ? charData.kerning[prevCharCode] : 0;
|
58656
58724
|
|
58657
58725
|
// Record the last space in the string and the current width
|
58658
|
-
if (/(\s)/.test(text.charAt(i)))
|
58726
|
+
if (/(\s)/.test(text.charAt(i)))
|
58727
|
+
{
|
58659
58728
|
lastSpace = i;
|
58660
58729
|
wrappedWidth = w;
|
58661
58730
|
}
|
@@ -59924,7 +59993,7 @@ Object.defineProperty(Phaser.Rope.prototype, "segments", {
|
|
59924
59993
|
* An important note about texture dimensions:
|
59925
59994
|
*
|
59926
59995
|
* When running under Canvas a TileSprite can use any texture size without issue. When running under WebGL the texture should ideally be
|
59927
|
-
* a power of two in size (i.e. 4, 8, 16, 32, 64, 128, 256, 512,
|
59996
|
+
* a power of two in size (i.e. 4, 8, 16, 32, 64, 128, 256, 512, etc pixels width by height). If the texture isn't a power of two
|
59928
59997
|
* it will be rendered to a blank canvas that is the correct size, which means you may have 'blank' areas appearing to the right and
|
59929
59998
|
* bottom of your frame. To avoid this ensure your textures are perfect powers of two.
|
59930
59999
|
*
|
@@ -61067,12 +61136,12 @@ Phaser.Device._initialize = function () {
|
|
61067
61136
|
device.webApp = true;
|
61068
61137
|
}
|
61069
61138
|
|
61070
|
-
if (typeof window.cordova !==
|
61139
|
+
if (typeof window.cordova !== 'undefined')
|
61071
61140
|
{
|
61072
61141
|
device.cordova = true;
|
61073
61142
|
}
|
61074
61143
|
|
61075
|
-
if (typeof process !==
|
61144
|
+
if (typeof process !== 'undefined' && typeof require !== 'undefined')
|
61076
61145
|
{
|
61077
61146
|
device.node = true;
|
61078
61147
|
}
|
@@ -61092,7 +61161,7 @@ Phaser.Device._initialize = function () {
|
|
61092
61161
|
if (device.cocoonJS)
|
61093
61162
|
{
|
61094
61163
|
try {
|
61095
|
-
device.cocoonJSApp = (typeof CocoonJS !==
|
61164
|
+
device.cocoonJSApp = (typeof CocoonJS !== 'undefined');
|
61096
61165
|
}
|
61097
61166
|
catch(error)
|
61098
61167
|
{
|
@@ -61100,7 +61169,7 @@ Phaser.Device._initialize = function () {
|
|
61100
61169
|
}
|
61101
61170
|
}
|
61102
61171
|
|
61103
|
-
if (typeof window.ejecta !==
|
61172
|
+
if (typeof window.ejecta !== 'undefined')
|
61104
61173
|
{
|
61105
61174
|
device.ejecta = true;
|
61106
61175
|
}
|
@@ -61225,42 +61294,6 @@ Phaser.Device._initialize = function () {
|
|
61225
61294
|
|
61226
61295
|
}
|
61227
61296
|
|
61228
|
-
/**
|
61229
|
-
* Check PixelRatio, iOS device, Vibration API, ArrayBuffers and endianess.
|
61230
|
-
*/
|
61231
|
-
function _checkDevice () {
|
61232
|
-
|
61233
|
-
device.pixelRatio = window['devicePixelRatio'] || 1;
|
61234
|
-
device.iPhone = navigator.userAgent.toLowerCase().indexOf('iphone') != -1;
|
61235
|
-
device.iPhone4 = (device.pixelRatio == 2 && device.iPhone);
|
61236
|
-
device.iPad = navigator.userAgent.toLowerCase().indexOf('ipad') != -1;
|
61237
|
-
|
61238
|
-
if (typeof Int8Array !== 'undefined')
|
61239
|
-
{
|
61240
|
-
device.typedArray = true;
|
61241
|
-
}
|
61242
|
-
else
|
61243
|
-
{
|
61244
|
-
device.typedArray = false;
|
61245
|
-
}
|
61246
|
-
|
61247
|
-
if (typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && typeof Uint32Array !== 'undefined')
|
61248
|
-
{
|
61249
|
-
device.littleEndian = _checkIsLittleEndian();
|
61250
|
-
device.LITTLE_ENDIAN = device.littleEndian;
|
61251
|
-
}
|
61252
|
-
|
61253
|
-
device.support32bit = (typeof ArrayBuffer !== "undefined" && typeof Uint8ClampedArray !== "undefined" && typeof Int32Array !== "undefined" && device.littleEndian !== null && _checkIsUint8ClampedImageData());
|
61254
|
-
|
61255
|
-
navigator.vibrate = navigator.vibrate || navigator.webkitVibrate || navigator.mozVibrate || navigator.msVibrate;
|
61256
|
-
|
61257
|
-
if (navigator.vibrate)
|
61258
|
-
{
|
61259
|
-
device.vibration = true;
|
61260
|
-
}
|
61261
|
-
|
61262
|
-
}
|
61263
|
-
|
61264
61297
|
/**
|
61265
61298
|
* Check Little or Big Endian system.
|
61266
61299
|
*
|
@@ -61277,12 +61310,12 @@ Phaser.Device._initialize = function () {
|
|
61277
61310
|
b[2] = 0xc3;
|
61278
61311
|
b[3] = 0xd4;
|
61279
61312
|
|
61280
|
-
if (c[0]
|
61313
|
+
if (c[0] === 0xd4c3b2a1)
|
61281
61314
|
{
|
61282
61315
|
return true;
|
61283
61316
|
}
|
61284
61317
|
|
61285
|
-
if (c[0]
|
61318
|
+
if (c[0] === 0xa1b2c3d4)
|
61286
61319
|
{
|
61287
61320
|
return false;
|
61288
61321
|
}
|
@@ -61322,6 +61355,42 @@ Phaser.Device._initialize = function () {
|
|
61322
61355
|
|
61323
61356
|
}
|
61324
61357
|
|
61358
|
+
/**
|
61359
|
+
* Check PixelRatio, iOS device, Vibration API, ArrayBuffers and endianess.
|
61360
|
+
*/
|
61361
|
+
function _checkDevice () {
|
61362
|
+
|
61363
|
+
device.pixelRatio = window['devicePixelRatio'] || 1;
|
61364
|
+
device.iPhone = navigator.userAgent.toLowerCase().indexOf('iphone') !== -1;
|
61365
|
+
device.iPhone4 = (device.pixelRatio === 2 && device.iPhone);
|
61366
|
+
device.iPad = navigator.userAgent.toLowerCase().indexOf('ipad') !== -1;
|
61367
|
+
|
61368
|
+
if (typeof Int8Array !== 'undefined')
|
61369
|
+
{
|
61370
|
+
device.typedArray = true;
|
61371
|
+
}
|
61372
|
+
else
|
61373
|
+
{
|
61374
|
+
device.typedArray = false;
|
61375
|
+
}
|
61376
|
+
|
61377
|
+
if (typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && typeof Uint32Array !== 'undefined')
|
61378
|
+
{
|
61379
|
+
device.littleEndian = _checkIsLittleEndian();
|
61380
|
+
device.LITTLE_ENDIAN = device.littleEndian;
|
61381
|
+
}
|
61382
|
+
|
61383
|
+
device.support32bit = (typeof ArrayBuffer !== 'undefined' && typeof Uint8ClampedArray !== 'undefined' && typeof Int32Array !== 'undefined' && device.littleEndian !== null && _checkIsUint8ClampedImageData());
|
61384
|
+
|
61385
|
+
navigator.vibrate = navigator.vibrate || navigator.webkitVibrate || navigator.mozVibrate || navigator.msVibrate;
|
61386
|
+
|
61387
|
+
if (navigator.vibrate)
|
61388
|
+
{
|
61389
|
+
device.vibration = true;
|
61390
|
+
}
|
61391
|
+
|
61392
|
+
}
|
61393
|
+
|
61325
61394
|
/**
|
61326
61395
|
* Check whether the host environment support 3D CSS.
|
61327
61396
|
*/
|
@@ -62292,6 +62361,87 @@ Phaser.Math = {
|
|
62292
62361
|
|
62293
62362
|
},
|
62294
62363
|
|
62364
|
+
/**
|
62365
|
+
* Rotates currentAngle towards targetAngle, taking the shortest rotation distance.
|
62366
|
+
* The lerp argument is the amount to rotate by in this call.
|
62367
|
+
*
|
62368
|
+
* @method Phaser.Math#rotateToAngle
|
62369
|
+
* @param {number} currentAngle - The current angle, in radians.
|
62370
|
+
* @param {number} targetAngle - The target angle to rotate to, in radians.
|
62371
|
+
* @param {number} [lerp=0.05] - The lerp value to add to the current angle.
|
62372
|
+
* @return {number} The adjusted angle.
|
62373
|
+
*/
|
62374
|
+
rotateToAngle: function (currentAngle, targetAngle, lerp) {
|
62375
|
+
|
62376
|
+
if (lerp === undefined) { lerp = 0.05; }
|
62377
|
+
|
62378
|
+
if (currentAngle === targetAngle)
|
62379
|
+
{
|
62380
|
+
return currentAngle;
|
62381
|
+
}
|
62382
|
+
|
62383
|
+
if (Math.abs(targetAngle - currentAngle) <= lerp || Math.abs(targetAngle - currentAngle) >= (Phaser.Math.PI2 - lerp))
|
62384
|
+
{
|
62385
|
+
currentAngle = targetAngle;
|
62386
|
+
}
|
62387
|
+
else
|
62388
|
+
{
|
62389
|
+
if (Math.abs(targetAngle - currentAngle) > Math.PI)
|
62390
|
+
{
|
62391
|
+
if (targetAngle < currentAngle)
|
62392
|
+
{
|
62393
|
+
targetAngle += Phaser.Math.PI2;
|
62394
|
+
}
|
62395
|
+
else
|
62396
|
+
{
|
62397
|
+
targetAngle -= Phaser.Math.PI2;
|
62398
|
+
}
|
62399
|
+
}
|
62400
|
+
|
62401
|
+
if (targetAngle > currentAngle)
|
62402
|
+
{
|
62403
|
+
currentAngle += lerp;
|
62404
|
+
}
|
62405
|
+
else if (targetAngle < currentAngle)
|
62406
|
+
{
|
62407
|
+
currentAngle -= lerp;
|
62408
|
+
}
|
62409
|
+
}
|
62410
|
+
|
62411
|
+
return currentAngle;
|
62412
|
+
|
62413
|
+
},
|
62414
|
+
|
62415
|
+
/**
|
62416
|
+
* Gets the shortest angle between `angle1` and `angle2`.
|
62417
|
+
* Both angles must be in the range -180 to 180, which is the same clamped
|
62418
|
+
* range that `sprite.angle` uses, so you can pass in two sprite angles to
|
62419
|
+
* this method, and get the shortest angle back between the two of them.
|
62420
|
+
*
|
62421
|
+
* The angle returned will be in the same range. If the returned angle is
|
62422
|
+
* greater than 0 then it's a counter-clockwise rotation, if < 0 then it's
|
62423
|
+
* a clockwise rotation.
|
62424
|
+
*
|
62425
|
+
* @method Phaser.Math#getShortestAngle
|
62426
|
+
* @param {number} angle1 - The first angle. In the range -180 to 180.
|
62427
|
+
* @param {number} angle2 - The second angle. In the range -180 to 180.
|
62428
|
+
* @return {number} The shortest angle, in degrees. If greater than zero it's a counter-clockwise rotation.
|
62429
|
+
*/
|
62430
|
+
getShortestAngle: function (angle1, angle2) {
|
62431
|
+
|
62432
|
+
var difference = angle2 - angle1;
|
62433
|
+
|
62434
|
+
if (difference === 0)
|
62435
|
+
{
|
62436
|
+
return 0;
|
62437
|
+
}
|
62438
|
+
|
62439
|
+
var times = Math.floor((difference - (-180)) / 360);
|
62440
|
+
|
62441
|
+
return difference - (times * 360);
|
62442
|
+
|
62443
|
+
},
|
62444
|
+
|
62295
62445
|
/**
|
62296
62446
|
* Find the angle of a segment from (x1, y1) -> (x2, y2).
|
62297
62447
|
*
|
@@ -63943,7 +64093,7 @@ Phaser.Net.prototype = {
|
|
63943
64093
|
|
63944
64094
|
if (key.length > 1)
|
63945
64095
|
{
|
63946
|
-
if (parameter && parameter
|
64096
|
+
if (parameter && parameter === this.decodeURI(key[0]))
|
63947
64097
|
{
|
63948
64098
|
return this.decodeURI(key[1]);
|
63949
64099
|
}
|
@@ -68082,9 +68232,6 @@ Phaser.AnimationManager.prototype = {
|
|
68082
68232
|
|
68083
68233
|
this.currentAnim = this._anims[name];
|
68084
68234
|
|
68085
|
-
// This shouldn't be set until the Animation is played, surely?
|
68086
|
-
// this.currentFrame = this.currentAnim.currentFrame;
|
68087
|
-
|
68088
68235
|
if (this.sprite.tilingTexture)
|
68089
68236
|
{
|
68090
68237
|
this.sprite.refreshTexture = true;
|
@@ -68688,29 +68835,33 @@ Phaser.Animation.prototype = {
|
|
68688
68835
|
},
|
68689
68836
|
|
68690
68837
|
/**
|
68691
|
-
|
68692
|
-
|
68693
|
-
|
68694
|
-
|
68695
|
-
|
68838
|
+
* Reverses the animation direction.
|
68839
|
+
*
|
68840
|
+
* @method Phaser.Animation#reverse
|
68841
|
+
* @return {Phaser.Animation} The animation instance.
|
68842
|
+
*/
|
68696
68843
|
reverse: function () {
|
68844
|
+
|
68697
68845
|
this.reversed = !this.reversed;
|
68698
68846
|
|
68699
68847
|
return this;
|
68848
|
+
|
68700
68849
|
},
|
68701
68850
|
|
68702
68851
|
/**
|
68703
|
-
|
68704
|
-
|
68705
|
-
|
68706
|
-
|
68707
|
-
|
68708
|
-
|
68709
|
-
|
68852
|
+
* Reverses the animation direction for the current/next animation only
|
68853
|
+
* Once the onComplete event is called this method will be called again and revert
|
68854
|
+
* the reversed state.
|
68855
|
+
*
|
68856
|
+
* @method Phaser.Animation#reverseOnce
|
68857
|
+
* @return {Phaser.Animation} The animation instance.
|
68858
|
+
*/
|
68710
68859
|
reverseOnce: function () {
|
68711
|
-
|
68860
|
+
|
68861
|
+
this.onComplete.addOnce(this.reverse, this);
|
68712
68862
|
|
68713
68863
|
return this.reverse();
|
68864
|
+
|
68714
68865
|
},
|
68715
68866
|
|
68716
68867
|
/**
|
@@ -68861,9 +69012,12 @@ Phaser.Animation.prototype = {
|
|
68861
69012
|
// And what's left now?
|
68862
69013
|
this._timeNextFrame = this.game.time.time + (this.delay - this._frameDiff);
|
68863
69014
|
|
68864
|
-
if (this.isReversed)
|
69015
|
+
if (this.isReversed)
|
69016
|
+
{
|
68865
69017
|
this._frameIndex -= this._frameSkip;
|
68866
|
-
}
|
69018
|
+
}
|
69019
|
+
else
|
69020
|
+
{
|
68867
69021
|
this._frameIndex += this._frameSkip;
|
68868
69022
|
}
|
68869
69023
|
|
@@ -68874,7 +69028,8 @@ Phaser.Animation.prototype = {
|
|
68874
69028
|
// Update current state before event callback
|
68875
69029
|
this._frameIndex = Math.abs(this._frameIndex) % this._frames.length;
|
68876
69030
|
|
68877
|
-
if (this.isReversed)
|
69031
|
+
if (this.isReversed)
|
69032
|
+
{
|
68878
69033
|
this._frameIndex = this._frames.length - 1 - this._frameIndex;
|
68879
69034
|
}
|
68880
69035
|
|
@@ -69212,19 +69367,19 @@ Object.defineProperty(Phaser.Animation.prototype, 'frame', {
|
|
69212
69367
|
|
69213
69368
|
/**
|
69214
69369
|
* @name Phaser.Animation#speed
|
69215
|
-
* @property {number} speed - Gets or sets the current speed of the animation in frames per second. Changing this in a playing animation will take effect from the next frame.
|
69370
|
+
* @property {number} speed - Gets or sets the current speed of the animation in frames per second. Changing this in a playing animation will take effect from the next frame. Value must be greater than 0.
|
69216
69371
|
*/
|
69217
69372
|
Object.defineProperty(Phaser.Animation.prototype, 'speed', {
|
69218
69373
|
|
69219
69374
|
get: function () {
|
69220
69375
|
|
69221
|
-
return
|
69376
|
+
return 1000 / this.delay;
|
69222
69377
|
|
69223
69378
|
},
|
69224
69379
|
|
69225
69380
|
set: function (value) {
|
69226
69381
|
|
69227
|
-
if (value
|
69382
|
+
if (value > 0)
|
69228
69383
|
{
|
69229
69384
|
this.delay = 1000 / value;
|
69230
69385
|
}
|
@@ -69997,15 +70152,16 @@ Phaser.AnimationParser = {
|
|
69997
70152
|
signature.forEach( function(key) {
|
69998
70153
|
if (!json[key])
|
69999
70154
|
{
|
70000
|
-
console.warn(
|
70155
|
+
console.warn('Phaser.AnimationParser.JSONDataPyxel: Invalid Pyxel Tilemap JSON given, missing "' + key + '" key.');
|
70001
70156
|
console.log(json);
|
70002
70157
|
return;
|
70003
70158
|
}
|
70004
70159
|
});
|
70005
70160
|
|
70006
70161
|
// For this purpose, I only care about parsing tilemaps with a single layer.
|
70007
|
-
if(json['layers'].length
|
70008
|
-
|
70162
|
+
if (json['layers'].length !== 1)
|
70163
|
+
{
|
70164
|
+
console.warn('Phaser.AnimationParser.JSONDataPyxel: Too many layers, this parser only supports flat Tilemaps.');
|
70009
70165
|
console.log(json);
|
70010
70166
|
return;
|
70011
70167
|
}
|
@@ -72253,12 +72409,23 @@ Phaser.Loader = function (game) {
|
|
72253
72409
|
* Used to map the application mime-types to to the Accept header in XHR requests.
|
72254
72410
|
* If you don't require these mappings, or they cause problems on your server, then
|
72255
72411
|
* remove them from the headers object and the XHR request will not try to use them.
|
72412
|
+
*
|
72413
|
+
* This object can also be used to set the `X-Requested-With` header to
|
72414
|
+
* `XMLHttpRequest` (or any other value you need). To enable this do:
|
72415
|
+
*
|
72416
|
+
* `this.load.headers.requestedWith = 'XMLHttpRequest'`
|
72417
|
+
*
|
72418
|
+
* before adding anything to the Loader. The XHR loader will then call:
|
72419
|
+
*
|
72420
|
+
* `setRequestHeader('X-Requested-With', this.headers['requestedWith'])`
|
72421
|
+
*
|
72256
72422
|
* @property {object} headers
|
72257
72423
|
* @default
|
72258
72424
|
*/
|
72259
72425
|
this.headers = {
|
72260
|
-
|
72261
|
-
|
72426
|
+
"requestedWith": false,
|
72427
|
+
"json": "application/json",
|
72428
|
+
"xml": "application/xml"
|
72262
72429
|
};
|
72263
72430
|
|
72264
72431
|
/**
|
@@ -73182,7 +73349,7 @@ Phaser.Loader.prototype = {
|
|
73182
73349
|
*
|
73183
73350
|
* The URL can be relative or absolute. If the URL is relative the `Loader.baseURL` and `Loader.path` values will be prepended to it.
|
73184
73351
|
*
|
73185
|
-
* @method Phaser.Loader#
|
73352
|
+
* @method Phaser.Loader#audioSprite
|
73186
73353
|
* @param {string} key - Unique asset key of the audio file.
|
73187
73354
|
* @param {Array|string} urls - An array containing the URLs of the audio files, i.e.: [ 'audiosprite.mp3', 'audiosprite.ogg', 'audiosprite.m4a' ] or a single string containing just one URL.
|
73188
73355
|
* @param {string} [jsonURL=null] - The URL of the audiosprite configuration JSON object. If you wish to pass the data directly set this parameter to null.
|
@@ -73301,6 +73468,10 @@ Phaser.Loader.prototype = {
|
|
73301
73468
|
/**
|
73302
73469
|
* Adds a Tile Map data file to the current load queue.
|
73303
73470
|
*
|
73471
|
+
* Phaser can load data in two different formats: CSV and Tiled JSON.
|
73472
|
+
*
|
73473
|
+
* Tiled is a free software package, specifically for creating tilemaps, and is available from http://www.mapeditor.org
|
73474
|
+
*
|
73304
73475
|
* You can choose to either load the data externally, by providing a URL to a json file.
|
73305
73476
|
* Or you can pass in a JSON object or String via the `data` parameter.
|
73306
73477
|
* If you pass a String the data is automatically run through `JSON.parse` and then immediately added to the Phaser.Cache.
|
@@ -74477,9 +74648,14 @@ Phaser.Loader.prototype = {
|
|
74477
74648
|
xhr.open("GET", url, true);
|
74478
74649
|
xhr.responseType = type;
|
74479
74650
|
|
74651
|
+
if (this.headers['requestedWith'] !== false)
|
74652
|
+
{
|
74653
|
+
xhr.setRequestHeader('X-Requested-With', this.headers['requestedWith']);
|
74654
|
+
}
|
74655
|
+
|
74480
74656
|
if (this.headers[file.type])
|
74481
74657
|
{
|
74482
|
-
xhr.setRequestHeader(
|
74658
|
+
xhr.setRequestHeader('Accept', this.headers[file.type]);
|
74483
74659
|
}
|
74484
74660
|
|
74485
74661
|
onerror = onerror || this.fileError;
|
@@ -74489,7 +74665,7 @@ Phaser.Loader.prototype = {
|
|
74489
74665
|
xhr.onload = function () {
|
74490
74666
|
|
74491
74667
|
try {
|
74492
|
-
if (xhr.readyState
|
74668
|
+
if (xhr.readyState === 4 && xhr.status >= 400 && xhr.status <= 599) { // Handle HTTP status codes of 4xx and 5xx as errors, even if xhr.onerror was not called.
|
74493
74669
|
return onerror.call(_this, file, xhr);
|
74494
74670
|
}
|
74495
74671
|
else {
|
@@ -74603,7 +74779,7 @@ Phaser.Loader.prototype = {
|
|
74603
74779
|
|
74604
74780
|
xhr.onload = function () {
|
74605
74781
|
try {
|
74606
|
-
if (xhr.readyState
|
74782
|
+
if (xhr.readyState === 4 && xhr.status >= 400 && xhr.status <= 599) { // Handle HTTP status codes of 4xx and 5xx as errors, even if xhr.onerror was not called.
|
74607
74783
|
return onerror.call(_this, file, xhr);
|
74608
74784
|
}
|
74609
74785
|
else {
|
@@ -74811,11 +74987,11 @@ Phaser.Loader.prototype = {
|
|
74811
74987
|
// Load the JSON or XML before carrying on with the next file
|
74812
74988
|
loadNext = false;
|
74813
74989
|
|
74814
|
-
if (file.format
|
74990
|
+
if (file.format === Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY || file.format === Phaser.Loader.TEXTURE_ATLAS_JSON_HASH || file.format === Phaser.Loader.TEXTURE_ATLAS_JSON_PYXEL)
|
74815
74991
|
{
|
74816
74992
|
this.xhrLoad(file, this.transformUrl(file.atlasURL, file), 'text', this.jsonLoadComplete);
|
74817
74993
|
}
|
74818
|
-
else if (file.format
|
74994
|
+
else if (file.format === Phaser.Loader.TEXTURE_ATLAS_XML_STARLING)
|
74819
74995
|
{
|
74820
74996
|
this.xhrLoad(file, this.transformUrl(file.atlasURL, file), 'text', this.xmlLoadComplete);
|
74821
74997
|
}
|
@@ -75999,7 +76175,7 @@ Phaser.Sound.prototype = {
|
|
75999
76175
|
*/
|
76000
76176
|
loopFull: function (volume) {
|
76001
76177
|
|
76002
|
-
this.play(null, 0, volume, true);
|
76178
|
+
return this.play(null, 0, volume, true);
|
76003
76179
|
|
76004
76180
|
},
|
76005
76181
|
|
@@ -76056,6 +76232,8 @@ Phaser.Sound.prototype = {
|
|
76056
76232
|
this._sound.pause();
|
76057
76233
|
this._sound.currentTime = 0;
|
76058
76234
|
}
|
76235
|
+
|
76236
|
+
this.isPlaying = false;
|
76059
76237
|
}
|
76060
76238
|
|
76061
76239
|
if (marker === '' && Object.keys(this.markers).length > 0)
|
@@ -76067,10 +76245,10 @@ Phaser.Sound.prototype = {
|
|
76067
76245
|
|
76068
76246
|
if (marker !== '')
|
76069
76247
|
{
|
76070
|
-
this.currentMarker = marker;
|
76071
|
-
|
76072
76248
|
if (this.markers[marker])
|
76073
76249
|
{
|
76250
|
+
this.currentMarker = marker;
|
76251
|
+
|
76074
76252
|
// Playing a marker? Then we default to the marker values
|
76075
76253
|
this.position = this.markers[marker].start;
|
76076
76254
|
this.volume = this.markers[marker].volume;
|
@@ -76095,7 +76273,7 @@ Phaser.Sound.prototype = {
|
|
76095
76273
|
}
|
76096
76274
|
else
|
76097
76275
|
{
|
76098
|
-
|
76276
|
+
console.warn("Phaser.Sound.play: audio marker " + marker + " doesn't exist");
|
76099
76277
|
return this;
|
76100
76278
|
}
|
76101
76279
|
}
|
@@ -76653,8 +76831,7 @@ Object.defineProperty(Phaser.Sound.prototype, "mute", {
|
|
76653
76831
|
|
76654
76832
|
/**
|
76655
76833
|
* @name Phaser.Sound#volume
|
76656
|
-
* @property {number} volume - Gets or sets the volume of this sound, a value between 0 and 1.
|
76657
|
-
* @readonly
|
76834
|
+
* @property {number} volume - Gets or sets the volume of this sound, a value between 0 and 1. The value given is clamped to the range 0 to 1.
|
76658
76835
|
*/
|
76659
76836
|
Object.defineProperty(Phaser.Sound.prototype, "volume", {
|
76660
76837
|
|
@@ -77767,6 +77944,18 @@ Phaser.ScaleManager = function (game, width, height) {
|
|
77767
77944
|
*/
|
77768
77945
|
this.leaveIncorrectOrientation = new Phaser.Signal();
|
77769
77946
|
|
77947
|
+
/**
|
77948
|
+
* This boolean provides you with a way to determine if the browser is in Full Screen
|
77949
|
+
* mode (via the Full Screen API), and Phaser was the one responsible for activating it.
|
77950
|
+
*
|
77951
|
+
* It's possible that ScaleManager.isFullScreen returns `true` even if Phaser wasn't the
|
77952
|
+
* one that made the browser go full-screen, so this flag lets you determine that.
|
77953
|
+
*
|
77954
|
+
* @property {boolean} hasPhaserSetFullScreen
|
77955
|
+
* @default
|
77956
|
+
*/
|
77957
|
+
this.hasPhaserSetFullScreen = false;
|
77958
|
+
|
77770
77959
|
/**
|
77771
77960
|
* If specified, this is the DOM element on which the Fullscreen API enter request will be invoked.
|
77772
77961
|
* The target element must have the correct CSS styling and contain the Display canvas.
|
@@ -79307,9 +79496,11 @@ Phaser.ScaleManager.prototype = {
|
|
79307
79496
|
{
|
79308
79497
|
// Error is called in timeout to emulate the real fullscreenerror event better
|
79309
79498
|
var _this = this;
|
79499
|
+
|
79310
79500
|
setTimeout(function () {
|
79311
79501
|
_this.fullScreenError();
|
79312
79502
|
}, 10);
|
79503
|
+
|
79313
79504
|
return;
|
79314
79505
|
}
|
79315
79506
|
|
@@ -79326,7 +79517,7 @@ Phaser.ScaleManager.prototype = {
|
|
79326
79517
|
}
|
79327
79518
|
}
|
79328
79519
|
|
79329
|
-
if (
|
79520
|
+
if (antialias !== undefined && this.game.renderType === Phaser.CANVAS)
|
79330
79521
|
{
|
79331
79522
|
this.game.stage.smoothed = antialias;
|
79332
79523
|
}
|
@@ -79345,6 +79536,8 @@ Phaser.ScaleManager.prototype = {
|
|
79345
79536
|
targetElement: fsTarget
|
79346
79537
|
};
|
79347
79538
|
|
79539
|
+
this.hasPhaserSetFullScreen = true;
|
79540
|
+
|
79348
79541
|
this.onFullScreenInit.dispatch(this, initData);
|
79349
79542
|
|
79350
79543
|
if (this._createdFullScreenTarget)
|
@@ -79384,6 +79577,8 @@ Phaser.ScaleManager.prototype = {
|
|
79384
79577
|
return false;
|
79385
79578
|
}
|
79386
79579
|
|
79580
|
+
this.hasPhaserSetFullScreen = false;
|
79581
|
+
|
79387
79582
|
document[this.game.device.cancelFullscreen]();
|
79388
79583
|
|
79389
79584
|
return true;
|
@@ -79630,14 +79825,17 @@ Phaser.ScaleManager.prototype.constructor = Phaser.ScaleManager;
|
|
79630
79825
|
Object.defineProperty(Phaser.ScaleManager.prototype, "boundingParent", {
|
79631
79826
|
|
79632
79827
|
get: function () {
|
79828
|
+
|
79633
79829
|
if (this.parentIsWindow ||
|
79634
|
-
(this.isFullScreen && !this._createdFullScreenTarget))
|
79830
|
+
(this.isFullScreen && this.hasPhaserSetFullScreen && !this._createdFullScreenTarget))
|
79635
79831
|
{
|
79636
79832
|
return null;
|
79637
79833
|
}
|
79638
79834
|
|
79639
79835
|
var parentNode = this.game.canvas && this.game.canvas.parentNode;
|
79836
|
+
|
79640
79837
|
return parentNode || null;
|
79838
|
+
|
79641
79839
|
}
|
79642
79840
|
|
79643
79841
|
});
|
@@ -82051,7 +82249,7 @@ Phaser.LinkedList.prototype = {
|
|
82051
82249
|
entity = entity.next;
|
82052
82250
|
|
82053
82251
|
}
|
82054
|
-
while(entity
|
82252
|
+
while (entity !== this.last.next);
|
82055
82253
|
|
82056
82254
|
}
|
82057
82255
|
|
@@ -83412,7 +83610,8 @@ Phaser.Color = {
|
|
83412
83610
|
componentToHex: function (color) {
|
83413
83611
|
|
83414
83612
|
var hex = color.toString(16);
|
83415
|
-
|
83613
|
+
|
83614
|
+
return (hex.length === 1) ? '0' + hex : hex;
|
83416
83615
|
|
83417
83616
|
},
|
83418
83617
|
|
@@ -85446,7 +85645,12 @@ Phaser.Physics.Arcade.prototype = {
|
|
85446
85645
|
*/
|
85447
85646
|
separate: function (body1, body2, processCallback, callbackContext, overlapOnly) {
|
85448
85647
|
|
85449
|
-
if (
|
85648
|
+
if (
|
85649
|
+
!body1.enable ||
|
85650
|
+
!body2.enable ||
|
85651
|
+
body1.checkCollision.none ||
|
85652
|
+
body2.checkCollision.none ||
|
85653
|
+
!this.intersects(body1, body2))
|
85450
85654
|
{
|
85451
85655
|
return false;
|
85452
85656
|
}
|
@@ -85652,7 +85856,10 @@ Phaser.Physics.Arcade.prototype = {
|
|
85652
85856
|
this.getOverlapX(body1, body2);
|
85653
85857
|
this.getOverlapY(body1, body2);
|
85654
85858
|
|
85655
|
-
var
|
85859
|
+
var dx = body2.center.x - body1.center.x;
|
85860
|
+
var dy = body2.center.y - body1.center.y;
|
85861
|
+
|
85862
|
+
var angleCollision = Math.atan2(dy, dx);
|
85656
85863
|
|
85657
85864
|
var overlap = 0;
|
85658
85865
|
|
@@ -86522,8 +86729,8 @@ Phaser.Physics.Arcade.prototype = {
|
|
86522
86729
|
*/
|
86523
86730
|
angleBetweenCenters: function (source, target) {
|
86524
86731
|
|
86525
|
-
var dx = target.
|
86526
|
-
var dy = target.
|
86732
|
+
var dx = target.centerX - source.centerX;
|
86733
|
+
var dy = target.centerY - source.centerY;
|
86527
86734
|
|
86528
86735
|
return Math.atan2(dy, dx);
|
86529
86736
|
|
@@ -86684,17 +86891,17 @@ Phaser.Physics.Arcade.Body = function (sprite) {
|
|
86684
86891
|
this.allowRotation = true;
|
86685
86892
|
|
86686
86893
|
/**
|
86687
|
-
*
|
86894
|
+
* The Body's rotation in degrees, as calculated by its angularVelocity and angularAcceleration. Please understand that the collision Body
|
86688
86895
|
* itself never rotates, it is always axis-aligned. However these values are passed up to the parent Sprite and updates its rotation.
|
86689
86896
|
* @property {number} rotation
|
86690
86897
|
*/
|
86691
|
-
this.rotation = sprite.
|
86898
|
+
this.rotation = sprite.angle;
|
86692
86899
|
|
86693
86900
|
/**
|
86694
86901
|
* @property {number} preRotation - The previous rotation of the physics body.
|
86695
86902
|
* @readonly
|
86696
86903
|
*/
|
86697
|
-
this.preRotation = sprite.
|
86904
|
+
this.preRotation = sprite.angle;
|
86698
86905
|
|
86699
86906
|
/**
|
86700
86907
|
* @property {number} width - The calculated width of the physics body.
|
@@ -86858,25 +87065,25 @@ Phaser.Physics.Arcade.Body = function (sprite) {
|
|
86858
87065
|
this.friction = new Phaser.Point(1, 0);
|
86859
87066
|
|
86860
87067
|
/**
|
86861
|
-
* @property {number} angularVelocity - The angular velocity controls the rotation speed of the Body. It is measured in
|
87068
|
+
* @property {number} angularVelocity - The angular velocity controls the rotation speed of the Body. It is measured in degrees per second.
|
86862
87069
|
* @default
|
86863
87070
|
*/
|
86864
87071
|
this.angularVelocity = 0;
|
86865
87072
|
|
86866
87073
|
/**
|
86867
|
-
* @property {number} angularAcceleration - The angular acceleration is the rate of change of the angular velocity. Measured in
|
87074
|
+
* @property {number} angularAcceleration - The angular acceleration is the rate of change of the angular velocity. Measured in degrees per second squared.
|
86868
87075
|
* @default
|
86869
87076
|
*/
|
86870
87077
|
this.angularAcceleration = 0;
|
86871
87078
|
|
86872
87079
|
/**
|
86873
|
-
* @property {number} angularDrag - The drag applied during the rotation of the Body.
|
87080
|
+
* @property {number} angularDrag - The drag applied during the rotation of the Body. Measured in degrees per second squared.
|
86874
87081
|
* @default
|
86875
87082
|
*/
|
86876
87083
|
this.angularDrag = 0;
|
86877
87084
|
|
86878
87085
|
/**
|
86879
|
-
* @property {number} maxAngular - The maximum angular velocity in
|
87086
|
+
* @property {number} maxAngular - The maximum angular velocity in degrees per second that the Body can reach.
|
86880
87087
|
* @default
|
86881
87088
|
*/
|
86882
87089
|
this.maxAngular = 1000;
|
@@ -86888,7 +87095,7 @@ Phaser.Physics.Arcade.Body = function (sprite) {
|
|
86888
87095
|
this.mass = 1;
|
86889
87096
|
|
86890
87097
|
/**
|
86891
|
-
* @property {number} angle - The angle of the Body in radians
|
87098
|
+
* @property {number} angle - The angle of the Body's velocity in radians.
|
86892
87099
|
* @readonly
|
86893
87100
|
*/
|
86894
87101
|
this.angle = 0;
|
@@ -86969,6 +87176,8 @@ Phaser.Physics.Arcade.Body = function (sprite) {
|
|
86969
87176
|
/**
|
86970
87177
|
* Set the checkCollision properties to control which directions collision is processed for this Body.
|
86971
87178
|
* For example checkCollision.up = false means it won't collide when the collision happened while moving up.
|
87179
|
+
* If you need to disable a Body entirely, use `body.enable = false`, this will also disable motion.
|
87180
|
+
* If you need to disable just collision and/or overlap checks, but retain motion, set `checkCollision.none = true`.
|
86972
87181
|
* @property {object} checkCollision - An object containing allowed collision.
|
86973
87182
|
*/
|
86974
87183
|
this.checkCollision = { none: false, any: true, up: true, down: true, left: true, right: true };
|
@@ -87825,7 +88034,7 @@ Phaser.Physics.Arcade.Body.prototype = {
|
|
87825
88034
|
/**
|
87826
88035
|
* Returns true if the top of this Body is in contact with either the world bounds or a tile.
|
87827
88036
|
*
|
87828
|
-
* @method Phaser.Physics.Arcade.Body#
|
88037
|
+
* @method Phaser.Physics.Arcade.Body#onCeiling
|
87829
88038
|
* @return {boolean} True if in contact with either the world bounds or a tile.
|
87830
88039
|
*/
|
87831
88040
|
onCeiling: function(){
|
@@ -89428,7 +89637,7 @@ Phaser.Physics.P2.prototype = {
|
|
89428
89637
|
*/
|
89429
89638
|
removeBody: function (body) {
|
89430
89639
|
|
89431
|
-
if (body.data.world
|
89640
|
+
if (body.data.world === this.world)
|
89432
89641
|
{
|
89433
89642
|
this.world.removeBody(body.data);
|
89434
89643
|
|
@@ -94486,6 +94695,9 @@ Object.defineProperty(Phaser.Tile.prototype, "bottom", {
|
|
94486
94695
|
|
94487
94696
|
/**
|
94488
94697
|
* Creates a new Phaser.Tilemap object. The map can either be populated with data from a Tiled JSON file or from a CSV file.
|
94698
|
+
*
|
94699
|
+
* Tiled is a free software package specifically for creating tile maps, and is available from http://www.mapeditor.org
|
94700
|
+
*
|
94489
94701
|
* To do this pass the Cache key as the first parameter. When using Tiled data you need only provide the key.
|
94490
94702
|
* When using CSV data you must provide the key and the tileWidth and tileHeight parameters.
|
94491
94703
|
* If creating a blank tilemap to be populated later, you can either specify no parameters at all and then use `Tilemap.create` or pass the map and tile dimensions here.
|
@@ -94611,6 +94823,11 @@ Phaser.Tilemap = function (game, key, tileWidth, tileHeight, width, height) {
|
|
94611
94823
|
*/
|
94612
94824
|
this.images = data.images;
|
94613
94825
|
|
94826
|
+
/**
|
94827
|
+
* @property {boolean} enableDebug - If set then console.log is used to dump out useful layer creation debug data.
|
94828
|
+
*/
|
94829
|
+
this.enableDebug = false;
|
94830
|
+
|
94614
94831
|
/**
|
94615
94832
|
* @property {number} currentLayer - The current layer.
|
94616
94833
|
*/
|
@@ -95041,10 +95258,9 @@ Phaser.Tilemap.prototype = {
|
|
95041
95258
|
* @param {number} [width] - The rendered width of the layer, should never be wider than Game.width. If not given it will be set to Game.width.
|
95042
95259
|
* @param {number} [height] - The rendered height of the layer, should never be wider than Game.height. If not given it will be set to Game.height.
|
95043
95260
|
* @param {Phaser.Group} [group] - Optional Group to add the object to. If not specified it will be added to the World group.
|
95044
|
-
* @param {boolean} [pixiTest] - Temporary additional flag to enable tests of the PIXI.Tilemap renderer
|
95045
95261
|
* @return {Phaser.TilemapLayer} The TilemapLayer object. This is an extension of Phaser.Sprite and can be moved around the display list accordingly.
|
95046
95262
|
*/
|
95047
|
-
createLayer: function (layer, width, height, group
|
95263
|
+
createLayer: function (layer, width, height, group) {
|
95048
95264
|
|
95049
95265
|
// Add Buffer support for the left of the canvas
|
95050
95266
|
|
@@ -95065,15 +95281,46 @@ Phaser.Tilemap.prototype = {
|
|
95065
95281
|
return;
|
95066
95282
|
}
|
95067
95283
|
|
95068
|
-
|
95284
|
+
// Sort out the display dimensions, so they never render too much, or too little.
|
95285
|
+
|
95286
|
+
if (width === undefined || width <= 0)
|
95287
|
+
{
|
95288
|
+
width = Math.min(this.game.width, this.layers[index].widthInPixels);
|
95289
|
+
}
|
95290
|
+
else if (width > this.game.width)
|
95291
|
+
{
|
95292
|
+
width = this.game.width;
|
95293
|
+
}
|
95294
|
+
|
95295
|
+
if (height === undefined || height <= 0)
|
95296
|
+
{
|
95297
|
+
height = Math.min(this.game.height, this.layers[index].heightInPixels);
|
95298
|
+
}
|
95299
|
+
else if (height > this.game.height)
|
95300
|
+
{
|
95301
|
+
height = this.game.height;
|
95302
|
+
}
|
95303
|
+
|
95304
|
+
if (this.enableDebug)
|
95069
95305
|
{
|
95070
|
-
|
95306
|
+
console.group('Tilemap.createLayer');
|
95307
|
+
console.log('Name:', this.layers[index].name);
|
95308
|
+
console.log('Size:', width, 'x', height);
|
95309
|
+
console.log('Tileset:', this.tilesets[0].name, 'index:', index);
|
95071
95310
|
}
|
95072
95311
|
|
95073
|
-
|
95312
|
+
var rootLayer = group.add(new Phaser.TilemapLayer(this.game, this, index, width, height));
|
95313
|
+
|
95314
|
+
if (this.enableDebug)
|
95315
|
+
{
|
95316
|
+
console.groupEnd();
|
95317
|
+
}
|
95318
|
+
|
95319
|
+
return rootLayer;
|
95074
95320
|
|
95075
95321
|
},
|
95076
95322
|
|
95323
|
+
|
95077
95324
|
/**
|
95078
95325
|
* Creates a new and empty layer on this Tilemap. By default TilemapLayers are fixed to the camera.
|
95079
95326
|
*
|
@@ -95092,7 +95339,7 @@ Phaser.Tilemap.prototype = {
|
|
95092
95339
|
|
95093
95340
|
if (this.getLayerIndex(name) !== null)
|
95094
95341
|
{
|
95095
|
-
console.warn('Tilemap.createBlankLayer: Layer with matching name already exists');
|
95342
|
+
console.warn('Tilemap.createBlankLayer: Layer with matching name already exists: ' + name);
|
95096
95343
|
return;
|
95097
95344
|
}
|
95098
95345
|
|
@@ -95124,7 +95371,6 @@ Phaser.Tilemap.prototype = {
|
|
95124
95371
|
|
95125
95372
|
for (var x = 0; x < width; x++)
|
95126
95373
|
{
|
95127
|
-
// row.push(null);
|
95128
95374
|
row.push(new Phaser.Tile(layer, -1, x, y, tileWidth, tileHeight));
|
95129
95375
|
}
|
95130
95376
|
|
@@ -95692,10 +95938,14 @@ Phaser.Tilemap.prototype = {
|
|
95692
95938
|
hasTile: function (x, y, layer) {
|
95693
95939
|
|
95694
95940
|
layer = this.getLayer(layer);
|
95695
|
-
|
95941
|
+
|
95942
|
+
if (this.layers[layer].data[y] === undefined || this.layers[layer].data[y][x] === undefined)
|
95943
|
+
{
|
95696
95944
|
return false;
|
95697
95945
|
}
|
95946
|
+
|
95698
95947
|
return (this.layers[layer].data[y][x].index > -1);
|
95948
|
+
|
95699
95949
|
},
|
95700
95950
|
|
95701
95951
|
/**
|
@@ -96671,7 +96921,7 @@ Phaser.TilemapLayer.ensureSharedCopyCanvas = function () {
|
|
96671
96921
|
|
96672
96922
|
if (!this.sharedCopyCanvas)
|
96673
96923
|
{
|
96674
|
-
this.sharedCopyCanvas =
|
96924
|
+
this.sharedCopyCanvas = PIXI.CanvasPool.create(this, 2, 2);
|
96675
96925
|
}
|
96676
96926
|
|
96677
96927
|
return this.sharedCopyCanvas;
|
@@ -97084,7 +97334,7 @@ Phaser.TilemapLayer.prototype.resolveTileset = function (tileIndex) {
|
|
97084
97334
|
|
97085
97335
|
var setIndex = this.map.tiles[tileIndex] && this.map.tiles[tileIndex][2];
|
97086
97336
|
|
97087
|
-
if (setIndex
|
97337
|
+
if (setIndex !== null)
|
97088
97338
|
{
|
97089
97339
|
var tileset = this.map.tilesets[setIndex];
|
97090
97340
|
|
@@ -97267,21 +97517,21 @@ Phaser.TilemapLayer.prototype.renderRegion = function (scrollX, scrollY, left, t
|
|
97267
97517
|
// xmax/ymax - remaining cells to render on column/row
|
97268
97518
|
var tx, ty, x, y, xmax, ymax;
|
97269
97519
|
|
97270
|
-
for (y = normStartY, ymax = bottom - top, ty = baseY;
|
97271
|
-
ymax >= 0;
|
97272
|
-
y++, ymax--, ty += th)
|
97520
|
+
for (y = normStartY, ymax = bottom - top, ty = baseY; ymax >= 0; y++, ymax--, ty += th)
|
97273
97521
|
{
|
97274
|
-
|
97275
|
-
|
97522
|
+
if (y >= height)
|
97523
|
+
{
|
97524
|
+
y -= height;
|
97525
|
+
}
|
97276
97526
|
|
97277
97527
|
var row = this.layer.data[y];
|
97278
97528
|
|
97279
|
-
for (x = normStartX, xmax = right - left, tx = baseX;
|
97280
|
-
xmax >= 0;
|
97281
|
-
x++, xmax--, tx += tw)
|
97529
|
+
for (x = normStartX, xmax = right - left, tx = baseX; xmax >= 0; x++, xmax--, tx += tw)
|
97282
97530
|
{
|
97283
|
-
|
97284
|
-
|
97531
|
+
if (x >= width)
|
97532
|
+
{
|
97533
|
+
x -= width;
|
97534
|
+
}
|
97285
97535
|
|
97286
97536
|
var tile = row[x];
|
97287
97537
|
|
@@ -97577,21 +97827,21 @@ Phaser.TilemapLayer.prototype.renderDebug = function () {
|
|
97577
97827
|
|
97578
97828
|
context.strokeStyle = this.debugSettings.facingEdgeStroke;
|
97579
97829
|
|
97580
|
-
for (y = normStartY, ymax = bottom - top, ty = baseY;
|
97581
|
-
ymax >= 0;
|
97582
|
-
y++, ymax--, ty += th)
|
97830
|
+
for (y = normStartY, ymax = bottom - top, ty = baseY; ymax >= 0; y++, ymax--, ty += th)
|
97583
97831
|
{
|
97584
|
-
|
97585
|
-
|
97832
|
+
if (y >= height)
|
97833
|
+
{
|
97834
|
+
y -= height;
|
97835
|
+
}
|
97586
97836
|
|
97587
97837
|
var row = this.layer.data[y];
|
97588
97838
|
|
97589
|
-
for (x = normStartX, xmax = right - left, tx = baseX;
|
97590
|
-
xmax >= 0;
|
97591
|
-
x++, xmax--, tx += tw)
|
97839
|
+
for (x = normStartX, xmax = right - left, tx = baseX; xmax >= 0; x++, xmax--, tx += tw)
|
97592
97840
|
{
|
97593
|
-
|
97594
|
-
|
97841
|
+
if (x >= width)
|
97842
|
+
{
|
97843
|
+
x -= width;
|
97844
|
+
}
|
97595
97845
|
|
97596
97846
|
var tile = row[x];
|
97597
97847
|
if (!tile || tile.index < 0 || !tile.collides)
|
@@ -97633,6 +97883,8 @@ Phaser.TilemapLayer.prototype.renderDebug = function () {
|
|
97633
97883
|
context.lineTo(tx + this._mc.cw, ty + this._mc.ch);
|
97634
97884
|
}
|
97635
97885
|
|
97886
|
+
context.closePath();
|
97887
|
+
|
97636
97888
|
context.stroke();
|
97637
97889
|
}
|
97638
97890
|
|
@@ -97769,34 +98021,7 @@ Phaser.TilemapParser = {
|
|
97769
98021
|
INSERT_NULL: false,
|
97770
98022
|
|
97771
98023
|
/**
|
97772
|
-
|
97773
|
-
* indicates whether the tiled/object is flipped horizontally.
|
97774
|
-
*
|
97775
|
-
* @constant
|
97776
|
-
* @type {number}
|
97777
|
-
*/
|
97778
|
-
FLIPPED_HORIZONTALLY_FLAG: 0x80000000,
|
97779
|
-
|
97780
|
-
/**
|
97781
|
-
* A tiled flag that resides within the 31 bit of the object gid and
|
97782
|
-
* indicates whether the tiled/object is flipped vertically.
|
97783
|
-
*
|
97784
|
-
* @constant
|
97785
|
-
* @type {number}
|
97786
|
-
*/
|
97787
|
-
FLIPPED_VERTICALLY_FLAG: 0x40000000,
|
97788
|
-
|
97789
|
-
/**
|
97790
|
-
* A tiled flag that resides within the 30 bit of the object gid and
|
97791
|
-
* indicates whether the tiled/object is flipped diagonally.
|
97792
|
-
*
|
97793
|
-
* @constant
|
97794
|
-
* @type {number}
|
97795
|
-
*/
|
97796
|
-
FLIPPED_DIAGONALLY_FLAG: 0x20000000,
|
97797
|
-
|
97798
|
-
/**
|
97799
|
-
* Parse tilemap data from the cache and creates a Tilemap object.
|
98024
|
+
* Parse tilemap data from the cache and creates data for a Tilemap object.
|
97800
98025
|
*
|
97801
98026
|
* @method Phaser.TilemapParser.parse
|
97802
98027
|
* @param {Phaser.Game} game - Game reference to the currently running game.
|
@@ -97910,58 +98135,41 @@ Phaser.TilemapParser = {
|
|
97910
98135
|
*/
|
97911
98136
|
getEmptyData: function (tileWidth, tileHeight, width, height) {
|
97912
98137
|
|
97913
|
-
|
97914
|
-
|
97915
|
-
|
97916
|
-
|
97917
|
-
|
97918
|
-
|
97919
|
-
|
97920
|
-
|
97921
|
-
if (typeof tileHeight !== 'undefined' && tileHeight !== null) { map.tileHeight = tileHeight; }
|
97922
|
-
if (typeof width !== 'undefined' && width !== null) { map.width = width; }
|
97923
|
-
if (typeof height !== 'undefined' && height !== null) { map.height = height; }
|
97924
|
-
|
97925
|
-
map.orientation = 'orthogonal';
|
97926
|
-
map.version = '1';
|
97927
|
-
map.properties = {};
|
97928
|
-
map.widthInPixels = 0;
|
97929
|
-
map.heightInPixels = 0;
|
97930
|
-
|
97931
|
-
var layers = [];
|
97932
|
-
|
97933
|
-
var layer = {
|
97934
|
-
|
97935
|
-
name: 'layer',
|
97936
|
-
x: 0,
|
97937
|
-
y: 0,
|
97938
|
-
width: 0,
|
97939
|
-
height: 0,
|
98138
|
+
return {
|
98139
|
+
width: (width !== undefined && width !== null) ? width : 0,
|
98140
|
+
height: (height !== undefined && height !== null) ? height : 0,
|
98141
|
+
tileWidth: (tileWidth !== undefined && tileWidth !== null) ? tileWidth : 0,
|
98142
|
+
tileHeight: (tileHeight !== undefined && tileHeight !== null) ? tileHeight : 0,
|
98143
|
+
orientation: 'orthogonal',
|
98144
|
+
version: '1',
|
98145
|
+
properties: {},
|
97940
98146
|
widthInPixels: 0,
|
97941
98147
|
heightInPixels: 0,
|
97942
|
-
|
97943
|
-
|
97944
|
-
|
97945
|
-
|
97946
|
-
|
97947
|
-
|
97948
|
-
|
97949
|
-
|
98148
|
+
layers: [
|
98149
|
+
{
|
98150
|
+
name: 'layer',
|
98151
|
+
x: 0,
|
98152
|
+
y: 0,
|
98153
|
+
width: 0,
|
98154
|
+
height: 0,
|
98155
|
+
widthInPixels: 0,
|
98156
|
+
heightInPixels: 0,
|
98157
|
+
alpha: 1,
|
98158
|
+
visible: true,
|
98159
|
+
properties: {},
|
98160
|
+
indexes: [],
|
98161
|
+
callbacks: [],
|
98162
|
+
bodies: [],
|
98163
|
+
data: []
|
98164
|
+
}
|
98165
|
+
],
|
98166
|
+
images: [],
|
98167
|
+
objects: {},
|
98168
|
+
collision: {},
|
98169
|
+
tilesets: [],
|
98170
|
+
tiles: []
|
97950
98171
|
};
|
97951
98172
|
|
97952
|
-
// fill with nulls?
|
97953
|
-
|
97954
|
-
layers.push(layer);
|
97955
|
-
|
97956
|
-
map.layers = layers;
|
97957
|
-
map.images = [];
|
97958
|
-
map.objects = {};
|
97959
|
-
map.collision = {};
|
97960
|
-
map.tilesets = [];
|
97961
|
-
map.tiles = [];
|
97962
|
-
|
97963
|
-
return map;
|
97964
|
-
|
97965
98173
|
},
|
97966
98174
|
|
97967
98175
|
/**
|
@@ -97979,18 +98187,18 @@ Phaser.TilemapParser = {
|
|
97979
98187
|
}
|
97980
98188
|
|
97981
98189
|
// Map data will consist of: layers, objects, images, tilesets, sizes
|
97982
|
-
var map = {
|
97983
|
-
|
97984
|
-
|
97985
|
-
|
97986
|
-
|
97987
|
-
|
97988
|
-
|
97989
|
-
|
97990
|
-
|
97991
|
-
|
97992
|
-
|
97993
|
-
|
98190
|
+
var map = {
|
98191
|
+
width: json.width,
|
98192
|
+
height: json.height,
|
98193
|
+
tileWidth: json.tilewidth,
|
98194
|
+
tileHeight: json.tileheight,
|
98195
|
+
orientation: json.orientation,
|
98196
|
+
format: Phaser.Tilemap.TILED_JSON,
|
98197
|
+
version: json.version,
|
98198
|
+
properties: json.properties,
|
98199
|
+
widthInPixels: json.width * json.tilewidth,
|
98200
|
+
heightInPixels: json.height * json.tileheight
|
98201
|
+
};
|
97994
98202
|
|
97995
98203
|
// Tile Layers
|
97996
98204
|
var layers = [];
|
@@ -98006,27 +98214,35 @@ Phaser.TilemapParser = {
|
|
98006
98214
|
|
98007
98215
|
// Base64 decode data if necessary
|
98008
98216
|
// NOTE: uncompressed base64 only.
|
98009
|
-
|
98010
|
-
|
98217
|
+
|
98218
|
+
if (!curl.compression && curl.encoding && curl.encoding === 'base64')
|
98219
|
+
{
|
98220
|
+
var binaryString = window.atob(curl.data);
|
98011
98221
|
var len = binaryString.length;
|
98012
|
-
var bytes = new Array(
|
98222
|
+
var bytes = new Array(len);
|
98223
|
+
|
98013
98224
|
// Interpret binaryString as an array of bytes representing
|
98014
98225
|
// little-endian encoded uint32 values.
|
98015
|
-
for (var j = 0; j < len; j+=4)
|
98016
|
-
|
98017
|
-
|
98018
|
-
|
98019
|
-
|
98226
|
+
for (var j = 0; j < len; j+=4)
|
98227
|
+
{
|
98228
|
+
bytes[j / 4] = (
|
98229
|
+
binaryString.charCodeAt(j) |
|
98230
|
+
binaryString.charCodeAt(j + 1) << 8 |
|
98231
|
+
binaryString.charCodeAt(j + 2) << 16 |
|
98232
|
+
binaryString.charCodeAt(j + 3) << 24
|
98233
|
+
) >>> 0;
|
98020
98234
|
}
|
98235
|
+
|
98021
98236
|
curl.data = bytes;
|
98237
|
+
|
98022
98238
|
delete curl.encoding;
|
98023
98239
|
}
|
98024
|
-
else if(curl.compression)
|
98240
|
+
else if (curl.compression)
|
98241
|
+
{
|
98025
98242
|
console.warn('TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer \'' + curl.name + '\'');
|
98026
98243
|
continue;
|
98027
98244
|
}
|
98028
98245
|
|
98029
|
-
|
98030
98246
|
var layer = {
|
98031
98247
|
|
98032
98248
|
name: curl.name,
|
@@ -98066,12 +98282,11 @@ Phaser.TilemapParser = {
|
|
98066
98282
|
rotation = 0;
|
98067
98283
|
flipped = false;
|
98068
98284
|
gid = curl.data[t];
|
98285
|
+
flippedVal = 0;
|
98069
98286
|
|
98070
98287
|
// If true the current tile is flipped or rotated (Tiled TMX format)
|
98071
98288
|
if (gid > 0x20000000)
|
98072
98289
|
{
|
98073
|
-
flippedVal = 0;
|
98074
|
-
|
98075
98290
|
// FlippedX
|
98076
98291
|
if (gid > 0x80000000)
|
98077
98292
|
{
|
@@ -98086,7 +98301,7 @@ Phaser.TilemapParser = {
|
|
98086
98301
|
flippedVal += 2;
|
98087
98302
|
}
|
98088
98303
|
|
98089
|
-
// FlippedAD
|
98304
|
+
// FlippedAD (anti-diagonal = top-right is swapped with bottom-left corners)
|
98090
98305
|
if (gid > 0x20000000)
|
98091
98306
|
{
|
98092
98307
|
gid -= 0x20000000;
|
@@ -98096,28 +98311,34 @@ Phaser.TilemapParser = {
|
|
98096
98311
|
switch (flippedVal)
|
98097
98312
|
{
|
98098
98313
|
case 5:
|
98099
|
-
rotation = Math.PI/2;
|
98314
|
+
rotation = Math.PI / 2;
|
98100
98315
|
break;
|
98316
|
+
|
98101
98317
|
case 6:
|
98102
98318
|
rotation = Math.PI;
|
98103
98319
|
break;
|
98320
|
+
|
98104
98321
|
case 3:
|
98105
|
-
rotation = 3*Math.PI/2;
|
98322
|
+
rotation = 3 * Math.PI / 2;
|
98106
98323
|
break;
|
98324
|
+
|
98107
98325
|
case 4:
|
98108
98326
|
rotation = 0;
|
98109
98327
|
flipped = true;
|
98110
98328
|
break;
|
98329
|
+
|
98111
98330
|
case 7:
|
98112
|
-
rotation = Math.PI/2;
|
98331
|
+
rotation = Math.PI / 2;
|
98113
98332
|
flipped = true;
|
98114
98333
|
break;
|
98334
|
+
|
98115
98335
|
case 2:
|
98116
98336
|
rotation = Math.PI;
|
98117
98337
|
flipped = true;
|
98118
98338
|
break;
|
98339
|
+
|
98119
98340
|
case 1:
|
98120
|
-
rotation = 3*Math.PI/2;
|
98341
|
+
rotation = 3 * Math.PI / 2;
|
98121
98342
|
flipped = true;
|
98122
98343
|
break;
|
98123
98344
|
}
|
@@ -98126,9 +98347,18 @@ Phaser.TilemapParser = {
|
|
98126
98347
|
// index, x, y, width, height
|
98127
98348
|
if (gid > 0)
|
98128
98349
|
{
|
98129
|
-
|
98130
|
-
|
98131
|
-
|
98350
|
+
var tile = new Phaser.Tile(layer, gid, x, output.length, json.tilewidth, json.tileheight);
|
98351
|
+
|
98352
|
+
tile.rotation = rotation;
|
98353
|
+
tile.flipped = flipped;
|
98354
|
+
|
98355
|
+
if (flippedVal !== 0)
|
98356
|
+
{
|
98357
|
+
// The WebGL renderer uses this to flip UV coordinates before drawing
|
98358
|
+
tile.flippedVal = flippedVal;
|
98359
|
+
}
|
98360
|
+
|
98361
|
+
row.push(tile);
|
98132
98362
|
}
|
98133
98363
|
else
|
98134
98364
|
{
|
@@ -98155,7 +98385,6 @@ Phaser.TilemapParser = {
|
|
98155
98385
|
layer.data = output;
|
98156
98386
|
|
98157
98387
|
layers.push(layer);
|
98158
|
-
|
98159
98388
|
}
|
98160
98389
|
|
98161
98390
|
map.layers = layers;
|
@@ -98198,6 +98427,7 @@ Phaser.TilemapParser = {
|
|
98198
98427
|
// Tilesets & Image Collections
|
98199
98428
|
var tilesets = [];
|
98200
98429
|
var imagecollections = [];
|
98430
|
+
var lastSet = null;
|
98201
98431
|
|
98202
98432
|
for (var i = 0; i < json.tilesets.length; i++)
|
98203
98433
|
{
|
@@ -98216,6 +98446,7 @@ Phaser.TilemapParser = {
|
|
98216
98446
|
// For a normal sliced tileset the row/count/size information is computed when updated.
|
98217
98447
|
// This is done (again) after the image is set.
|
98218
98448
|
newSet.updateTileData(set.imagewidth, set.imageheight);
|
98449
|
+
|
98219
98450
|
tilesets.push(newSet);
|
98220
98451
|
}
|
98221
98452
|
else
|
@@ -98232,6 +98463,13 @@ Phaser.TilemapParser = {
|
|
98232
98463
|
imagecollections.push(newCollection);
|
98233
98464
|
}
|
98234
98465
|
|
98466
|
+
// We've got a new Tileset, so set the lastgid into the previous one
|
98467
|
+
if (lastSet)
|
98468
|
+
{
|
98469
|
+
lastSet.lastgid = set.firstgid - 1;
|
98470
|
+
}
|
98471
|
+
|
98472
|
+
lastSet = set;
|
98235
98473
|
}
|
98236
98474
|
|
98237
98475
|
map.tilesets = tilesets;
|
@@ -98275,8 +98513,6 @@ Phaser.TilemapParser = {
|
|
98275
98513
|
// Object Tiles
|
98276
98514
|
if (curo.objects[v].gid)
|
98277
98515
|
{
|
98278
|
-
var self = this;
|
98279
|
-
|
98280
98516
|
var object = {
|
98281
98517
|
|
98282
98518
|
gid: curo.objects[v].gid,
|
@@ -98284,13 +98520,9 @@ Phaser.TilemapParser = {
|
|
98284
98520
|
type: curo.objects[v].hasOwnProperty("type") ? curo.objects[v].type : "",
|
98285
98521
|
x: curo.objects[v].x,
|
98286
98522
|
y: curo.objects[v].y,
|
98287
|
-
width: curo.objects[v].width,
|
98288
|
-
height: curo.objects[v].height,
|
98289
98523
|
visible: curo.objects[v].visible,
|
98290
|
-
properties: curo.objects[v].properties
|
98291
|
-
|
98292
|
-
verticallyFlipped: curo.objects[v].gid & self.FLIPPED_VERTICALLY_FLAG,
|
98293
|
-
diagonallyFlipped: curo.objects[v].gid & self.FLIPPED_DIAGONALLY_FLAG
|
98524
|
+
properties: curo.objects[v].properties
|
98525
|
+
|
98294
98526
|
};
|
98295
98527
|
|
98296
98528
|
if (curo.objects[v].rotation)
|
@@ -98334,15 +98566,14 @@ Phaser.TilemapParser = {
|
|
98334
98566
|
// polygon
|
98335
98567
|
else if (curo.objects[v].polygon)
|
98336
98568
|
{
|
98337
|
-
var object = slice(curo.objects[v],
|
98338
|
-
["name", "type", "x", "y", "visible", "rotation", "properties" ]);
|
98569
|
+
var object = slice(curo.objects[v], ['name', 'type', 'x', 'y', 'visible', 'rotation', 'properties']);
|
98339
98570
|
|
98340
98571
|
// Parse the polygon into an array
|
98341
98572
|
object.polygon = [];
|
98342
98573
|
|
98343
98574
|
for (var p = 0; p < curo.objects[v].polygon.length; p++)
|
98344
98575
|
{
|
98345
|
-
object.polygon.push([
|
98576
|
+
object.polygon.push([curo.objects[v].polygon[p].x, curo.objects[v].polygon[p].y]);
|
98346
98577
|
}
|
98347
98578
|
|
98348
98579
|
objects[curo.name].push(object);
|
@@ -98351,15 +98582,13 @@ Phaser.TilemapParser = {
|
|
98351
98582
|
// ellipse
|
98352
98583
|
else if (curo.objects[v].ellipse)
|
98353
98584
|
{
|
98354
|
-
var object = slice(curo.objects[v],
|
98355
|
-
["name", "type", "ellipse", "x", "y", "width", "height", "visible", "rotation", "properties" ]);
|
98585
|
+
var object = slice(curo.objects[v], ['name', 'type', 'ellipse', 'x', 'y', 'width', 'height', 'visible', 'rotation', 'properties']);
|
98356
98586
|
objects[curo.name].push(object);
|
98357
98587
|
}
|
98358
98588
|
// otherwise it's a rectangle
|
98359
98589
|
else
|
98360
98590
|
{
|
98361
|
-
var object = slice(curo.objects[v],
|
98362
|
-
["name", "type", "x", "y", "width", "height", "visible", "rotation", "properties" ]);
|
98591
|
+
var object = slice(curo.objects[v], ['name', 'type', 'x', 'y', 'width', 'height', 'visible', 'rotation', 'properties']);
|
98363
98592
|
object.rectangle = true;
|
98364
98593
|
objects[curo.name].push(object);
|
98365
98594
|
}
|
@@ -98423,11 +98652,13 @@ Phaser.TilemapParser = {
|
|
98423
98652
|
var sid;
|
98424
98653
|
var set;
|
98425
98654
|
|
98426
|
-
// go through each of the map layers
|
98655
|
+
// go through each of the map data layers
|
98427
98656
|
for (var i = 0; i < map.layers.length; i++)
|
98428
98657
|
{
|
98429
98658
|
layer = map.layers[i];
|
98430
98659
|
|
98660
|
+
set = null;
|
98661
|
+
|
98431
98662
|
// rows of tiles
|
98432
98663
|
for (var j = 0; j < layer.data.length; j++)
|
98433
98664
|
{
|
@@ -98448,12 +98679,14 @@ Phaser.TilemapParser = {
|
|
98448
98679
|
sid = map.tiles[tile.index][2];
|
98449
98680
|
set = map.tilesets[sid];
|
98450
98681
|
|
98682
|
+
|
98451
98683
|
// if that tile type has any properties, add them to the tile object
|
98452
98684
|
|
98453
98685
|
if (set.tileProperties && set.tileProperties[tile.index - set.firstgid])
|
98454
98686
|
{
|
98455
98687
|
tile.properties = Phaser.Utils.mixin(set.tileProperties[tile.index - set.firstgid], tile.properties);
|
98456
98688
|
}
|
98689
|
+
|
98457
98690
|
}
|
98458
98691
|
}
|
98459
98692
|
}
|
@@ -100355,6 +100588,14 @@ Phaser.Weapon = function (game, parent) {
|
|
100355
100588
|
*/
|
100356
100589
|
this._nextFire = 0;
|
100357
100590
|
|
100591
|
+
/**
|
100592
|
+
* Internal firing rotation tracking point.
|
100593
|
+
*
|
100594
|
+
* @type {Phaser.Point}
|
100595
|
+
* @private
|
100596
|
+
*/
|
100597
|
+
this._rotatedPoint = new Phaser.Point();
|
100598
|
+
|
100358
100599
|
};
|
100359
100600
|
|
100360
100601
|
Phaser.Weapon.prototype = Object.create(Phaser.Plugin.prototype);
|
@@ -100596,7 +100837,7 @@ Phaser.Weapon.prototype.update = function () {
|
|
100596
100837
|
}
|
100597
100838
|
}
|
100598
100839
|
|
100599
|
-
if (this.autofire
|
100840
|
+
if (this.autofire)
|
100600
100841
|
{
|
100601
100842
|
this.fire();
|
100602
100843
|
}
|
@@ -100687,7 +100928,7 @@ Phaser.Weapon.prototype.trackPointer = function (pointer, offsetX, offsetY) {
|
|
100687
100928
|
* @param {Phaser.Sprite|Phaser.Point|Object} [from] - Optionally fires the bullet **from** the `x` and `y` properties of this object. If set this overrides `Weapon.trackedSprite` or `trackedPointer`. Pass `null` to ignore it.
|
100688
100929
|
* @param {number} [x] - The x coordinate, in world space, to fire the bullet **towards**. If left as `undefined` the bullet direction is based on its angle.
|
100689
100930
|
* @param {number} [y] - The y coordinate, in world space, to fire the bullet **towards**. If left as `undefined` the bullet direction is based on its angle.
|
100690
|
-
* @return {
|
100931
|
+
* @return {Phaser.Bullet} The fired bullet if successful, null otherwise.
|
100691
100932
|
*/
|
100692
100933
|
Phaser.Weapon.prototype.fire = function (from, x, y) {
|
100693
100934
|
|
@@ -100718,14 +100959,32 @@ Phaser.Weapon.prototype.fire = function (from, x, y) {
|
|
100718
100959
|
}
|
100719
100960
|
else if (this.trackedSprite)
|
100720
100961
|
{
|
100721
|
-
if (this.
|
100962
|
+
if (this.trackRotation)
|
100722
100963
|
{
|
100723
|
-
this.
|
100964
|
+
this._rotatedPoint.set(this.trackedSprite.world.x + this.trackOffset.x, this.trackedSprite.world.y + this.trackOffset.y);
|
100965
|
+
this._rotatedPoint.rotate(this.trackedSprite.world.x, this.trackedSprite.world.y, this.trackedSprite.rotation);
|
100966
|
+
|
100967
|
+
if (this.fireFrom.width > 1)
|
100968
|
+
{
|
100969
|
+
this.fireFrom.centerOn(this._rotatedPoint.x, this._rotatedPoint.y);
|
100970
|
+
}
|
100971
|
+
else
|
100972
|
+
{
|
100973
|
+
this.fireFrom.x = this._rotatedPoint.x;
|
100974
|
+
this.fireFrom.y = this._rotatedPoint.y;
|
100975
|
+
}
|
100724
100976
|
}
|
100725
100977
|
else
|
100726
100978
|
{
|
100727
|
-
this.fireFrom.
|
100728
|
-
|
100979
|
+
if (this.fireFrom.width > 1)
|
100980
|
+
{
|
100981
|
+
this.fireFrom.centerOn(this.trackedSprite.world.x + this.trackOffset.x, this.trackedSprite.world.y + this.trackOffset.y);
|
100982
|
+
}
|
100983
|
+
else
|
100984
|
+
{
|
100985
|
+
this.fireFrom.x = this.trackedSprite.world.x + this.trackOffset.x;
|
100986
|
+
this.fireFrom.y = this.trackedSprite.world.y + this.trackOffset.y;
|
100987
|
+
}
|
100729
100988
|
}
|
100730
100989
|
|
100731
100990
|
if (this.bulletInheritSpriteSpeed)
|
@@ -100857,7 +101116,23 @@ Phaser.Weapon.prototype.fire = function (from, x, y) {
|
|
100857
101116
|
bullet.body.velocity.set(moveX, moveY);
|
100858
101117
|
bullet.body.gravity.set(this.bulletGravity.x, this.bulletGravity.y);
|
100859
101118
|
|
100860
|
-
|
101119
|
+
if (this.bulletSpeedVariance !== 0)
|
101120
|
+
{
|
101121
|
+
var rate = this.fireRate;
|
101122
|
+
|
101123
|
+
rate += Phaser.Math.between(-this.fireRateVariance, this.fireRateVariance);
|
101124
|
+
|
101125
|
+
if (rate < 0)
|
101126
|
+
{
|
101127
|
+
rate = 0;
|
101128
|
+
}
|
101129
|
+
|
101130
|
+
this._nextFire = this.game.time.now + rate;
|
101131
|
+
}
|
101132
|
+
else
|
101133
|
+
{
|
101134
|
+
this._nextFire = this.game.time.now + this.fireRate;
|
101135
|
+
}
|
100861
101136
|
|
100862
101137
|
this.shots++;
|
100863
101138
|
|
@@ -100867,9 +101142,8 @@ Phaser.Weapon.prototype.fire = function (from, x, y) {
|
|
100867
101142
|
{
|
100868
101143
|
this.onFireLimit.dispatch(this, this.fireLimit);
|
100869
101144
|
}
|
100870
|
-
|
100871
101145
|
}
|
100872
|
-
|
101146
|
+
return bullet;
|
100873
101147
|
};
|
100874
101148
|
|
100875
101149
|
/**
|
@@ -100878,7 +101152,7 @@ Phaser.Weapon.prototype.fire = function (from, x, y) {
|
|
100878
101152
|
*
|
100879
101153
|
* @method Phaser.Weapon#fireAtPointer
|
100880
101154
|
* @param {Phaser.Pointer} [pointer] - The Pointer to fire the bullet towards.
|
100881
|
-
* @return {
|
101155
|
+
* @return {Phaser.Bullet} The fired bullet if successful, null otherwise.
|
100882
101156
|
*/
|
100883
101157
|
Phaser.Weapon.prototype.fireAtPointer = function (pointer) {
|
100884
101158
|
|
@@ -100894,7 +101168,7 @@ Phaser.Weapon.prototype.fireAtPointer = function (pointer) {
|
|
100894
101168
|
*
|
100895
101169
|
* @method Phaser.Weapon#fireAtSprite
|
100896
101170
|
* @param {Phaser.Sprite} [sprite] - The Sprite to fire the bullet towards.
|
100897
|
-
* @return {
|
101171
|
+
* @return {Phaser.Bullet} The fired bullet if successful, null otherwise.
|
100898
101172
|
*/
|
100899
101173
|
Phaser.Weapon.prototype.fireAtSprite = function (sprite) {
|
100900
101174
|
|
@@ -100909,7 +101183,7 @@ Phaser.Weapon.prototype.fireAtSprite = function (sprite) {
|
|
100909
101183
|
* @method Phaser.Weapon#fireAtXY
|
100910
101184
|
* @param {number} [x] - The x coordinate, in world space, to fire the bullet towards.
|
100911
101185
|
* @param {number} [y] - The y coordinate, in world space, to fire the bullet towards.
|
100912
|
-
* @return {
|
101186
|
+
* @return {Phaser.Bullet} The fired bullet if successful, null otherwise.
|
100913
101187
|
*/
|
100914
101188
|
Phaser.Weapon.prototype.fireAtXY = function (x, y) {
|
100915
101189
|
|