|
@@ -241,6 +241,9 @@ var laya = (function (exports) {
|
|
|
get Distance() {
|
|
|
return this.netzheshe["Distance"];
|
|
|
}
|
|
|
+ get OverRun() {
|
|
|
+ return this.netzheshe["OverRun"];
|
|
|
+ }
|
|
|
get touchsize() {
|
|
|
return Number(this.netzheshe["touchsize"]);
|
|
|
}
|
|
@@ -1326,6 +1329,64 @@ var laya = (function (exports) {
|
|
|
}
|
|
|
AudioManager.open = true;
|
|
|
|
|
|
+ class GamePool {
|
|
|
+ constructor() {
|
|
|
+ this.maxAcount = 30;
|
|
|
+ this.modelpool = {};
|
|
|
+ GamePool.ins = this;
|
|
|
+ }
|
|
|
+ static get Instance() {
|
|
|
+ if (GamePool.ins) {
|
|
|
+ return GamePool.ins;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return new GamePool();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ GetModel(title) {
|
|
|
+ let poolname = title;
|
|
|
+ if (this.modelpool[poolname] != null && this.modelpool[poolname] != undefined) {
|
|
|
+ if (this.modelpool[poolname].length > 0) {
|
|
|
+ let model1 = this.modelpool[poolname].shift();
|
|
|
+ if (!model1.active) {
|
|
|
+ model1.active = true;
|
|
|
+ }
|
|
|
+ return model1;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ let model = new Laya.Image();
|
|
|
+ model.name = title;
|
|
|
+ return model;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ let model = new Laya.Image();
|
|
|
+ model.name = title;
|
|
|
+ return model;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ RecoverModel(_image, title = "", modelstate = false) {
|
|
|
+ if (_image.destroyed) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!modelstate && _image.active == false) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let poolname = title;
|
|
|
+ if (this.modelpool[poolname] != null && this.modelpool[poolname] != undefined) {
|
|
|
+ let modelnum = this.modelpool[poolname];
|
|
|
+ this.modelpool[poolname].push(_image);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ let modelnum = [];
|
|
|
+ modelnum.push(_image);
|
|
|
+ this.modelpool[poolname] = modelnum;
|
|
|
+ }
|
|
|
+ _image.removeSelf();
|
|
|
+ _image.active = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
class DropRule {
|
|
|
constructor() {
|
|
|
this.EffectName = new Array("blue", "yellow", "purple", "green");
|
|
@@ -1488,7 +1549,7 @@ var laya = (function (exports) {
|
|
|
return ballsize;
|
|
|
}
|
|
|
CreatBall(_index, size, pos) {
|
|
|
- let ball = new Laya.Image();
|
|
|
+ let ball = GamePool.Instance.GetModel("img" + _index.toString());
|
|
|
ball.skin = "Game/res/Ball/blast" + _index + ".png";
|
|
|
ball.anchorX = 0.5;
|
|
|
ball.anchorY = 0.5;
|
|
@@ -1544,6 +1605,14 @@ var laya = (function (exports) {
|
|
|
light.centerX = 0;
|
|
|
light.centerY = 0;
|
|
|
}
|
|
|
+ else {
|
|
|
+ _light.anchorX = 0.5;
|
|
|
+ _light.anchorY = 0.5;
|
|
|
+ _light.width = this.LightSize(size);
|
|
|
+ _light.height = this.LightSize(size);
|
|
|
+ _light.centerX = 0;
|
|
|
+ _light.centerY = 0;
|
|
|
+ }
|
|
|
let _script = ball.getComponent(Ball);
|
|
|
if (!_script) {
|
|
|
let script = ball.addComponent(Ball);
|
|
@@ -1556,21 +1625,12 @@ var laya = (function (exports) {
|
|
|
AudioManager.playMusic(MusicType.down);
|
|
|
}
|
|
|
CreatBall2(_index, size, pos) {
|
|
|
- let ball = new Laya.Image();
|
|
|
+ let ball = GamePool.Instance.GetModel("img" + _index.toString());
|
|
|
ball.skin = "Game/res/Ball/blast" + _index + ".png";
|
|
|
ball.anchorX = 0.5;
|
|
|
ball.anchorY = 0.5;
|
|
|
ball.height = size;
|
|
|
ball.width = size;
|
|
|
- let _rig = ball.getComponent(Laya.RigidBody);
|
|
|
- if (!_rig) {
|
|
|
- let rig = ball.addComponent(Laya.RigidBody);
|
|
|
- rig.allowRotation = true;
|
|
|
- rig.gravityScale = 3;
|
|
|
- }
|
|
|
- else {
|
|
|
- _rig.enabled = true;
|
|
|
- }
|
|
|
let _collider = ball.getComponent(Laya.CircleCollider);
|
|
|
if (!_collider) {
|
|
|
let collider = ball.addComponent(Laya.CircleCollider);
|
|
@@ -1581,8 +1641,17 @@ var laya = (function (exports) {
|
|
|
collider.radius = size / 2;
|
|
|
}
|
|
|
else {
|
|
|
- _collider.enabled = true;
|
|
|
- _collider.isSensor = false;
|
|
|
+ ball.getComponent(Laya.CircleCollider).enabled = true;
|
|
|
+ ball.getComponent(Laya.CircleCollider).isSensor = true;
|
|
|
+ }
|
|
|
+ let _rig = ball.getComponent(Laya.RigidBody);
|
|
|
+ if (!_rig) {
|
|
|
+ let rig = ball.addComponent(Laya.RigidBody);
|
|
|
+ rig.allowRotation = true;
|
|
|
+ rig.gravityScale = 3;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ ball.getComponent(Laya.RigidBody).enabled = true;
|
|
|
}
|
|
|
let _num = ball.getChildByName("num");
|
|
|
let zi;
|
|
@@ -1612,11 +1681,19 @@ var laya = (function (exports) {
|
|
|
light.centerX = 0;
|
|
|
light.centerY = 0;
|
|
|
}
|
|
|
+ else {
|
|
|
+ _light.anchorX = 0.5;
|
|
|
+ _light.anchorY = 0.5;
|
|
|
+ _light.width = this.LightSize(size);
|
|
|
+ _light.height = this.LightSize(size);
|
|
|
+ _light.centerX = 0;
|
|
|
+ _light.centerY = 0;
|
|
|
+ }
|
|
|
let _script = ball.getComponent(Ball);
|
|
|
if (!_script) {
|
|
|
let script = ball.addComponent(Ball);
|
|
|
}
|
|
|
- this.SetPosition(ball, pos);
|
|
|
+ ball.pos(pos.x, pos.y);
|
|
|
Laya.timer.once(1, this, () => {
|
|
|
EventManager.StageTrigger(StageMode.Clone, [ball]);
|
|
|
});
|
|
@@ -1700,6 +1777,36 @@ var laya = (function (exports) {
|
|
|
case 180:
|
|
|
num = 223;
|
|
|
break;
|
|
|
+ case 185:
|
|
|
+ num = 231;
|
|
|
+ break;
|
|
|
+ case 190:
|
|
|
+ num = 236;
|
|
|
+ break;
|
|
|
+ case 195:
|
|
|
+ num = 241;
|
|
|
+ break;
|
|
|
+ case 200:
|
|
|
+ num = 247;
|
|
|
+ break;
|
|
|
+ case 205:
|
|
|
+ num = 253;
|
|
|
+ break;
|
|
|
+ case 210:
|
|
|
+ num = 260;
|
|
|
+ break;
|
|
|
+ case 215:
|
|
|
+ num = 268;
|
|
|
+ break;
|
|
|
+ case 220:
|
|
|
+ num = 275;
|
|
|
+ break;
|
|
|
+ case 225:
|
|
|
+ num = 280;
|
|
|
+ break;
|
|
|
+ case 230:
|
|
|
+ num = 287;
|
|
|
+ break;
|
|
|
}
|
|
|
return num;
|
|
|
}
|
|
@@ -1797,72 +1904,6 @@ var laya = (function (exports) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- class GamePool {
|
|
|
- constructor() {
|
|
|
- this.modelpool = {};
|
|
|
- this.maxAcount = 30;
|
|
|
- GamePool.ins = this;
|
|
|
- }
|
|
|
- static get Instance() {
|
|
|
- if (GamePool.ins) {
|
|
|
- return GamePool.ins;
|
|
|
- }
|
|
|
- else {
|
|
|
- return new GamePool();
|
|
|
- }
|
|
|
- }
|
|
|
- GetModel(title) {
|
|
|
- var poolname = title;
|
|
|
- if (this.modelpool[poolname] != null && this.modelpool[poolname] != undefined) {
|
|
|
- if (this.modelpool[poolname].length > 0) {
|
|
|
- var model1 = this.modelpool[poolname][0];
|
|
|
- this.modelpool[poolname].splice(0, 1);
|
|
|
- if (!model1.active) {
|
|
|
- model1.active = true;
|
|
|
- }
|
|
|
- model1.active = true;
|
|
|
- return model1;
|
|
|
- }
|
|
|
- else {
|
|
|
- var model = new Laya.Image();
|
|
|
- return model;
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- var model = new Laya.Image();
|
|
|
- model.active = true;
|
|
|
- return model;
|
|
|
- }
|
|
|
- }
|
|
|
- RecoverModel(_image, title = "", modelstate = false) {
|
|
|
- if (_image.destroyed) {
|
|
|
- return;
|
|
|
- }
|
|
|
- if (!modelstate && _image.active == false) {
|
|
|
- return;
|
|
|
- }
|
|
|
- var poolname = title;
|
|
|
- if (this.modelpool[poolname] != null && this.modelpool[poolname] != undefined) {
|
|
|
- var modelnum = this.modelpool[poolname];
|
|
|
- if (modelnum.length > this.maxAcount) {
|
|
|
- _image.destroy();
|
|
|
- return;
|
|
|
- }
|
|
|
- else {
|
|
|
- modelnum.push(_image);
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- modelnum = [];
|
|
|
- modelnum.push(_image);
|
|
|
- this.modelpool[poolname] = modelnum;
|
|
|
- }
|
|
|
- _image.pos(-1000, 0);
|
|
|
- _image.removeSelf();
|
|
|
- _image.active = false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
var Vector2 = Laya.Vector2;
|
|
|
class Ball extends Laya.Script {
|
|
|
constructor() {
|
|
@@ -1892,17 +1933,31 @@ var laya = (function (exports) {
|
|
|
this.score = Number(score.value);
|
|
|
}
|
|
|
onEnable() {
|
|
|
+ this.moved = false;
|
|
|
+ this.mark = false;
|
|
|
+ this.clear = false;
|
|
|
+ this.owner.on(Laya.Event.CLICK, this, this.ClickBall);
|
|
|
+ EventManager.EventOn(PropEffecf.DOUBLE, this, this.ClickDouble);
|
|
|
+ EventManager.EventOn(PropEffecf.NONE, this, this.ClickNone);
|
|
|
+ EventManager.EventOn(PropEffecf.HAMMER, this, this.ClickHammer);
|
|
|
+ let score = this.owner.getChildByName("num");
|
|
|
+ this.score = Number(score.value);
|
|
|
}
|
|
|
onUpdate() {
|
|
|
this.CheckLight();
|
|
|
if (this.mark) {
|
|
|
- let _rig = this.owner.getComponent(Laya.RigidBody);
|
|
|
- let _collider = this.owner.getComponent(Laya.CircleCollider);
|
|
|
- _collider.isSensor = true;
|
|
|
- _collider.enabled = false;
|
|
|
- _rig.enabled = false;
|
|
|
- this.Move(GameManager.Instance.TargetPosition);
|
|
|
- this.moved = true;
|
|
|
+ if (!this.moved) {
|
|
|
+ let owner = this.owner;
|
|
|
+ let _rig = this.owner.getComponent(Laya.RigidBody);
|
|
|
+ let _collider = this.owner.getComponent(Laya.CircleCollider);
|
|
|
+ _collider.isSensor = true;
|
|
|
+ _collider.enabled = false;
|
|
|
+ _rig.enabled = false;
|
|
|
+ _collider.destroy();
|
|
|
+ _rig.destroy();
|
|
|
+ this.Move(GameManager.Instance.TargetPosition);
|
|
|
+ this.moved = true;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
CheckLight() {
|
|
@@ -1916,7 +1971,7 @@ var laya = (function (exports) {
|
|
|
}
|
|
|
let distan = Laya.Vector3.distance(new Laya.Vector3(other.x, other.y, 0), new Laya.Vector3(_node.x, _node.y, 0));
|
|
|
let dis = _node.width / 2 + other.width / 2;
|
|
|
- if (Math.abs(distan - dis) <= 3 || Math.abs(distan - dis) <= 3) {
|
|
|
+ if (Math.abs(distan - dis) <= AccountManager.Instance.curplayerData.Distance || Math.abs(distan - dis) <= AccountManager.Instance.curplayerData.Distance || distan < dis) {
|
|
|
if (ball.score == this.score) {
|
|
|
light = true;
|
|
|
}
|
|
@@ -1949,8 +2004,9 @@ var laya = (function (exports) {
|
|
|
let _collider = this.owner.getComponent(Laya.CircleCollider);
|
|
|
_collider.enabled = false;
|
|
|
_rig.enabled = false;
|
|
|
- owner.removeSelf();
|
|
|
- owner.destroy();
|
|
|
+ _collider.destroy();
|
|
|
+ _rig.destroy();
|
|
|
+ this.owner.removeSelf();
|
|
|
let _index = DropRule.Instance.GetBallIndex(this.score).toString();
|
|
|
GamePool.Instance.RecoverModel(owner, "img" + _index);
|
|
|
let id = DropRule.Instance.GetBallIndex(num);
|
|
@@ -1978,8 +2034,11 @@ var laya = (function (exports) {
|
|
|
let _collider = this.owner.getComponent(Laya.CircleCollider);
|
|
|
_collider.enabled = false;
|
|
|
_rig.enabled = false;
|
|
|
+ _collider.destroy();
|
|
|
+ _rig.destroy();
|
|
|
owner.removeSelf();
|
|
|
- owner.destroy();
|
|
|
+ let _index = DropRule.Instance.GetBallIndex(this.score).toString();
|
|
|
+ GamePool.Instance.RecoverModel(owner, "img" + _index);
|
|
|
InGameView.Instance.SkillNumRefresh();
|
|
|
EventManager.EventTrigger(PropEffecf.NONE);
|
|
|
InGameView.Instance.EffectMode(false);
|
|
@@ -2019,6 +2078,8 @@ var laya = (function (exports) {
|
|
|
}, AccountManager.Instance.curplayerData.MergeSpeed * 1000, Laya.Ease.linearInOut, Laya.Handler.create(this, () => {
|
|
|
move.clear();
|
|
|
this.owner.removeSelf();
|
|
|
+ let _index = DropRule.Instance.GetBallIndex(this.score).toString();
|
|
|
+ GamePool.Instance.RecoverModel(owner, "img" + _index);
|
|
|
if (!DropRule.Instance.Cloned) {
|
|
|
let num = DropRule.Instance.GetBallIndex(GameManager.Instance.ScoreRecord2);
|
|
|
let size = DropRule.Instance.GetBallSize(GameManager.Instance.ScoreRecord2);
|
|
@@ -2028,7 +2089,7 @@ var laya = (function (exports) {
|
|
|
if (GameManager.Instance.EliminateNum >= AccountManager.Instance.curplayerData.ShakeNum) {
|
|
|
WXSDK.Shake();
|
|
|
}
|
|
|
- if (DropRule.Instance.STAGE > 1) {
|
|
|
+ if (DropRule.Instance.STAGE > 1 && !InGameView.Instance.OverRun) {
|
|
|
DropRule.Instance.FallDown();
|
|
|
}
|
|
|
GameManager.Instance.EliminateNum = 0;
|
|
@@ -2065,10 +2126,8 @@ var laya = (function (exports) {
|
|
|
continue;
|
|
|
}
|
|
|
let distan = Laya.Vector3.distance(new Laya.Vector3(other.x, other.y, 0), new Laya.Vector3(_node.x, _node.y, 0));
|
|
|
- let distanceX = Math.abs(_node.x - other.x);
|
|
|
- let distanceY = Math.abs(_node.y - other.y);
|
|
|
let dis = _node.width / 2 + other.width / 2;
|
|
|
- if (Math.abs(distan - dis) <= AccountManager.Instance.curplayerData.Distance || Math.abs(distan - dis) <= AccountManager.Instance.curplayerData.Distance) {
|
|
|
+ if (Math.abs(distan - dis) <= AccountManager.Instance.curplayerData.Distance || Math.abs(distan - dis) <= AccountManager.Instance.curplayerData.Distance || distan < dis) {
|
|
|
if (ball.score == _nodeball.score) {
|
|
|
ball.mark = true;
|
|
|
this.MouseClick(other);
|
|
@@ -2083,6 +2142,7 @@ var laya = (function (exports) {
|
|
|
super();
|
|
|
this.LoseView = false;
|
|
|
this.WinView = false;
|
|
|
+ this.OverRun = false;
|
|
|
InGameView.ins = this;
|
|
|
EventManager.StageOn(StageMode.Clone, this, this.AddPrefab);
|
|
|
EventManager.StageOn(StageMode.Win, this, this.Win);
|
|
@@ -2133,11 +2193,15 @@ var laya = (function (exports) {
|
|
|
CheckHeight() {
|
|
|
if (GameManager.Instance.CheckHeight) {
|
|
|
let down = false;
|
|
|
+ this.OverRun = false;
|
|
|
for (let i = 0; i < this.prefabbox.numChildren; i++) {
|
|
|
let child = this.prefabbox.getChildAt(i);
|
|
|
if (child.y < DropRule.Instance.DropHeight) {
|
|
|
down = true;
|
|
|
}
|
|
|
+ if (child.y < AccountManager.Instance.curplayerData.OverRun) {
|
|
|
+ this.OverRun = true;
|
|
|
+ }
|
|
|
}
|
|
|
if (!down) {
|
|
|
DropRule.Instance.FallDown();
|
|
@@ -2346,6 +2410,8 @@ var laya = (function (exports) {
|
|
|
_rig.enabled = false;
|
|
|
Laya.timer.clearAll(prefab);
|
|
|
prefab.removeSelf();
|
|
|
+ let _index = DropRule.Instance.GetBallIndex(ball.score);
|
|
|
+ GamePool.Instance.RecoverModel(prefab, _index.toString());
|
|
|
}
|
|
|
}
|
|
|
this.SkillNumRefresh();
|
|
@@ -2371,6 +2437,8 @@ var laya = (function (exports) {
|
|
|
_rig.enabled = false;
|
|
|
Laya.timer.clearAll(prefab);
|
|
|
prefab.removeSelf();
|
|
|
+ let _index = DropRule.Instance.GetBallIndex(ball.score);
|
|
|
+ GamePool.Instance.RecoverModel(prefab, _index.toString());
|
|
|
}
|
|
|
}
|
|
|
this.SkillNumRefresh();
|
|
@@ -2399,8 +2467,12 @@ var laya = (function (exports) {
|
|
|
let _collider = prefab.getComponent(Laya.CircleCollider);
|
|
|
_collider.enabled = false;
|
|
|
_rig.enabled = false;
|
|
|
+ _collider.destroy();
|
|
|
+ _rig.destroy();
|
|
|
Laya.timer.clearAll(prefab);
|
|
|
prefab.removeSelf();
|
|
|
+ let _index = DropRule.Instance.GetBallIndex(ball.score);
|
|
|
+ GamePool.Instance.RecoverModel(prefab, _index.toString());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -2431,7 +2503,8 @@ var laya = (function (exports) {
|
|
|
_rig.enabled = false;
|
|
|
Laya.timer.clearAll(prefab);
|
|
|
prefab.removeSelf();
|
|
|
- prefab.destroy();
|
|
|
+ let _index = DropRule.Instance.GetBallIndex(ball.score);
|
|
|
+ GamePool.Instance.RecoverModel(prefab, _index.toString());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -2461,6 +2534,8 @@ var laya = (function (exports) {
|
|
|
_rig.enabled = false;
|
|
|
Laya.timer.clearAll(prefab);
|
|
|
prefab.removeSelf();
|
|
|
+ let _index = DropRule.Instance.GetBallIndex(ball.score);
|
|
|
+ GamePool.Instance.RecoverModel(prefab, _index.toString());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -2487,6 +2562,8 @@ var laya = (function (exports) {
|
|
|
_rig.enabled = false;
|
|
|
Laya.timer.clearAll(prefab);
|
|
|
prefab.removeSelf();
|
|
|
+ let _index = DropRule.Instance.GetBallIndex(ball.score);
|
|
|
+ GamePool.Instance.RecoverModel(prefab, _index.toString());
|
|
|
}
|
|
|
}
|
|
|
}
|