{ "code": "import { LevelManager } from \"./LevelManager\";\r\nimport { ResourcesManager, baseroaddata, fixedroaddata, thingsdata } from \"./ResourcesManager\";\r\nimport PoolManager from \"./PoolManager\";\r\nvar Vector3 = Laya.Vector3;\r\nimport { ColliderLay } from \"./Runner\";\r\nvar Sprite3D = Laya.Sprite3D;\r\nimport { GameManager, GameState } from \"./GameManager\";\r\nimport { Player } from \"./Player\";\r\nimport CameraManager from \"./CameraManager\";\r\nimport { roadthings, RunnerRoad } from \"./LevelData\";\r\nimport { AImanager } from \"./AIManager\";\r\nvar Vector4 = Laya.Vector4;\r\nimport { PlayerAccount, AccountUser } from \"../Network/PlayerAccount\";\r\nexport class Road {\r\n constructor(_id, _data, _offestY, _offestZ, _parent, _textureid, _roadcolor) {\r\n this.things = [];\r\n this.builds = [];\r\n this.jumpHight = 0;\r\n this.id = _id;\r\n this.parent = _parent;\r\n var roadpos = new Vector3(3.6 - (_id * 1.8), _offestY - _data.high_change, _offestZ);\r\n this.Long = _data.long;\r\n this.CreatModel(_data.long * RunnerRoad.lengthrate, roadpos, _textureid, _roadcolor);\r\n this.CreateThings(_data.things, _data.position, _data.thing_hight, roadpos);\r\n }\r\n CreatModel(_size, _pos, _texture, __roadcolor) {\r\n this.startpos = _pos;\r\n if (_size != 0) {\r\n var sprite = PoolManager.Instance.CreatMeshSprite3D(ResourcesManager.Instance.bsroadassets[baseroaddata.ZhiRoad], \"\");\r\n this.sprite = sprite;\r\n this.sprite.transform.position = _pos;\r\n var meshchild = sprite.getChildAt(0).getChildAt(0).getChildAt(0);\r\n var materail = meshchild.meshRenderer.material;\r\n var tes = ResourcesManager.Instance.planetextures;\r\n materail.albedoTexture = tes[_texture];\r\n var colors = ScenceManager.randomcolor;\r\n materail.albedoColor = colors[__roadcolor - 1];\r\n FixedRoad.ForNodeSetColliderInThis(this.sprite, ColliderLay.Plane);\r\n this.sprite.transform.localScaleZ = _size;\r\n this.parent.addChild(this.sprite);\r\n }\r\n }\r\n CreateThings(_things, _poss, _hights, _pos) {\r\n for (var i = 0; i < _things.length; i++) {\r\n var curposZ = Number(_poss[i]);\r\n var curpos = new Vector3(_pos.x, _pos.y, _pos.z + curposZ - 1);\r\n var res = ResourcesManager.Instance.tsroadassets;\r\n if (id == thingsdata.PlateTrampoline) {\r\n var highchange = _hights.length == _poss.length ? _hights[i] : 0;\r\n curpos = new Vector3(curpos.x, curpos.y - highchange, curpos.z);\r\n if (this.jumpHight < _hights[i])\r\n this.jumpHight = _hights[i];\r\n }\r\n var id = _things[i].id;\r\n if (id == 0 || !res[id])\r\n continue;\r\n if ((this.id == thingsdata.Box || this.id == thingsdata.Box1 || this.id == thingsdata.Box2)) {\r\n var things = Sprite3D.instantiate(ResourcesManager.Instance.tsroadassets[this.id]);\r\n var box = things.getChildByName(\"Box\").getComponent(Laya.PhysicsCollider);\r\n box.collisionGroup = ColliderLay.things;\r\n }\r\n else {\r\n var things = PoolManager.Instance.CreatMeshSprite3D(res[id], \"\");\r\n FixedRoad.ForNodeSetColliderInThis(things, ColliderLay.things);\r\n }\r\n var thing = new roadthings(_things[i].id.toString());\r\n thing.buffertime = _things[i].buffertime;\r\n thing.effect = _things[i].effect;\r\n thing.model = _things[i].model;\r\n thing.pos = curpos;\r\n thing.type = _things[i].type;\r\n thing.sprite = things;\r\n thing.length = curposZ;\r\n this.things.push(thing);\r\n things.transform.position = curpos;\r\n ScenceManager.Instance.GameScence.addChild(things);\r\n }\r\n }\r\n Resset() {\r\n var things = this.things;\r\n for (var k = 0; k < things.length; k++) {\r\n var thing = things[k];\r\n thing.Resset();\r\n }\r\n }\r\n Clear() {\r\n if (this.sprite) {\r\n this.sprite.active = true;\r\n PoolManager.Instance.RecoverMeshSprite3D(this.sprite);\r\n }\r\n var things = this.things;\r\n for (var k = 0; k < things.length; k++) {\r\n var thing = things[k];\r\n thing.Clear();\r\n }\r\n }\r\n SetActive(_open) {\r\n if (this.sprite) {\r\n this.sprite.active = _open;\r\n }\r\n var things = this.things;\r\n for (var k = 0; k < things.length; k++) {\r\n var thing = things[k];\r\n thing.sprite.active = _open;\r\n }\r\n }\r\n}\r\nexport class FixedRoad {\r\n constructor(_id, _pos = new Vector3(0, 0, 0), _parent = null) {\r\n this.id = _id;\r\n var roadasset;\r\n var sprite = PoolManager.Instance.CreatMeshSprite3D(ResourcesManager.Instance.fxroadassets[_id], \"\");\r\n this.sprite = sprite;\r\n this.sprite.transform.position = _pos;\r\n if (sprite.getChildByName(\"endpoint\"))\r\n this.endSprite = sprite.getChildByName(\"endpoint\");\r\n FixedRoad.ForNodeSetColliderInThis(this.sprite, ColliderLay.Plane);\r\n if (_parent) {\r\n _parent.addChild(this.sprite);\r\n }\r\n else {\r\n ScenceManager.Instance.GameScence.addChild(this.sprite);\r\n }\r\n }\r\n static ForNodeSetColliderInThis(_node, lay) {\r\n var childNumber = _node.numChildren;\r\n for (var i = 0; i < childNumber; i++) {\r\n var eChildNumber = _node.getChildAt(i).numChildren;\r\n if (eChildNumber > 0) {\r\n this.ForNodeSetColliderInThis(_node.getChildAt(i), lay);\r\n }\r\n var PhysicsCollider = _node.getChildAt(i).getComponent(Laya.PhysicsCollider);\r\n if (PhysicsCollider) {\r\n this.SetCollider(PhysicsCollider, lay);\r\n }\r\n }\r\n }\r\n static SetCollider(Collider, _lay) {\r\n Collider.collisionGroup = _lay;\r\n }\r\n}\r\nexport class ScenceManager {\r\n constructor(_scence) {\r\n this.LevelRoads = [];\r\n this.starthideindex = 1;\r\n this.buildsnum = 10;\r\n this.hightnum = 2;\r\n ScenceManager.Instance = this;\r\n this.GameScence = _scence;\r\n this.GameScence.physicsSimulation.maxSubSteps = 15;\r\n this.GameScence.physicsSimulation.fixedTimeStep = 1 / 60;\r\n this.GameScence.enableFog = true;\r\n this.GameScence.fogStart = 25;\r\n this.GameScence.fogRange = 35;\r\n this.GameScence.fogColor = new Vector3(0.5803922, 0.8431373, 1);\r\n this.Init();\r\n }\r\n Init() {\r\n this.GameCamera = this.GameScence.getChildByName(\"Main Camera\");\r\n this.GameCamera.transform.position = new Vector3(0, 0.6, 8.5);\r\n this.GameCamera.transform.rotationEuler = new Vector3(-5, 180, 0);\r\n this.GameCamera.clearColor = new Vector4(0.5803922, 0.8431373, 1, 1);\r\n this.GameLight = this.GameScence.getChildByName(\"Directional Light\");\r\n this.GameCamera.addComponent(CameraManager);\r\n var startroad = this.GameScence.getChildByName(\"PlateStart\");\r\n FixedRoad.ForNodeSetColliderInThis(startroad, ColliderLay.Plane);\r\n var FalconMesh = this.GameScence.getChildByName(\"FalconMesh\");\r\n ResourcesManager.Instance.FalconMesh = FalconMesh;\r\n FalconMesh.removeSelf();\r\n var crown = this.GameScence.getChildByName(\"crown\");\r\n ResourcesManager.Instance.crown = crown;\r\n crown.removeSelf();\r\n }\r\n CreatLevelScene(_frist = false) {\r\n ScenceManager.Instance.GameLight.transform.rotationEuler = new Laya.Vector3(-50, -150, 0);\r\n var level = LevelManager.Instance.curLevel;\r\n this.CreatLevelRoads(level);\r\n this.CreatPlayer(level, _frist);\r\n AImanager.Instance.CreatAi();\r\n GameManager.Instance.ChangeState(GameState.Idle);\r\n }\r\n CreatLevelRoads(_level) {\r\n var curY = -5.5;\r\n var rd1pos = new Vector3(0, curY, 20);\r\n _level.ramproad = new FixedRoad(fixedroaddata.Ramps, rd1pos);\r\n var startpos = _level.ramproad.endSprite.transform.position;\r\n var offesthight = startpos.y - 6;\r\n for (var i = 0; i < _level.stages.length; i++) {\r\n var stagedata = _level.stages[i];\r\n offesthight -= stagedata.StageHight;\r\n if ((i - 1) > -1) {\r\n var sss = _level.stages[i - 1].stagejumphight;\r\n offesthight -= sss;\r\n }\r\n var offestz = 0;\r\n var maxlength = 0;\r\n var maxhight = 0;\r\n stagedata.sprite = new Sprite3D();\r\n stagedata.sprite.name = \"stagesprite\" + i;\r\n ScenceManager.Instance.GameScence.addChild(stagedata.sprite);\r\n var longs = 0;\r\n for (var j = 0; j < stagedata.roadsdata.length; j++) {\r\n var start = stagedata.roadsdata[j].start;\r\n offestz = startpos.z + start;\r\n var road = new Road(j, stagedata.roadsdata[j], offesthight, offestz, stagedata.sprite, _level.pic, _level.colour);\r\n stagedata.roads.push(road);\r\n if (road.jumpHight > stagedata.stagejumphight)\r\n stagedata.stagejumphight = road.jumpHight;\r\n if (i > 1) {\r\n road.SetActive(false);\r\n }\r\n var thingsLength = road.things.length > 0 ? road.things[road.things.length - 1].length : 0;\r\n longs = stagedata.roadsdata[j].long == 0 ? thingsLength : stagedata.roadsdata[j].long;\r\n if (offestz + longs > maxlength)\r\n maxlength = offestz + longs;\r\n if (offesthight - (stagedata.roadsdata[j].high_change + road.jumpHight) < maxhight)\r\n maxhight = offesthight - (stagedata.roadsdata[j].high_change + road.jumpHight);\r\n }\r\n stagedata.startz = offestz;\r\n stagedata.endz = maxlength;\r\n stagedata.starty = offesthight;\r\n stagedata.endy = maxhight;\r\n startpos = new Vector3(0, maxhight, maxlength);\r\n this.CreatBuilds(stagedata);\r\n }\r\n _level.getRoadPoint();\r\n var endpos = new Vector3(0, startpos.y - 5.5, startpos.z + 2);\r\n var endroad = new FixedRoad(fixedroaddata.PlateFinish, endpos);\r\n _level.endroadsprite = endroad.sprite;\r\n var wincollider = endroad.sprite.getChildByName(\"Win\").getComponent(Laya.PhysicsCollider);\r\n wincollider.collisionGroup = ColliderLay.things;\r\n _level.endroadsprite.active = false;\r\n }\r\n SortRoad(a, b) {\r\n if (a.Long > b.Long) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n }\r\n CreatPlayer(_level, _frist) {\r\n var playerid = Number(PlayerAccount.CurrentAccount.CurAccountData.GetUser(AccountUser.equip_hero));\r\n var player = ResourcesManager.Instance.roleassets[playerid].getChildAt(0);\r\n var playermodel = PoolManager.Instance.CreatMeshSprite3D(player, \"\");\r\n var startpoint = new Vector3(0, 0, 10);\r\n playermodel.transform.position = startpoint;\r\n var hatid = Number(PlayerAccount.CurrentAccount.CurAccountData.GetUser(AccountUser.equip_hat));\r\n if (hatid > 0) {\r\n var hat = ResourcesManager.Instance.hatasset[hatid];\r\n var hatmodel = PoolManager.Instance.CreatMeshSprite3D(hat, \"\");\r\n var head = playermodel.getChildAt(0).getChildAt(0);\r\n head.addChild(hatmodel);\r\n hatmodel.transform.localPosition = new Laya.Vector3(0.1, 0, 0);\r\n hatmodel.transform.localRotationEuler = new Laya.Vector3(0, 90, 0);\r\n }\r\n var cbid = Number(PlayerAccount.CurrentAccount.CurAccountData.GetUser(AccountUser.equip_hat));\r\n if (cbid > 0) {\r\n var cb = ResourcesManager.Instance.cbasset[cbid];\r\n var cbmodel = PoolManager.Instance.CreatMeshSprite3D(cb, \"\");\r\n var back = playermodel.getChildAt(0).getChildAt(1);\r\n back.addChild(cbmodel);\r\n cbmodel.transform.localPosition = new Laya.Vector3(-0.06, -0.06, 0);\r\n cbmodel.transform.localRotationEuler = new Laya.Vector3(-25, 90, 180);\r\n }\r\n this.GameScence.addChild(playermodel);\r\n if (_frist) {\r\n new Player(playermodel);\r\n }\r\n else {\r\n Player.Instance.Reset(playermodel);\r\n }\r\n }\r\n CreatBuilds(_stage) {\r\n var offestz = 0;\r\n var offestY = 0;\r\n var offesthight = _stage.endy - 30;\r\n var length = _stage.endz - _stage.startz;\r\n var hight = 0;\r\n this.buildsnum = 1;\r\n var level = LevelManager.Instance.curLevel;\r\n for (var i = 0; i < this.buildsnum; i++) {\r\n offestz += (length / this.buildsnum);\r\n offestY = hight;\r\n var build = PoolManager.Instance.CreatMeshSprite3D(ResourcesManager.Instance.buildsassets[level.buildid], \"\");\r\n var pos = new Vector3(12, offesthight - offestY, _stage.startz + offestz);\r\n build.transform.position = pos;\r\n ScenceManager.Instance.GameScence.addChild(build);\r\n _stage.builds.push(build);\r\n var build2 = PoolManager.Instance.CreatMeshSprite3D(ResourcesManager.Instance.buildsassets[level.buildid], \"\");\r\n var pos = new Vector3(-12, offesthight - offestY, _stage.startz + offestz);\r\n build2.transform.position = pos;\r\n ScenceManager.Instance.GameScence.addChild(build2);\r\n _stage.builds.push(build2);\r\n if (i > 0) {\r\n build.active = false;\r\n build2.active = false;\r\n }\r\n }\r\n }\r\n}\r\nScenceManager.randomcolor = [\r\n new Vector4(145 * 1.0 / 255, 1, 101 * 1.0 / 255, 1),\r\n new Vector4(162 * 1.0 / 255, 56 * 1.0 / 255, 1, 1),\r\n new Vector4(1, 150 * 1.0 / 255, 38 * 1.0 / 255, 1),\r\n];\r\n", "references": [ "C:/Users/admin/Desktop/runner/src/Scripts/Game/LevelManager.ts", "C:/Users/admin/Desktop/runner/src/Scripts/Game/ResourcesManager.ts", "C:/Users/admin/Desktop/runner/src/Scripts/Game/PoolManager.ts", "C:/Users/admin/Desktop/runner/src/Scripts/Game/Runner.ts", "C:/Users/admin/Desktop/runner/src/Scripts/Game/GameManager.ts", "C:/Users/admin/Desktop/runner/src/Scripts/Game/Player.ts", "C:/Users/admin/Desktop/runner/src/Scripts/Game/CameraManager.ts", "C:/Users/admin/Desktop/runner/src/GameUtils/GameUtils.ts", "C:/Users/admin/Desktop/runner/src/Scripts/Game/LevelData.ts", "C:/Users/admin/Desktop/runner/src/Scripts/Game/AIManager.ts", "C:/Users/admin/Desktop/runner/src/Scripts/Network/PlayerAccount.ts" ] }