{ "code": "import { Building, buildtype } from \"./Building\";\r\nimport { EventManager, EventType } from \"./EventManager\";\r\nimport { ColliderLay } from \"./DataMaker\";\r\nimport { RigObj } from \"../Util/RigObj\";\r\nvar Vector3 = Laya.Vector3;\r\nimport PoolManager from \"../Util/PoolManager\";\r\nimport { AssetManager } from \"./AssetManager\";\r\nimport { SceneManager } from \"./SceneManager\";\r\nimport { LevelManager } from \"./LevelManager\";\r\nimport { Player } from \"./Player\";\r\nimport { AudioControl, VoiceType } from \"./AudioControl\";\r\nimport { TtSdk } from \"../Util/TtSdk\";\r\nexport class Barrier extends Building {\r\n constructor() {\r\n super(...arguments);\r\n this.cut = false;\r\n }\r\n OnInit() {\r\n if (this.mdata.buildid != 7) {\r\n this.mcollider = this.cursprite.getChildAt(2).getComponent(Laya.PhysicsCollider);\r\n this.mcollider.collisionGroup = ColliderLay.obstacle;\r\n this.mcollider.enabled = true;\r\n this.downsprite = this.cursprite.getChildAt(0);\r\n this.upsprite = this.cursprite.getChildAt(1);\r\n }\r\n else {\r\n this.mcollider = this.cursprite.getChildAt(1).getComponent(Laya.PhysicsCollider);\r\n this.mcollider.collisionGroup = ColliderLay.obstacle;\r\n this.mcollider1 = this.cursprite.getChildAt(2).getComponent(Laya.PhysicsCollider);\r\n this.mcollider1.collisionGroup = ColliderLay.obstacle;\r\n this.mcollider1.enabled = true;\r\n this.downsprite = this.cursprite.getChildAt(1);\r\n this.downsprite1 = this.cursprite.getChildAt(2);\r\n this.upsprite = this.cursprite.getChildAt(0);\r\n this.mcollider.enabled = true;\r\n }\r\n if (this.mdata.buildid == 6) {\r\n this.mcollider.collisionGroup = ColliderLay.grass;\r\n }\r\n for (var i = 0; i < this.cursprite.numChildren; i++) {\r\n var curspr = this.cursprite.getChildAt(i);\r\n curspr.active = true;\r\n }\r\n this.OnReg();\r\n }\r\n OnReg() {\r\n EventManager.On(EventType.Cut, this, this.OnCut);\r\n }\r\n OnClear() {\r\n EventManager.Off(EventType.Cut, this, this.OnCut);\r\n if (this.uprig)\r\n this.uprig.Clear();\r\n if (this.downrig)\r\n this.downrig.Clear();\r\n if (this.copysprite) {\r\n for (var i = 0; i < this.copysprite.numChildren; i++) {\r\n var curspr = this.copysprite.getChildAt(i);\r\n curspr.active = true;\r\n }\r\n PoolManager.RecoverSprite3D(this.copysprite, true);\r\n }\r\n if (this.cuteffect)\r\n PoolManager.RecoverSprite3D(this.cuteffect);\r\n }\r\n OnCut(_collider) {\r\n if (this.cut)\r\n return;\r\n if (this.mcollider == _collider || (this.mcollider1 && this.mcollider1 == _collider)) {\r\n this.BeCut(_collider);\r\n }\r\n }\r\n BeCut(_collider) {\r\n if (this.cut)\r\n return;\r\n this.cut = true;\r\n this.mcollider.enabled = false;\r\n TtSdk.Shake();\r\n if (this.mdata.buildid == 4) {\r\n var boomrange = 5;\r\n for (var i = 0; i < LevelManager.Instance.curlevel.gameroles.length; i++) {\r\n var currole = LevelManager.Instance.curlevel.gameroles[i];\r\n if (currole == Player.mainpalyer)\r\n continue;\r\n var dis = Vector3.distance(this.cursprite.transform.position, currole.cursprite.transform.position);\r\n if (dis < boomrange) {\r\n currole.BeBoom();\r\n }\r\n }\r\n for (var i = 0; i < LevelManager.Instance.curlevel.builds.length; i++) {\r\n var curbuild = LevelManager.Instance.curlevel.builds[i];\r\n if (curbuild == this)\r\n continue;\r\n var dis = Vector3.distance(this.cursprite.transform.position, curbuild.cursprite.transform.position);\r\n if (dis < boomrange) {\r\n if (curbuild.mdata.type == 0) {\r\n var curbarr = curbuild;\r\n if (!curbarr.cut)\r\n curbarr.BeCut(null);\r\n }\r\n else if (curbuild.mdata.type == 1) {\r\n var curstand = curbuild;\r\n curstand.BeCut();\r\n }\r\n }\r\n }\r\n }\r\n var cuteffid = 4;\r\n if (this.mdata.buildid == 4) {\r\n cuteffid = 2;\r\n AudioControl.PlayVoice(VoiceType.boom);\r\n }\r\n else if (this.mdata.buildid == 2) {\r\n cuteffid = 5;\r\n AudioControl.PlayVoice(VoiceType.cut);\r\n }\r\n else if (this.mdata.buildid == 6) {\r\n AudioControl.PlayVoice(VoiceType.cutgrass);\r\n }\r\n else {\r\n AudioControl.PlayVoice(VoiceType.cut);\r\n }\r\n var cutasset = AssetManager.effect.getValue(cuteffid);\r\n this.cuteffect = PoolManager.GetSprite3D(cutasset);\r\n SceneManager.mainscene.addChild(this.cuteffect);\r\n if (this.mdata.buildid != 2) {\r\n this.cuteffect.transform.position = this.upsprite.transform.position.clone();\r\n }\r\n else {\r\n this.cuteffect.transform.position = this.cursprite.transform.position.clone();\r\n }\r\n this.copysprite = PoolManager.GetSprite3D(AssetManager.BuildAsset(buildtype.barrier, this.mdata.buildid));\r\n SceneManager.mainscene.addChild(this.copysprite);\r\n this.copysprite.transform.position = this.cursprite.transform.position.clone();\r\n this.copysprite.transform.rotationEuler = this.cursprite.transform.rotationEuler.clone();\r\n if (this.mdata.buildid == 7) {\r\n var up = this.copysprite.getChildAt(0);\r\n up.active = false;\r\n var ccid = _collider == this.mcollider1 ? 1 : 2;\r\n var gas = this.copysprite.getChildAt(ccid);\r\n gas.active = false;\r\n }\r\n else {\r\n var dieupsprite = this.copysprite.getChildAt(1);\r\n dieupsprite.active = false;\r\n var diedownspr = this.copysprite.getChildAt(0);\r\n diedownspr.active = true;\r\n var downrig = new RigObj(this.copysprite, null, 1, 1.2);\r\n downrig.minhight = 0;\r\n var downforce = this.mdata.buildid == 6 ? 0 : 0.5;\r\n downrig.AddForce(new Laya.Vector3(0, 1, downforce), 0.3);\r\n var sffcollider = this.copysprite.getChildAt(2).getComponent(Laya.PhysicsCollider);\r\n sffcollider.enabled = false;\r\n }\r\n if (_collider != null && _collider == this.mcollider1) {\r\n this.downsprite1.active = false;\r\n }\r\n else {\r\n this.downsprite.active = false;\r\n }\r\n this.uprig = new RigObj(this.cursprite, () => {\r\n if (downrig)\r\n downrig.Clear();\r\n this.copysprite.active = false;\r\n this.cursprite.active = false;\r\n }, 1.5, 1.5);\r\n this.uprig.minhight = 1;\r\n this.uprig.AddForce(new Laya.Vector3(0, 1, 0.4), 1);\r\n }\r\n}\r\n", "references": [ "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Main/Building.ts", "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Main/EventManager.ts", "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Main/DataMaker.ts", "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Util/RigObj.ts", "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Util/PoolManager.ts", "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Main/AssetManager.ts", "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Main/SceneManager.ts", "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Main/LevelManager.ts", "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Main/Player.ts", "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Main/StandBuild.ts", "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Main/AudioControl.ts", "D:/Work/samurai2-laya/laya/samuraiflash-tt/src/Util/TtSdk.ts" ] }