590 lines
14 KiB
JavaScript
590 lines
14 KiB
JavaScript
/*
|
||
网络
|
||
*/
|
||
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<data.noBeanList.length;i++){
|
||
if(data.noBeanList[i] == NN_Desk.myseat){
|
||
Utl.openTips("庄家"+ NN_config.beanDes +"数不够哦",3000);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
NN_RevData.gameOver = function(data){
|
||
//游戏结束-总
|
||
NN_Desk.gameOver(data);
|
||
NN_RevDataRecord.gameover = data;
|
||
//显示
|
||
var bigWiner = -1;
|
||
if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
|
||
bigWiner = NN_UI.gameOver(data.scores,data.rounds,1);
|
||
//大赢家调用接口
|
||
if(bigWiner == 1){
|
||
Utl.typeForActivity(1,null);
|
||
}
|
||
}else if(NN_Desk.personMax == 10){
|
||
NN_UIP.net.gameOver(data.scores,data.rounds);
|
||
} else {
|
||
NN_UIF.net.gameOver(data.scores,data.rounds);
|
||
}
|
||
|
||
//星星场出现负分提示
|
||
if(data.isAdvance){
|
||
Utl.openTips("玩家"+ NN_config.beanDes +"数不足,游戏提前结束",0);
|
||
}
|
||
};
|
||
|
||
NN_RevData.disbandGame = function(data){
|
||
//游戏结束-解散房间
|
||
NN_Desk.disbandGame(data);
|
||
//显示
|
||
if(NN_Desk.model_fast < 1 && NN_Desk.model != 4 && NN_Desk.model != 5){
|
||
NN_UI.disbandGame(data);
|
||
}else if(NN_Desk.personMax == 10){
|
||
NN_UIP.net.disbandGame(data);
|
||
} else {
|
||
NN_UIF.net.disbandGame(data);
|
||
}
|
||
};
|
||
|
||
NN_RevData.surrender = function(data){
|
||
//投降
|
||
if(NN_Desk && NN_Desk.state != null){
|
||
NN_Desk = null;
|
||
}
|
||
NN_Desk = new NN_deskInfo();
|
||
var _data = NN_Desk.surrender(data);
|
||
//模拟收到总结算包
|
||
NN_RevData.gameOver(_data);
|
||
};
|
||
|
||
NN_RevData.trusteeship = function(data){
|
||
//托管
|
||
NN_Desk.trusteeship(data);
|
||
//显示
|
||
if(data.isAuto == 1){
|
||
//隐藏托管确认框
|
||
NN_UI.trusteeship(false);
|
||
}
|
||
//托管状态显示并提示
|
||
NN_UI.trusteeshipState(true,true,data.seat);
|
||
};
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|