Files
youlegames/codes/games/sales_service/youle/server_room/class.player.js
2026-02-04 23:47:45 +08:00

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