| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605 |
- const GameStatesStatic = require('GameStates');
- cc.Class({
- extends: cc.Component,
- properties: {
- NodeTouchScript:null,
- Rivel:null,
- javelin_prefab:{//标枪计距带起点
- default:null,
- type:cc.Prefab
- },
- },
- onLoad: function() {
- this.GameStates = cc.find("Canvas").getComponent("GameStates");
- cc.game.setFrameRate(60);
- var TouchLayout = cc.find("TouchLayout");
- this.NodeTouchScript = TouchLayout.getComponent("NodeTouch");
- this.Rivel = cc.find("Rivel");
- qqNetwork.regMsgCallback(this.onMessage.bind(this));
- qqNetwork.enableDebug();
- // this.connect();
- },
- connect: function() {
- // var ipStr = '127.0.0.1';
- var ipStr = '118.190.113.33';
- // var ipStr = '139.129.229.113';
- if (ipStr.trim().length <= 0) {
- return;
- }
- if (qqNetwork.debugFlag) {
- qqNetwork.connect(ipStr.trim(),'8181');
- }
- else {
- qqNetwork.send(qqNetwork.game2Room.gameInit, {openFraming : 1,fpsExpect:5 });
- }
- },
- onMessage: function(msgName, msgData) {
- if (!msgData || !msgName) {
- return;
- }
- // 正式环境没有
- if (msgName === "online") {
- this.addLog("连接成功");
- cc.log("onopen------------连接成功",window.qqgame.isRobot);
- var self = this;
- this.schedule(function()
- {
- self.sendStep1Data();
- }, 0.01, 0);
- return;
- }
- // this.addLog(msgName);
- switch (msgName) {
- case qqNetwork.room2Game.offline:
- this.addLog("断开连接");
- break;
- case qqNetwork.room2Game.channelCreated: // 匹配成功
- // this.addLog("匹配成功,收到消息" + JSON.stringify(msgData));
- // console.log("匹配成功,收到消息" + JSON.stringify(msgData));
- this.setNetWorkData(msgData);
- // if(!qqNetwork.debugFlag) return;
- // console.log("onopen------------匹配成功,收到消息",window.qqgame.isRobot);
- // cc.log("匹配 详细信息",msgData);
- var GameStates = cc.find('Canvas').getComponent('GameStates');
- var GameMode = cc.find('Canvas').getComponent('GameMode');
- GameStates.bConnect = true;
- if (1 == msgData.playerInfos[0].seat) {
- GameStates.bServer = true;
- var testDate = new Date();
- console.log('Server 初始化成功'+testDate.getHours()+":"+testDate.getMinutes()+":"+testDate.getSeconds()+":"+testDate.getMilliseconds());
- var randomSkin = cc.find("randomSkin");
- randomSkin.getComponent("upDateSkin").setSkinss(GameStatesStatic.myRandomc);
- cc.find('Rivel').getChildByName('Player').getChildByName('PlayerCollisionLine').destroy();
- // cc.log('有没有 StartHUD Server', cc.find("StartHUD"));
- // cc.find("StartHUD").getComponent("StartHUD").startNetGame();
- //
- // cc.find("StartHUD").getComponent("StartHUD").StartToRun();
- this.GameStates.isRobot=window.qqgame.isRobot;
- console.log('GameStatesStaticisRobot',this.GameStates.isRobot);
- if (this.GameStates.isRobot) {
- var StartHUD = cc.find('StartHUD');
- StartHUD.getComponent('StartHUD').startNetGame();
- // .startNetGame();
- }
- var Hero = cc.find("Hero");
- var NetworkSocket = Hero.getComponent('NetworkSocket');
- var data = {FunctionName:'isrobot',status:"Server",isRobot:window.qqgame.isRobot};
- GameMode.SynchronizationFun(data);
- }
- else {
- var testDate = new Date();
- console.log('Client 初始化成功'+testDate.getHours()+":"+testDate.getMinutes()+":"+testDate.getSeconds()+":"+testDate.getMilliseconds());
- GameStates.bServer = false;
- cc.find('Rivel').getChildByName('Player').getChildByName('PlayerCollisionLine').destroy();
- // cc.log('有没有 StartHUD Client', cc.find("StartHUD"));
- // cc.find("StartHUD").getComponent("StartHUD").startNetGame();
- //
- // cc.find("StartHUD").getComponent("StartHUD").StartToRun();
- this.GameStates.isRobot=window.qqgame.isRobot;
- console.log('GameStatesStaticisRobot',this.GameStates.isRobot);
- if (this.GameStates.isRobot) {
- var StartHUD = cc.find('StartHUD');
- StartHUD.getComponent('StartHUD').startNetGame();
- // .startNetGame();
- }
- var Hero = cc.find("Hero");
- var NetworkSocket = Hero.getComponent('NetworkSocket');
- var data = {FunctionName:'isrobot',status:"Client",isRobot:window.qqgame.isRobot};
- GameMode.SynchronizationFun(data);
- }
- if(GameStates.bServer)
- {
- var myDate = new Date();
- var name = myDate.getMilliseconds();
- GameStates.HostName = JSON.stringify('ID:'+name);
- cc.log('HostName:'+GameStates.HostName );
- var data = {FunctionName:'HostName',OurName:GameStates.HostName};
- GameMode.SynchronizationFun(data);
- }
- break;
- case qqNetwork.room2Game.frameData:
- this.frameDataControl(msgData);
- break;
- case qqNetwork.room2Game.gameStart:
- // console.log("gameStart,收到消息" + JSON.stringify(msgData));
- if(cc.find('Canvas').getComponent(cc.AudioSource) != null){
- cc.find('Canvas').getComponent(cc.AudioSource).play();
- }
- var GameMode = cc.find('Canvas').getComponent('GameMode');
- var data = {FunctionName:'Frame'};
- GameMode.SynchronizationFun(data);
- // this.sendFrameData("2222");
- break;
- case qqNetwork.room2Game.gameData: // 消息同步
- // cc.log("onopen------------消息同步",window.qqgame.isRobot);
- var myData ;
- // if(!qqNetwork.debugFlag) return;
- if (msgData == "gameStart") {
- return;
- }
- myData = JSON.parse(msgData.str);
- var Hero = cc.find('Hero');
- var Rivel = cc.find('Rivel');
- var HeroControl = Hero.getComponent('HeroControl');
- var RivelControl = Rivel.getComponent('HeroControl');
- var RivelPlayerState = Rivel.getComponent('PlayerState');
- var GameMode = cc.find('Canvas').getComponent('GameMode');
- var GameStates = cc.find('Canvas').getComponent('GameStates');
- if('HostName' == myData.FunctionName)
- {
- GameStates.HostName = myData.OurName;
- console.log('HostName:'+GameStates.HostName );
- }
- if('ReadyToRun' == myData.FunctionName)
- {
- if(!GameStates.bReadyToRun)
- {
- GameStates.bReadyToRun = !GameStates.bReadyToRun;
- }
- else {
- var StartHUD = cc.find('StartHUD');
- if (StartHUD!=null) {
- StartHUD.getComponent('StartHUD').StartToRun();
- }
- }
- } else if ('StaggerAnimation' == myData.FunctionName) {
- RivelPlayerState.SyschroAtionArray.push(myData);
- GameMode.SyncPositionXRange(Rivel,myData.CurrentPositionX);
- }
- else if ('SpeedUp' == myData.FunctionName) {
- RivelPlayerState.SyschroAtionArray.push(myData);
- GameMode.SyncPositionXRange(Rivel,myData.CurrentPositionX);
- }
- else if ('SynchroHeroPositionXAndSpeed' == myData.FunctionName) {
- RivelPlayerState.HeroPositionX = myData.PositionX;
- RivelPlayerState.HeroCurrentSpeed = myData.HeroCurrentSpeed;
- }
- else if ('myRandomSetSkins' === myData.FunctionName) {
- // cc.log("调用了 下面的样子",myData.arr);
- Rivel.getChildByName("Player").getComponent("Charactor").setSkins(myData.arr[1]);
- Hero.getChildByName("Player").getComponent("Charactor").setSkins(myData.arr[0]);
- }
- else if('SetCurrentSpeedAndAnimation'=== myData.FunctionName)
- {
- RivelControl.SetCurrentSpeedAndAnimation(myData.Speed);
- }
- else if('addScore'==myData.FunctionName)
- {
- if(GameMode.bHasAddScore == false){
- if(GameStates.bServer){
- GameMode.addScore(Rivel);
- var data = { FunctionName: 'addScore',PlayerName:'Rival'};
- GameMode.SynchronizationFun(data);
- cc.log("--Rival加分啦--")
- }
- else{
- if(myData.PlayerName == 'Hero'){
- GameMode.addScore(Rivel);
- }
- if(myData.PlayerName == 'Rival'){
- GameMode.addScore(Hero);
- }
- }
- }
- }
- else if('SendMyArrivedTime' == myData.FunctionName)
- {
- GameMode.RivalArrivedTime = myData.MyArrivedTime;//设置客户端的到达时间
- // cc.log("^^^^^我接收到了对手的到达时间^^^^^^^^^^^^^^");
- // cc.log("-!!-RivalArrivedHour is "+GameMode.RivalArrivedTime[0]);
- // cc.log("-!!-RivalArrivedMinutes is "+GameMode.RivalArrivedTime[1]);
- // cc.log("-!!-RivalArrivedSeconds is "+GameMode.RivalArrivedTime[2]);
- // cc.log("-!!-RivalArrivedMilliseconds is "+GameMode.RivalArrivedTime[3]);
- GameMode.AddScoreToOther("Rivel");
- }
- else if('PushPlayerToEnterFinishLinePlayersArray' == myData.FunctionName)
- {
- GameStates.EnterFinishLinePlayersArray.push(Rivel);
- }
- else if('CheckPlayersDistance' == myData.FunctionName)
- {
- GameStates.EnterStartLinePlayersArray.push(Rivel);
- GameStates.StartLinePositionX=myData.StartLinePositionX;
- GameMode.CheckPlayersDistance(false);
- }
- else if('SetStartLinePositionX' == myData.FunctionName )
- {
- GameStates.StartLinePositionX=myData.StartLinePositionX;
- //Code added by slam
- RivelControl.SetSpeedToZeroAndIdle();
- RivelControl.node.setPositionX(myData.StartLinePositionX);
-
- }
- else if('ClearEnterFinishLinePlayersArray' == myData.FunctionName)
- {
- GameStates.EnterStartLinePlayersArray = [];
- }
- else if('ResetSpeed' == myData.FunctionName)
- {
- RivelPlayerState.SyschroAtionArray.push(myData);
- GameMode.SyncPositionXRange(Rivel,myData.CurrentPositionX);
- }
- else if('SetSpeedToZeroAndIdle' == myData.FunctionName)
- {
- RivelPlayerState.SyschroAtionArray.push(myData);
- }else if('FinishLineReduceSpeedPositionArray' == myData.FunctionName){
-
- // console.log('rivel 减速');
- RivelControl.ResetSpeed_noType();
- // RivelPlayerState.FinishLineReduceSpeedPositionArray.push(myData.NodeX);
- }
- else if('PushPlayerToEnterStartLinePlayersArrayAndSetStartLinePositionX' == myData.FunctionName)
- {
- var EnterStartLinePlayersArray = GameStates.EnterStartLinePlayersArray;
- GameStates.StartLinePositionX = myData.StartLinePositionX;
- EnterStartLinePlayersArray.push(Rivel);
- }
- else if('UnScheduleFadeIn' == myData.FunctionName)
- {
- // cc.log('net UnScheduleFadeIn');
- GameMode.unschedule(GameMode.Transport);
- HeroControl.javelinTag = false;
- RivelControl.javelinTag = false;
- HeroControl.CameraNode.parent = Hero;
- this.schedule(function()
- {
- GameStates.EnterStartLinePlayersArray=[];
- }.bind(this), 5,0);
- // GameMode.PlayersStartToRun(HeroControl, RivelControl);
- }
- else if("SetEndLinePositionXAndStop" == myData.FunctionName)
- {
- var EndLinePositionX = myData.PositionX;
- RivelControl.SetSpeedToZeroAndIdle();
- GameStates.EndLinePositionX = EndLinePositionX;
- }
- else if('Transport' == myData.FunctionName)
- {
- // cc.log('net Transport');
- GameMode.schedule(GameMode.Transport, 3,0);
- }
- else if("FadeInAndOut" == myData.FunctionName)
- {
- // cc.log('net >3000 FadeInAndOut');
- cc.find("Shade").getComponent('Shade').FadeInAndOut(function ()
- {
- RivelControl.SetSpeedToZeroAndIdle();
- Rivel.setPositionX(GameStates.StartLinePositionX);
- HeroControl.SetSpeedToZeroAndIdle();
- Hero.setPositionX(GameStates.StartLinePositionX);
- HeroControl.javelinTag = false;
- RivelControl.javelinTag = false;
- HeroControl.CameraNode.parent = Hero;
- // GameMode.PlayersStartToRun(HeroControl, RivelControl);
- }.bind(this))
- }
- else if('StopPlayerAllSchedule' == myData.FunctionName )
- {
- HeroControl.StopPlayerAllSchedule();
- RivelControl.StopPlayerAllSchedule();
- }
- else if('PlayersStartToRun' == myData.FunctionName)
- {
- var Hero = cc.find('Hero');
- var Rivel = cc.find('Rivel');
- var PlayerStateScript = Hero.getComponent("PlayerState");
- PlayerStateScript.TouchControlEnableTouch = false;
- HeroControl.HeroIsStop = false;
- RivelControl.HeroIsStop = false;
- HeroControl.ResetSpeed_noType();
- RivelControl.ResetSpeed_noType();
- }
- else if("HeroLongJumpHeroAnimation" == myData.FunctionName){
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("HeroLongJumpRivelAnimation" == myData.FunctionName) {
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else
- if ("SetCurrentSpeed_max_jumpLong" == myData.FunctionName) {
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("HeroJumpHeroAnimation" == myData.FunctionName){
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("PerfectHurdleBandRailing" == myData.FunctionName){
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("PerfectHurdleBandBarrier" == myData.FunctionName){
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("ShakeBarrier" == myData.FunctionName){
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("upBike" == myData.FunctionName){
- // cc.log("上车 准备网络");
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("downBikeHero" == myData.FunctionName){
- // console.log(JSON.stringify(myData));
- // console.log("Rivel.x ==",Rivel.x)
- Rivel.x = myData.EndPositionX+30;
- // console.log("Rivel.x ==",Rivel.x)
- RivelPlayerState.SyschroAtionArray.push(myData);
- HeroControl.downBikeRivel("Rivel");
- }
- else if("upJavelinHeroAnimation" == myData.FunctionName){
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("Herojavelin" == myData.FunctionName){
- // console.log("Herojavelin",JSON.stringify(myData));
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("Restrictions" == myData.FunctionName){
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("upJavelinend" == myData.FunctionName){
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- //Code added by slam
- else if("JavelinData"==myData.FunctionName){
- // console.log("JavelinData",JSON.stringify(myData));
- // JavelinData
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("SetCurrentSpeed_max" == myData.FunctionName){
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("SetCurrentSpeed_noRestrictions" == myData.FunctionName){
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- else if("SetCurrentSpeed_noRestrictions800" == myData.FunctionName){
- RivelPlayerState.SyschroAtionArray.push(myData);
- }
- break;
- case qqNetwork.game2Room.leave:
- console.log("退出游戏",msgData);
- // 收到自己leave的协议,必须发送 gameResult 判断自己输,得分为0。
- // 收到对手leave的协议,必须发送 gameResult 判断自己赢。
- this.quitGame(msgData);
- break;
- case qqNetwork.game2Room.network:
- console.log("网络变化",msgData);
- // 收到自己leave的协议,必须发送 gameResult 判断自己输,得分为0。
- // 收到对手leave的协议,必须发送 gameResult 判断自己赢。
- break;
- }
- },
- //帧同步控制器
- frameDataControl : function (data) {
- console.log("帧同步",data);
- },
- quitGame : function (data) {
- /* qqgame.pvpResponse({
- eID: 'frameData',
- ePara: data
- }); */
- // return;
- var Hero = cc.find("Hero");
- var NetworkSocket = Hero.getComponent('NetworkSocket');
- var myWin = 0;
- var myLose = 0;
- //自己退出了
- //游戏结束了 自己输了 就是1 自己赢了 就是2
- if (data.isSelf == 1) {
- myWin = qqgame.RESULT_LOSE;
- myLose = qqgame.RESULT_WIN;
- }else{
- //别人退出了
- myWin = qqgame.RESULT_WIN;
- myLose = qqgame.RESULT_LOSE;
- }
- var datas = {
- // "report":{"key":"value", ...}, ----大厅侧的上报账单中的字段及值
- // "reportKey":"xxx", ----大厅侧上报后台为每个游戏分配的key"
- //
- // "result":{
- // "win":-1/0/1, ---- 输(-1)/平(0)/胜(1)
- // "myScore":"", ---- 有分数才填写
- // "competitorScore":"" ---- 有分数才填写
- // myScore : 22,
- // competitorScore : 33,
- resultDisplay: { // 用于客户端结算面板的显示
- result: myWin
- },
- resultData: [
- {
- qqgameid: this.netWorkData.playerInfos[0].qqgameid,
- record: {
- result: myWin, // 默认字段,必须有
- playTime: 112,// 字段有大厅提供,游戏根据文档上报
- amount: 1, // 字段有大厅提供,游戏根据文档上报,
- score : 20
- }
- }, {
- qqgameid: this.netWorkData.playerInfos[1].qqgameid,
- record: {
- result: myLose,
- playTime: 60,
- amount: 1,
- score : 20
- }
- }
- ]
- };
- // for (var i = 0; i < datas.resultData.length; i++) {
- //
- // }
- console.log("退出游戏 上报数据",datas);
- NetworkSocket.sendSyncDataGameOver(datas);
- },
- addLog: function(str) {
- // cc.log(str);
- },
- sendGameData: function(str) {
- if (str.trim().length <= 0) {
- return
- }
- var data = {str:str};
- // this.addLog("发送数据" + JSON.stringify(data));
- network.send(qqNetwork.game2Room.gameData, data);
- },
- sendSyncData: function(str) {
- if (str.trim().length <= 0) {
- return
- }
- var data = {str:str};
- // this.addLog("发送数据" + JSON.stringify(data));
- network.send(qqNetwork.game2Room.gameData, data);
- },
- sendSyncDataGameOver: function(str) {
- // this.addLog("发送数据" + JSON.stringify(data));
- network.send(qqNetwork.game2Room.gameResult, str);
- },
- sendFrameData: function(str) {
- if (this.myFrame == null) {
- this.myFrame = 0;
- }
- if (str.trim().length <= 0) {
- return
- }
- this.myFrame++;
- var data = {str:str};
- // this.addLog("发送数据" + JSON.stringify(data));
- network.send(qqNetwork.game2Room.frameData, data);
- },
- sendStep1Data:function() {
- network.send(qqNetwork.game2Room.gameInit, {});
- // var randomSkin = cc.find("randomSkin");
- // randomSkin.getComponent("upDateSkin").setSkinss();
- this.addLog("等待对方初始化结束");
- },
- sendStep2Data:function() {
- network.send(qqNetwork.game2Room.gameReady, {});
- this.addLog("数据同步完毕,等待对方同步完毕");
- },
- // 游戏结束
- sendStep3Data:function() {
- network.send(qqNetwork.game2Room.gameResult, {});
- this.addLog("游戏结束,上报游戏数据,等待对方回应");
- },
- GetSyncObj:function(ParentName,ObjName,PositionX)
- {
- var Level = cc.find("Level");
- var aX = parseFloat(PositionX);
- var Obj = null;
- var LevelChildren = Level.children;
- // cc.log('Level'+length);
- for(var i=0;i<LevelChildren.length;i++)
- {
- if(LevelChildren[i].name === ParentName)
- {
- var aObj = LevelChildren[i].getChildByName(ObjName);
- if(aObj && aX===aObj.convertToWorldSpaceAR(cc.Vec2.ZERO).x)
- {
- Obj = aObj;
- }
- }
- }
- return Obj;
- },
- /**
- * 设置网络数据
- * @param netWorkData
- */
- setNetWorkData : function (netWorkData) {
- // playerInfos
- // cc.log("网络数据是",netWorkData.playerInfos);
- var UIControl = cc.find("UIControl").getComponent("UIControl");
- UIControl.setImage_Player1(netWorkData.playerInfos[0].headurl);
- UIControl.setImage_Player2(netWorkData.playerInfos[1].headurl);
- UIControl.setName_Player1(netWorkData.playerInfos[0].nick);
- UIControl.setName_Player2(netWorkData.playerInfos[1].nick);
- UIControl.setName_Gender1(netWorkData.playerInfos[0].gender);
- UIControl.setName_Gender2(netWorkData.playerInfos[1].gender);
- // this.netWorkData.playerInfos[0].qqgameid;
- this.netWorkData = netWorkData;
- console.log("大厅数据" , this.netWorkData);
- }
- });
|