/* 网络 */ var NN_Net = new Object(); NN_Net.ws_tcp = null; //var NN_SendData = new Object(); var ReadData = new Object(); NN_Net.TcpMessage=function(tcpid,msg){//收Tcp包,解析 var str = msg; var inx=str.indexOf(":"); if (inx>0){ var tou = str.substr(0,inx);//包头 if (tou == "@toconcon") { NN_Net.OnConnect(t);//链接成功 return; } } str = unescape(str);//解码 //NN_Net.RevData(str);//处理实际数据 var msg1 = JSON.parse(str); NN_Net.DoPack(msg1); }; NN_Net.TcpLogin=function(){//Tcp链接服务器 //ifast_tcp_open(0,"127.0.0.1:5414"); //ifast_tcp_open(0,"120.25.60.74:5411"); }; NN_Net.OnConnect = function(){ //链接成功 }; NN_Net.DoPack = function(msg){ //收包处理 // console.log("收到数据:"+JSON.stringify(msg)); if(typeof(msg) == "string"){ msg = JSON.parse(msg); } if(NN_Net.ExitsFunction(NN_RevData[msg.rpc])){ //try{ NN_RevData[msg.rpc](msg.data); //}catch(e){ //alert("bug:"+e+"\n数据:"+msg.data); //} //普通房间准备按钮刷新显示 if(Utl.getIsInfinite() != 1){ GameUI.showReady(); } } }; NN_Net.ExitsFunction = function(funcName){ //判断函数名是否有效 try{ if (typeof(eval(funcName)) == "function"){ return true; } }catch(error){} return false; }; /* *发送数据包 */ NN_Net.SendGameData = function(_rpc,_data){ //游戏中发送游戏桌包 if(_data == null){ _data = {}; } var msg = { app:"youle", route:"niuniu", rpc:_rpc, data:_data } msg.data.seat = NN_Desk.myseat; msg.data.pid = Utl.getMyPlayerid(); //msg.data.openid = Utl.getMyOpenid(); msg.data.room = { agentid:Utl.getAgentID(), gameid:Utl.getGameID(), roomcode:Utl.getRoomcode() }; var str = JSON.stringify(msg); //console.log("发网络包:"+str); // str = escape(str); // ifast_tcp_send(0,str); Net.ws_tcp.send(str); }; NN_Net.SendData = function(data){ //发送数据包 var str = JSON.stringify(data); if(NN_GameModel == 0){//单机处理 }else{//网络发包 //console.log("发网络包:"+str); //str = escape(str); // ifast_tcp_send(0,str); Net.ws_tcp.send(str); } }; NN_Net.submit_error = function(_packet,_msg){ //提交错误 if(NN_errorMsg != _msg){ NN_errorMsg = _msg; }else { return; } var msg = { app:"youle", route:"agent", rpc:"submit_error", data:{ packet:_packet, msg:_msg, playerid:Utl.getMyPlayerid(), agentid:Utl.getAgentID(), gameid:Utl.getGameID() } } try{ Net.ws_tcp.send(JSON.stringify(msg)); }catch(e){} }; //游戏发包 var NN_SendData = {}; NN_SendData.startWar = function(){ //房主开始游戏 NN_Net.SendGameData("startWar"); ////console.log("发送房主开始数据"); }; NN_SendData.robZhuang = function(isrob){ //抢庄 var data = { isrob:isrob }; NN_Net.SendGameData("robZhuang",data); ////console.log("抢庄:"+isrob); }; NN_SendData.betScore = function(_score){ //下注 var data = { score:_score }; if(NN_Desk.model == 5 && NN_Desk.zhuang >= 0){ if(NN_Desk.pList[NN_Desk.myseat].cards.cards.length > 0){ NN_Net.SendGameData("betScoreAgain",data); } }else { NN_Net.SendGameData("betScore",data); } ////console.log("下注"); }; NN_SendData.rubCard = function(_cardloc){ //搓牌 var data = { cardloc:_cardloc }; NN_Net.SendGameData("rubCard",data); ////console.log("搓牌"); }; NN_SendData.putCard = function(){ //摆牌确认 NN_Net.SendGameData("putCard"); ////console.log("摆牌确认"); }; NN_SendData.trusteeship = function(_isAuto){ //托管 var data = {}; if(_isAuto == 1){ //托管 data.isAuto = 1; //托管状态 data.betModel = NN_Desk.model_bet; //下注模式 data.mode = NN_config.auto.mode; //托管模式 if(NN_Desk.model_fast >= 1){ data.toTime = NN_config.auto.fast_toTime; //定时延迟操作时间 } //data.toTime = NN_config.auto.toTime; //定时延迟操作时间 data.robZhuang = NN_config.auto.robZhuang; //抢庄0-未操作,1-抢庄,-1-不抢 data.betScore = NN_config.auto.betScore; //下注分数 }else { //取消托管 data.isAuto = -1; //托管状态 } NN_Net.SendGameData("trusteeship",data); //console.log("发送托管包"); }; /* //游戏收包 */ var NN_RevData = {}; //提示 NN_RevData.tips = function(data){ if(NN_Desk.personMax == 10){ NN_UIP.show.tips(data.tips); }else { NN_UIF.show.tips(data.tips); } }; //准备阶段 NN_RevData.readyStage = function(data){ if(Utl.getIsInfinite() == 1){ NN_Desk.readyStage(data); NN_UI.time_start = (new Date()).getTime(); //显示 if(NN_Desk.personMax == 10){ NN_UIP.net.readyStage(); }else { NN_UIF.net.readyStage(); } //隐藏无序发牌 NN_UIF.disorderDeal.show(); } }; //玩家准备 NN_RevData.playerReady = function(data){ if(Utl.getIsInfinite() == 1){ if(data.isReady){ Utl.setPlayerPrepare(data.seat, 1); NN_Desk.pList[data.seat].isReady = 1; //玩家准备状态 }else if(data.seat == NN_Desk.myseat){//准备失败-提示星星不足 Utl.openTips("你的" + NN_config.beanDes + "数不足哦",2000); } } }; NN_RevData.firstStartWar = function(data){ //第一次开战 if(data.deskwar){ NN_Desk = new NN_deskInfo(); if(data.deskwar.deskdata){ NN_Desk.initData_net(data.deskwar.deskdata); } if(data.deskwar.startwar){ NN_RevData.startWar(data.deskwar.startwar); }else if(data.deskwar.readyStage){ //准备阶段 NN_RevData.readyStage(data.deskwar.readyStage); } } }; NN_RevData.other_join_room = function(data){ //其他人进入房间 }; NN_RevData.startWar = function(data){ //开始游戏 var _zhuang = NN_Desk.zhuang; NN_Desk.startWar(data); if(data.startType == 3 && data.ramZhuang){ NN_Desk.okZhuang(data.ramZhuang); } NN_UI.time_start = (new Date()).getTime(); //显示 if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){ NN_UI.startWar(data.startType,_zhuang,data); }else if(NN_Desk.personMax == 10){ //10快版 NN_UIP.net.startWar(data.startType, _zhuang, data); }else { NN_UIF.net.startWar(data.startType, _zhuang, data); } //判断自己星星数,不够提示 if(NN_Desk.model_bean[0] == 1 && !NN_Desk.isBeanEnough(NN_Desk.myseat,"bet")){ Utl.openTips(NN_config.beanDes + "数不够哦",2000); } if(data.isPass){ Utl.openTips("有玩家" + NN_config.beanDes + "数不足,跳过轮庄",2000); } //已准备玩家隐藏按钮 if(Utl.getIsInfinite() == 1 && Utl.getPlayerReadyState(NN_Desk.myseat)){ Utl.closeMainSceneButton(); } //无序发牌 NN_UIF.disorderDeal.show(); }; NN_RevData.robZhuang = function(data){ //抢庄 NN_Desk.robZhuang(data); //显示 NN_UI.playerState_leave(data.seat,false); if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){ NN_UI.robZhuang(data.seat,data.isrob,1); }else if(NN_Desk.personMax == 10){ NN_UIP.net.robZhuang(data.seat,data.isrob); }else { NN_UIF.net.robZhuang(data.seat,data.isrob); } if(data.seat == NN_Desk.myseat && data.isTips && data.isTips == "noBean"){ Utl.openTips("抢庄失败,"+ NN_config.beanDes +"数不够哦",1500); } }; NN_RevData.okZhuang = function(data){ //console.log("确定庄 收包时差:" + ((new Date()).getTime() - NN_UI.time_start)); //确定庄 NN_Desk.okZhuang(data); //显示 //隐藏抢庄按钮 set_self(706,37,0,0,0); set_self(707,37,0,0,0); NN_UI.setCountDown(); NN_UI.time_start = (new Date()).getTime(); if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){ NN_TO.okZhuang.t0 = window.setTimeout(function(){ NN_TO.okZhuang.t0 = -1; if(NN_timeout != 1){return;} NN_Desk.state = NN_state.bet; NN_UI.okZhuang(); },1000); }else if(NN_Desk.personMax == 10){ NN_UIP.net.okZhuang(data); }else { NN_UIF.net.okZhuang(data); } }; NN_RevData.betScore = function(data){ //console.log("玩家下注 收包时差:" + ((new Date()).getTime() - NN_UI.time_start)); //下注 NN_Desk.betScore(data); //显示 NN_UI.playerState_leave(data.seat,false); if(NN_Judge.isVibrator == 1){ //取消震动 Func.canclevibrator(); NN_Judge.isVibrator = -1; } //if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){ //if(NN_Judge.isOkZhuang != 1){ //NN_UI.betScore(data.seat,data.score,1); //} //if(data.seat == NN_Desk.myseat){ //NN_UI.betScoreButton(false); //} //}else{ if(NN_Desk.personMax == 10){ NN_UIP.net.betScore(data.seat,data.score); }else { NN_UIF.net.betScore(data.seat,data.score); } //} if(data.seat == NN_Desk.myseat && data.isTips && data.isTips == "noBean" && NN_Desk.model != 5){ Utl.openTips("下注失败,"+ NN_config.beanDes +"数不够哦",1500); } }; NN_RevData.dealCards = function(data){ //console.log("发牌 收包时差:" + ((new Date()).getTime() - NN_UI.time_start)); //发牌 NN_Desk.dealCards(data); //显示 //隐藏倒计时、提示、下注栏 NN_UI.setCountDown(); NN_Tips.words(); NN_UI.betScoreButton_anim(false); // NN_UI.time_start = (new Date()).getTime(); if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){ NN_TO.dealCards.t0 = window.setTimeout(function(){ NN_TO.dealCards.t0 = -1; if(NN_timeout != 1){return;} NN_UI.dealCards(data.dice,data.dealorder); NN_Desk.state = NN_state.rubCard; },1000); }else if(NN_Desk.personMax == 10){ NN_UIP.net.dealCards(data.dice, data.dealorder); }else { NN_UIF.net.dealCards(data.dice, data.dealorder); } //取消震动 if(NN_Judge.isVibrator == 1){ Func.canclevibrator(); NN_Judge.isVibrator = -1; } }; NN_RevData.betScoreAgain = function(data){ //下注抢庄第二次下注 NN_Desk.betScoreAgain(data); //显示 if(NN_Judge.isVibrator == 1){ //取消震动 Func.canclevibrator(); NN_Judge.isVibrator = -1; } if(NN_Desk.personMax == 10){ NN_UIP.net.betScore(data.seat, data.score, data.score2); }else { NN_UIF.net.betScore(data.seat, data.score, data.score2); } }; NN_RevData.dealCardsAgain = function(data){ //下注抢庄第二次下注后发牌 //console.log("发牌 收包时差:" + ((new Date()).getTime() - NN_UI.time_start)); //发牌 NN_Desk.dealCardsAgain(data); //显示 //隐藏倒计时、提示、下注栏 NN_UI.setCountDown(); NN_Tips.words(); NN_UI.betScoreButton_anim(false); // if(NN_Desk.personMax == 10){ NN_UIP.net.dealCards([],data.dealorder); }else { NN_UIF.net.dealCards([],data.dealorder); } //取消震动 if(NN_Judge.isVibrator == 1){ Func.canclevibrator(); NN_Judge.isVibrator = -1; } NN_UI.time_start = (new Date()).getTime(); }; NN_RevData.rubCard = function(data){ //搓牌 if(NN_Desk.pList[data.seat].rubcard.length < 2 && (data.seat != NN_Desk.myseat || (data.seat == NN_Desk.myseat && NN_Desk.pList[data.seat].isAuto == 1))){ NN_Desk.rubCard(data); //显示 if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){ if(NN_Judge.isDealCards != 1 ){//判断是否发牌中 NN_UI.rubCard(data.seat,data.cardloc,data.card); } }else if(NN_Desk.personMax == 10){ NN_UIP.net.rubCard(data.seat, data.cardloc, data.card); } else { NN_UIF.net.rubCard(data.seat, data.cardloc, data.card); } } }; NN_RevData.putCard = function(data){ //摆牌 NN_Desk.putCard(data); //显示 if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){ if(NN_Judge.isDealCards != 1){//判断是否发牌中 NN_UI.putCard_player(data.seat,1,true); } }else if(NN_Desk.personMax == 10){ NN_UIP.net.putCard(data.seat); } else { NN_UIF.net.putCard(data.seat); } }; NN_RevData.putAllCard = function(data){ //console.log("搓摆牌 收包时差:" + ((new Date()).getTime() - NN_UI.time_start)); //显示出玩家全部牌型 NN_Desk.putAllCard(data); //显示 if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){ NN_UI.putAllCard(1); }else if(NN_Desk.personMax == 10){ NN_UIP.net.putAllCard(); } else { NN_UIF.net.putAllCard(); } }; NN_RevData.settlement = function(data){ //每局-结算 NN_Desk.settlement(data); //显示 NN_UI.time_start = (new Date()).getTime(); if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){ NN_TO.settlement.t0 = window.setTimeout(function(){ NN_TO.settlement.t0 = -1; if(NN_timeout != 1){return;} NN_UI.settlement(data.result, true); },3000); }else if(NN_Desk.personMax == 10){ NN_UIP.net.settlement(data.result); } else { NN_UIF.net.settlement(data.result); } //提示自己星星数不足 if(data.noBeanList && data.noBeanList.length > 0){ for(var i=0;i