120 lines
2.9 KiB
JavaScript
120 lines
2.9 KiB
JavaScript
///////////////////////////////////////////////////
|
|
//////////////cls_youle_agent_tcplist: tcp连接列表类///////////
|
|
///////////////////////////////////////////////////
|
|
var cls_youle_agent_tcplist = cls_youle_agent_tcplist || {
|
|
new: function() {
|
|
var tcplist = {};
|
|
tcplist.list = [];
|
|
|
|
//方法
|
|
tcplist.method = {};
|
|
|
|
//载入tcp连接
|
|
tcplist.method.load_tcp = function(str_tcpid, o_player, gameidx){
|
|
return cls_youle_agent_tcplist.load_tcp(tcplist, str_tcpid, o_player, gameidx);
|
|
}
|
|
|
|
//查找tcp连接
|
|
tcplist.method.find_tcp = function(str_tcpid){
|
|
return cls_youle_agent_tcplist.find_tcp(tcplist, str_tcpid);
|
|
}
|
|
|
|
//删除tcp连接
|
|
tcplist.method.delete_tcp = function(str_tcpid){
|
|
return cls_youle_agent_tcplist.delete_tcp(tcplist, str_tcpid);
|
|
}
|
|
|
|
return tcplist;
|
|
},
|
|
|
|
//载入tcp连接
|
|
load_tcp: function(o_tcplsit, str_tcpid, o_player, gameidx){
|
|
var idx = cls_youle_agent_tcplist.aryidx(str_tcpid);
|
|
if (idx == -1){
|
|
return null;
|
|
}
|
|
if (o_tcplsit.list.length <= idx){
|
|
o_tcplsit.list.length = idx + 1;
|
|
}
|
|
|
|
var old_tcp = o_tcplsit.list[idx];
|
|
if (old_tcp){
|
|
var _player = old_tcp.o_player;
|
|
if (_player.playerid != o_player.playerid){
|
|
var _gameidx = old_tcp.gameidx;
|
|
if (_player.gameinfo[_gameidx]){
|
|
if (_player.gameinfo[_gameidx].roomcode){
|
|
_player.gameinfo[_gameidx].ip = null;
|
|
_player.gameinfo[_gameidx].conmode = null;
|
|
_player.gameinfo[_gameidx].fromid = null;
|
|
} else {
|
|
//如果不在房间内
|
|
_player.gameinfo[_gameidx] = null;
|
|
//判断是否要释放玩家
|
|
var freeflag = true;
|
|
for (var m = 0; m < _player.gameinfo.length; m++) {
|
|
if (_player.gameinfo[m]){
|
|
freeflag = false;
|
|
break;
|
|
}
|
|
}
|
|
if (freeflag){
|
|
// _player.o_agent.players[_player.playerid - 100001] = null;
|
|
_player.method.open_free_timer();
|
|
}
|
|
|
|
//统计在线玩家数
|
|
var o_game = _player.o_agent.games[_gameidx];
|
|
if (o_game){
|
|
o_game.method.online_p_chang(-1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var new_tcp = {};
|
|
new_tcp.tcpid = str_tcpid;
|
|
new_tcp.o_player = o_player;
|
|
new_tcp.gameidx = gameidx;
|
|
o_tcplsit.list[idx] = new_tcp;
|
|
o_player.method.close_free_timer();
|
|
return new_tcp;
|
|
},
|
|
|
|
//查找tcp连接
|
|
find_tcp: function(o_tcplsit, str_tcpid){
|
|
var idx = cls_youle_agent_tcplist.aryidx(str_tcpid);
|
|
if (idx == -1){
|
|
return null;
|
|
}
|
|
if (o_tcplsit.list.length <= idx){
|
|
return null;
|
|
}
|
|
return o_tcplsit.list[idx];
|
|
},
|
|
|
|
//删除tcp连接
|
|
delete_tcp: function(o_tcplsit, str_tcpid){
|
|
var idx = cls_youle_agent_tcplist.aryidx(str_tcpid);
|
|
if (idx == -1){
|
|
return;
|
|
}
|
|
if (o_tcplsit.list.length <= idx){
|
|
return;
|
|
}
|
|
o_tcplsit.list[idx] = null;
|
|
},
|
|
|
|
//计算tcp连接的数组下标
|
|
aryidx: function(str_tcpid){
|
|
var idx = parseInt(str_tcpid.replace("tcp_", ""));
|
|
if (isNaN(idx)){
|
|
return -1;
|
|
}
|
|
return idx - 10000;
|
|
}
|
|
}
|
|
|
|
//tcp连接列表
|
|
youle_agent.tcps = cls_youle_agent_tcplist.new(); |