phaser-rails 2.6.1.0 → 2.6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/phaser/rails/version.rb +1 -1
- data/vendor/assets/javascripts/phaser.js +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
|
|