import { CardClientWebSocket } from '../../../GameCard/Net/CardClientWebSocket'; import { ISocketServer } from 'cgserver'; import { ECardType } from '../Logic/TexasTool'; import { TexasTable } from '../Logic/Table/TexasTable'; import { TexasServer } from '../Logic/TexasServer'; import { EErrorCode } from '../Config/_error_'; import { MatchModel } from '../../../Common/Service/MatchService'; import { MatchInsModel } from '../../../Common/Service/MatchInstanceService'; import { BlindItem } from '../../../Common/Service/BlindService'; /* 主动和center服连接,交换比赛信息,游戏的最核心玩法 */ export class TexasClientWebSocket extends CardClientWebSocket { get server() { return this._server as TexasServer } constructor(server:ISocketServer) { super(server) this._debug_msg=false } get table() { return this._table as TexasTable } onClose(reasonCode: number, description: string) { let ret = super.onClose(reasonCode,description) if(this._user) { this.server.matchMgr.onLeave(this._user.id) } return ret } async receive_enter_match(jsonData) { let ins_id = jsonData.ins_id let match = this.server.matchMgr.getMatch(ins_id) if(!match) { this.send_enter_match(this._user?.id,null,EErrorCode.Match_Not_Exist) return } let ret = await match.onEnter(this._user.id) this._table=ret.table if(ret.errcode) { this.send_enter_match(this._user?.id,null,ret.errcode) } } send_enter_match(user_id:number,matchInsM:MatchInsModel,errcode=null) { let msg = this.getNewMsg("enter_match",errcode) msg.matchInsM=matchInsM this._sendTo(user_id,msg) } send_beginbet_bc(list:number|number[],data:any) { let msg = this.getNewMsg("beginbet_bc") msg={...msg,...data} this._sendTo(list,msg) } receive_bet(jsonData) { let table_id = jsonData.table_id let table = this.cardServer.tableMgr.getTableByTableId(table_id) as TexasTable if(!table) { this.send_error_cmd("bet",table_id,EErrorCode.Not_In_Table) return } let errcode=table.onBet(this._user.id,jsonData.bet) if(errcode) { this.send_error_cmd("bet",table_id,errcode) } } send_bet_bc(list:number|number[],data:any) { let msg = this.getNewMsg("bet_bc") msg={...msg,...data} this._sendTo(list,msg) } send_dealcard(table_id:number,user_id:number,cards:number[],cardtype:ECardType) { let msg = this.getNewMsg("dealcard") msg.cards=cards msg.cardtype=cardtype msg.table_id=table_id this._sendTo(user_id,msg) } send_dealcard_bc(list:number|number[],table_id:number,cards:number[]) { let msg = this.getNewMsg("dealcard_bc") msg.cards=cards msg.table_id=table_id this._sendTo(list,msg) } send_waitcombine_bc(table_id:number,list:number|number[]) { let msg = this.getNewMsg("waitcombine_bc") msg.table_id=table_id this._sendTo(list,msg) } send_match_end(ins_id:string) { let msg = this.getNewMsg("match_end") msg.ins_id=ins_id this.server.broadCast(msg) } send_idle_bc(list:number|number[],table_id:number,deadline) { let msg = this.getNewMsg("idle_bc") msg.deadline = deadline msg.table_id = table_id this._sendTo(list,msg) } send_upgradeblind_bc(list:number|number[],table_id:number,blind_level:number,blinditem:BlindItem,deadline:number) { let msg = this.getNewMsg("upgradeblind_bc") msg.table_id = table_id msg.blind_level = blind_level msg.blinditem = blinditem msg.deadline = deadline this._sendTo(list,msg) } }