157 lines
4.8 KiB
JavaScript
157 lines
4.8 KiB
JavaScript
///////////////////////////////////////////////////
|
|
///////// cls_youle_room_player: 玩家 /////////
|
|
///////////////////////////////////////////////////
|
|
var cls_youle_room_player = cls_youle_room_player || {
|
|
//构造函数
|
|
new: function(playerid, nickname, avatar, sex, playertype, ip, onstate, conmode, fromid){
|
|
var player = {};
|
|
//基本信息
|
|
player.playerid = playerid; //玩家id
|
|
player.nickname = nickname;
|
|
player.avatar = avatar;
|
|
player.sex = sex;
|
|
player.playertype = playertype;
|
|
player.ip = ip;
|
|
player.onstate = onstate; //在线状态 null未连接 0在线 1离线 2电话中
|
|
player.conmode = conmode; //连接方式
|
|
player.fromid = fromid; //连接id
|
|
|
|
//初始化游戏数据
|
|
player.gameinfo = {};
|
|
player.gameinfo.o_game = null; //所在的游戏
|
|
player.gameinfo.o_room = null; //所在的房间
|
|
player.gameinfo.seat = -1; //房间内的位置
|
|
player.gameinfo.isowner = -1; //房主标志 0:非房主 1:是房主
|
|
player.gameinfo.agree = -1; //是否同意解散房间 0:申请解散 1:同意解散
|
|
player.gameinfo.isbet = -1; //下注标志 0:未下注可离开房间 1:已下注不可离开房间
|
|
player.gameinfo.grade = 0; //在房间内的得分
|
|
|
|
//在定义中没有写入的后加属性
|
|
//player.gameinfo.isprepare = 0; //是否准备
|
|
|
|
//方法
|
|
player.method = {};
|
|
|
|
//获取玩家的基础信息
|
|
player.method.get_info = function(){
|
|
return cls_youle_room_player.get_info(player);
|
|
}
|
|
|
|
//进入房间
|
|
player.method.enter_room = function(o_room, seat, isowner){
|
|
cls_youle_room_player.enter_room(player, o_room, seat, isowner);
|
|
}
|
|
|
|
//退出房间
|
|
player.method.exit_room = function(){
|
|
cls_youle_room_player.exit_room(player);
|
|
}
|
|
|
|
return player;
|
|
},
|
|
|
|
//获取玩家的基础信息
|
|
get_info: function(o_player){
|
|
var info = {};
|
|
info.playerid = o_player.playerid;
|
|
info.nickname = o_player.nickname;
|
|
info.avatar = o_player.avatar;
|
|
info.sex = o_player.sex;
|
|
info.ip = o_player.ip;
|
|
info.onstate = o_player.onstate;
|
|
info.isprepare= o_player.gameinfo.isprepare;
|
|
if (o_player.isrobot){
|
|
info.bean = o_player.bean;
|
|
} else {
|
|
info.bean = null;
|
|
}
|
|
if (o_player.paycode) {
|
|
info.paycode = o_player.paycode;
|
|
}
|
|
info.bean = o_player.bean;
|
|
return info;
|
|
},
|
|
|
|
//进入房间
|
|
enter_room: function(o_player, o_room, seat, isowner){
|
|
o_player.gameinfo.o_game = o_room.o_game;
|
|
o_player.gameinfo.o_room = o_room;
|
|
o_player.gameinfo.seat = seat;
|
|
o_player.gameinfo.isowner = isowner;
|
|
o_player.gameinfo.isbet = 0;
|
|
o_player.gameinfo.agree = -1;
|
|
o_player.gameinfo.grade = 0;
|
|
|
|
if (o_room.needprepare){
|
|
o_player.gameinfo.isprepare = 0;
|
|
} else {
|
|
o_player.gameinfo.isprepare = 1;
|
|
}
|
|
|
|
o_room.seatlist[seat] = o_player;
|
|
if (isowner){
|
|
o_room.owner = o_player;
|
|
}
|
|
|
|
//更新tcp连接列表
|
|
if (o_player.conmode == "tcp"){
|
|
youle_room.tcps.method.load_tcp(o_player.fromid, o_player);
|
|
}
|
|
|
|
//记录当前机器人数量
|
|
if (o_player.isrobot){
|
|
if (o_room.roommode){
|
|
if (!o_room.o_game.robotcount){
|
|
o_room.o_game.robotcount = 1;
|
|
} else {
|
|
o_room.o_game.robotcount = o_room.o_game.robotcount + o_room.beanmult;
|
|
}
|
|
// console.log('++机器人: ' + o_room.o_game.robotcount);
|
|
}
|
|
} else {
|
|
if (o_room.sysroom){
|
|
if (!o_room.o_game.sysroom_playercount){
|
|
o_room.o_game.sysroom_playercount = [];
|
|
}
|
|
for (var i = 0; i < o_room.o_game.sysroom_playercount.length; i++) {
|
|
if (JSON.stringify(o_room.o_game.sysroom_playercount[i].roomtype) == JSON.stringify(o_room.roomtype)){
|
|
o_room.o_game.sysroom_playercount[i].playercount = o_room.o_game.sysroom_playercount[i].playercount + 1;
|
|
return;
|
|
}
|
|
};
|
|
var _v = {};
|
|
_v.roomtype = o_room.roomtype;
|
|
_v.playercount = 1;
|
|
o_room.o_game.sysroom_playercount.push(_v);
|
|
}
|
|
}
|
|
},
|
|
|
|
//退出房间
|
|
exit_room: function(o_player){
|
|
//更新tcp连接列表
|
|
if (o_player.conmode == "tcp"){
|
|
youle_room.tcps.method.delete_tcp(o_player.fromid);
|
|
}
|
|
|
|
o_player.gameinfo.o_room.seatlist[o_player.gameinfo.seat] = null;
|
|
|
|
//记录当前机器人数量
|
|
if (o_player.isrobot){
|
|
if (o_player.gameinfo.o_room.roommode){
|
|
o_player.gameinfo.o_game.robotcount = o_player.gameinfo.o_game.robotcount - o_player.gameinfo.o_room.beanmult;
|
|
// console.log('--机器人: ' + o_player.gameinfo.o_room.o_game.robotcount);
|
|
}
|
|
} else {
|
|
if (o_player.gameinfo.o_room.sysroom){
|
|
for (var i = 0; i < o_player.gameinfo.o_game.sysroom_playercount.length; i++) {
|
|
if (JSON.stringify(o_player.gameinfo.o_game.sysroom_playercount[i].roomtype) == JSON.stringify(o_player.gameinfo.o_room.roomtype)){
|
|
o_player.gameinfo.o_game.sysroom_playercount[i].playercount = o_player.gameinfo.o_game.sysroom_playercount[i].playercount - 1;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|