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