164 lines
4.8 KiB
JavaScript
164 lines
4.8 KiB
JavaScript
///////////////////////////////////////////////////////////////
|
|
//////////////// cls_youle_room_agent: 运营商 /////////////////
|
|
///////////////////////////////////////////////////////////////
|
|
var cls_youle_room_agent = cls_youle_room_agent || {
|
|
//构造函数
|
|
new: function(agentid, name, server, tcpport, httpport, freeroom){
|
|
var agent = {};
|
|
agent.agentid = agentid; //运营商id
|
|
agent.agentname = name; //运营商名称
|
|
agent.server = server; //运营商服务器地址
|
|
agent.tcpport = tcpport; //运营商服务器tcp端口
|
|
agent.httpport = httpport; //运营商服务器http端口
|
|
agent.freeroom = freeroom; //默认同意解散房间的倒计时,秒
|
|
|
|
//游戏列表
|
|
agent.games = [];
|
|
|
|
//方法
|
|
agent.method = {};
|
|
//载入游戏(没找到则创建)
|
|
agent.method.load_game = function(gameid, gamename, seatcount, makewar, modename, roomserver, tcpport, httpport, minroomcode, maxroomcode){
|
|
return cls_youle_room_agent.load_game(agent, gameid, gamename, seatcount, makewar, modename, roomserver, tcpport, httpport, minroomcode, maxroomcode);
|
|
};
|
|
//查找游戏
|
|
agent.method.find_game = function(gameid){
|
|
return cls_youle_room_agent.find_game(agent, gameid);
|
|
};
|
|
|
|
return agent;
|
|
},
|
|
|
|
//载入游戏(没找到则创建)
|
|
load_game: function(o_agent, gameid, gamename, seatcount, makewar, modename, roomserver, tcpport, httpport, minroomcode, maxroomcode){
|
|
var idx = cls_youle_room_agent.aryidx_game(gameid);
|
|
if (o_agent.games.length <= idx) {
|
|
o_agent.games.length = idx + 1;
|
|
}
|
|
var o_game = o_agent.games[idx];
|
|
if (!o_game){
|
|
//不存在则创建
|
|
o_game = cls_youle_room_game.new(o_agent, gameid, idx, gamename, seatcount, makewar, modename, roomserver, tcpport, httpport, minroomcode, maxroomcode);
|
|
o_agent.games[idx] = o_game;
|
|
} else {
|
|
o_game.idx = idx;
|
|
o_game.gamename = gamename;
|
|
o_game.seatcount = seatcount;
|
|
o_game.makewar = makewar;
|
|
o_game.modename = modename;
|
|
o_game.roomserver = roomserver;
|
|
o_game.tcpport = tcpport;
|
|
o_game.httpport = httpport;
|
|
o_game.minroomcode = minroomcode;
|
|
o_game.maxroomcode = maxroomcode;
|
|
}
|
|
return o_game;
|
|
},
|
|
|
|
//查找游戏
|
|
find_game: function(o_agent, gameid){
|
|
var idx = cls_youle_room_agent.aryidx_game(gameid);
|
|
if (idx == -1){
|
|
return null;
|
|
}
|
|
if (o_agent.games.length <= idx){
|
|
return null;
|
|
}
|
|
if (!o_agent.games[idx]){
|
|
return null;
|
|
}
|
|
if (o_agent.games[idx].gameid != gameid){
|
|
return null;
|
|
}
|
|
return o_agent.games[idx];
|
|
},
|
|
|
|
//计算游戏的数组下标
|
|
aryidx_game: function(gameid){
|
|
//gameid的5、10、15、20四位组成数组下标
|
|
var idx = parseInt(gameid.substr(4, 1)
|
|
+ gameid.substr(9, 1)
|
|
+ gameid.substr(14, 1)
|
|
+ gameid.substr(19, 1));
|
|
if (isNaN(idx)){
|
|
return -1;
|
|
}
|
|
return idx;
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
/////////// cls_youle_room_agentlist: 运营商列表 //////////
|
|
///////////////////////////////////////////////////////////////
|
|
var cls_youle_room_agentlist = cls_youle_room_agentlist || {
|
|
//构造函数
|
|
new: function() {
|
|
var agentlist = {};
|
|
//代理商列表
|
|
agentlist.list = [];
|
|
|
|
//方法
|
|
agentlist.method = {};
|
|
|
|
//载入代理商(没找到则创建)
|
|
agentlist.method.load_agent = function(agentid, name, server, tcpport, httpport, freeroom){
|
|
var idx = agentlist.method.aryidx_agent(agentid);
|
|
if (idx == -1){
|
|
return null;
|
|
}
|
|
if (agentlist.list.length <= idx) {
|
|
agentlist.list.length = idx + 1;
|
|
}
|
|
var o_agent = agentlist.list[idx];
|
|
if (!o_agent) {
|
|
//不存在则创建
|
|
o_agent = cls_youle_room_agent.new(agentid, name, server, tcpport, httpport, freeroom);
|
|
agentlist.list[idx] = o_agent;
|
|
} else {
|
|
o_agent.agentname = name;
|
|
o_agent.server = server;
|
|
o_agent.tcpport = tcpport;
|
|
o_agent.httpport = httpport;
|
|
o_agent.freeroom = freeroom;
|
|
}
|
|
return o_agent;
|
|
};
|
|
|
|
//查找运营商
|
|
agentlist.method.find_agent = function(agentid){
|
|
var idx = agentlist.method.aryidx_agent(agentid);
|
|
if (idx == -1){
|
|
return null;
|
|
}
|
|
if (agentlist.list.length <= idx){
|
|
return null;
|
|
}
|
|
if (!agentlist.list[idx]){
|
|
return null;
|
|
}
|
|
if (agentlist.list[idx].agentid != agentid){
|
|
return null;
|
|
}
|
|
return agentlist.list[idx];
|
|
};
|
|
|
|
//计算运营商的数组下标
|
|
agentlist.method.aryidx_agent = function(agentid) {
|
|
//agentid的5、10、15、20四位组成数组下标
|
|
var idx = parseInt(agentid.substr(4, 1)
|
|
+ agentid.substr(9, 1)
|
|
+ agentid.substr(14, 1)
|
|
+ agentid.substr(19, 1));
|
|
if (isNaN(idx)){
|
|
return -1;
|
|
}
|
|
return idx;
|
|
};
|
|
|
|
return agentlist;
|
|
}
|
|
}
|
|
|
|
//运营商列表
|
|
youle_room.agents = cls_youle_room_agentlist.new();
|