Files
youle_cocos/projects/niuniu/js/niuniu/nn_net.js
T
joywayerandClaude Opus 4.8 7ab748919a chore: 纳入项目全部源码进根仓库统一管理
删除 YouleNexus 内嵌 .git,统一由根仓库唯一管理。提交:
- projects/ 旧 H5 模板 Game_Surface_3 与各子游戏源码
- cocoscreator_projects/YouleNexus 工程 + cocos-creator-mcp 扩展源码
- CLAUDE.md、.mcp.json 等配置
library/temp/node_modules/dist 等缓存由 .gitignore 排除。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 11:55:13 +08:00

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);
};