Files
youlegames/codes/games/client/Projects/niuniu/js/niuniu/nn_net.js
2026-02-04 23:47:45 +08:00

590 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
网络
*/
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);
};