var GameExitCode_Normal = 0; //正常退出 var GameExitCode_CreateFailed = 1; //创建失败 var GameExitCode_Timeout = 2; //定时到时 var GameExitCode_Shutdown = 3; //断开连接 var CServerItem = cc.Class({ extends: cc.Component, properties: { }, ctor :function () { this.mReqTableID = INVALID_TABLE; this.mServiceStatus = ServiceStatus_Unknow; this.mGameServer = null; this.mServerAttribute = null; this.mSocketEngine = null; this.mIStringMessageSink = null; this.mUserManager = null; this.mMeUserItem = 0; this.mUserAttribute = null; this.mReconnecting = false; this.mInterval = null; this.mIntervalTime = 0; this.mServerHeartTime = 0; this.mHeartStatTime = 0; }, //设置接口 SetServerItemSink :function(pIServerItemSink){ this.mServerAttribute = new tagServerAttribute(); this.mUserManager = new CPlazaUserManager(this); this.mUserAttribute = new tagUserAttribute(); this.mIServerItemSink = pIServerItemSink; return true; }, //设置接口 SetStringMessageSink :function(pIStringMessageSink){ this.mIStringMessageSink = pIStringMessageSink; return true; }, //比赛框架 GetMatchViewFrame :function(){ return this.mMatchViewFrame; }, //房间属性 GetServerAttribute:function (){ return this.mServerAttribute; }, //设置状态 SetServiceStatus :function(ServiceStatus){ //设置变量 this.mServiceStatus=ServiceStatus; }, //是否服务状态 IsService:function (){ return this.mServiceStatus == ServiceStatus_ServiceIng; }, //服务状态 GetServiceStatus:function (){ return this.mServiceStatus; }, //自己位置 GetMeUserItem :function() { return this.mMeUserItem; }, //配置房间 SetServerAttribute:function (pGameServerItem,wAVServerPort,dwAVServerAddr) { //房间属性 this.mGameServer = pGameServerItem; this.mServerAttribute.wKindID = this.mGameServer.wKindID; this.mServerAttribute.wServerID = this.mGameServer.wServerID; this.mServerAttribute.wAVServerPort = this.mGameServer.wAVServerPort; this.mServerAttribute.dwAVServerAddr = this.mGameServer.dwAVServerAddr; this.mServerAttribute.szServerName = this.mGameServer.szServerName; return true; }, //配置房间 ConnectServer:function (pGameServerItem,wAVServerPort,dwAVServerAddr) { if (this.mServiceStatus != ServiceStatus_Unknow && this.mServiceStatus != ServiceStatus_NetworkDown){ if (this.mIStringMessageSink) this.mIStringMessageSink.InsertPromptString("很抱歉,此遊戲房間還未關閉,請先關閉!!"+this.mServiceStatus); return false; } //房间属性 this.SetServerAttribute(pGameServerItem, wAVServerPort, dwAVServerAddr); //关闭判断 if (this.mServerAttribute.wServerID==0){ this.SetServiceStatus(ServiceStatus_Unknow); if (this.mIStringMessageSink) this.mIStringMessageSink.InsertPromptString("很抱歉,此遊戲房間已經關閉了,不允許繼續進入!"); return false; } //创建组件 this.mSocketEngine = new cc.CSocketEngine(this); this.mSocketEngine.connect(this.mGameServer.szServerAddr, this.mGameServer.wServerPort); //设置状态 this.SetServiceStatus(ServiceStatus_Entering); return true; }, OnErr:function(){ if (this.mIServerItemSink) return this.mIServerItemSink.OnGFServerReLink(); }, //发送登录 SendLogonPacket:function (){ //变量定义 var LogonUserID = new CMD_GR_LogonUserID(); //变量定义 var pGlobalUserData=g_GlobalUserInfo.GetGlobalUserData(); //登录信息 LogonUserID.dwUserID = pGlobalUserData.dwUserID; LogonUserID.szPassword = pGlobalUserData.szDynamicPass; LogonUserID.szServerPasswd = LogonUserID.szServerPasswd; LogonUserID.wKindID = this.mServerAttribute.wKindID; LogonUserID.szMachineID = 'creator'; //发送数据 this.SendSocketClass(MDM_GR_LOGON, SUB_GR_LOGON_USERID, LogonUserID); return true; }, //发送函数 SendSocketData :function(wMainCmdID, wSubCmdID, data, dataSize){ return this.mSocketEngine.send(wMainCmdID, wSubCmdID, data, dataSize); }, //发送函数 SendSocketClass :function (wMainCmdID, wSubCmdID, Obj){ return this.mSocketEngine.sendClass(wMainCmdID, wSubCmdID, Obj); }, ////////////////////////////////////////////////////////////////////////// // Socket消息 // 发送数据 GFSendData :function(main, sub, data, size){ return this.SendSocketData(main, sub, data, size); }, //中断连接 IntermitConnect :function(bBackLobby){ if (this.mServiceStatus==ServiceStatus_Unknow || this.mServiceStatus==ServiceStatus_NetworkDown)return false;// if (this.IsService()){ var kernel = gClientKernel.get(); if(kernel) kernel.Intermit(0); } this.mIServerItemSink = null; this.mIntervalTime = new Date().getTime(); this.mInterval = bBackLobby; return true; }, CloseSocket:function (dt) { //设置状态 this.SetServiceStatus(ServiceStatus_NetworkDown); this.mSocketEngine.closesocket(); this.mReqTableID = INVALID_TABLE; this.mReqChairID = INVALID_CHAIR; this.mIsGameReady = false; this.mMeUserItem = 0; this.mServerHeartTime = 0; this.mUserManager.ResetUserItem(true); var kernel = gClientKernel.get(); if(kernel)kernel.ResetUserItem(); }, update :function (dt) { if(!this.mInterval) return; //检查锁屏 var timestamp=new Date().getTime(); if(timestamp-this.mIntervalTime>=500){ this.mInterval = null; this.CloseSocket(); gClientKernel.destory(); ChangeScene('Lobby'); } }, //游戏已准备好 OnGFGameReady :function() { //变量定义 var wTableID = this.mMeUserItem.GetTableID(); var wChairID = this.mMeUserItem.GetChairID(); var dwMeUserID = this.mMeUserItem.GetUserID(); var pClientKernel = gClientKernel.get(); this.mUserAttribute.wChairID = wChairID; this.mUserAttribute.wTableID = wTableID; //房间信息 pClientKernel.OnGFConfigServer(this.mUserAttribute, this.mServerAttribute); pClientKernel.OnGFUserEnter(this.mMeUserItem); //发送用户 if ((wTableID!=INVALID_TABLE)&&(wChairID!=INVALID_CHAIR)) { //变量定义 var wEnumIndex = 0; //发送玩家 while (true) { //获取用户 var pIClientUserItem = this.mUserManager.EnumUserItem(wEnumIndex++); if (pIClientUserItem == 0) break; //发送判断 if (pIClientUserItem.GetUserID() == dwMeUserID) continue; if (pIClientUserItem.GetTableID() != wTableID) continue; if (pIClientUserItem.GetUserStatus() == US_LOOKON) continue; //发送用户 pClientKernel.OnGFUserEnter(pIClientUserItem); }; //旁观用户 wEnumIndex=0; while (true){ //获取用户 pIClientUserItem=this.mUserManager.EnumUserItem(wEnumIndex++); if (pIClientUserItem==0) break; //发送判断 if (pIClientUserItem.GetUserID() == dwMeUserID) continue; if (pIClientUserItem.GetTableID()!=wTableID) continue; if (pIClientUserItem.GetUserStatus()!=US_LOOKON) continue; //发送用户 pClientKernel.OnGFUserEnter(pIClientUserItem); }; } //配置完成 pClientKernel.OnGFConfigFinish(); this.mIsGameReady = true; }, //游戏关闭 OnGFGameClose :function(iExitCode){ //效验状态 if (this.mMeUserItem==0) return ; this.mIsGameReady = false; //变量定义 var wTableID=this.mMeUserItem.GetTableID(); var wChairID=this.mMeUserItem.GetChairID(); var cbUserStatus=this.mMeUserItem.GetUserStatus(); this.mUserAttribute.wChairID = INVALID_CHAIR; this.mUserAttribute.wTableID = INVALID_TABLE; //退出游戏 if ((wTableID!=INVALID_TABLE)&&(this.mServiceStatus==ServiceStatus_ServiceIng)) { this.SendStandUpPacket(wTableID,wChairID,1); } this.mTableViewFrame.SetTableStatus1(false); }, onEventTCPSocketLink :function(){ this.mServerHeartTime = new Date().getTime(); if(this.mIServerItemSink)this.mIServerItemSink.StopLoading(); if(window.ReLinkTime != null){ if(window.LOG_NET_DATA)console.log("onEventTCPSocketLink "+window.ReLinkTime) window.ReLinkTime = null; var kernel = gClientKernel.get(); kernel.mIClientKernelSink.OnClearScene(); if(kernel.mIClientKernelSink.m_DisCtrl && kernel.mIClientKernelSink.m_DisCtrl.node.active){ kernel.mIClientKernelSink.m_DisCtrl.node.active = false; g_TimerEngine.UnPauseGameTimer(); } } this.SendLogonPacket(); }, onEventTCPSocketShut :function(){ //设置状态 this.SetServiceStatus(ServiceStatus_NetworkDown); if (this.mIServerItemSink && this.mInterval != null) return this.mIServerItemSink.OnGFServerReLink(); }, onEventTCPSocketRead :function(main, sub, data, dataSize){ //try { switch (main){ //登录消息 case MDM_GR_LOGON: return this.OnSocketMainLogon(sub,data,dataSize); //配置信息 case MDM_GR_CONFIG: return this.OnSocketMainConfig(sub,data,dataSize); //用户信息 case MDM_GR_USER: return this.OnSocketMainUser(sub,data,dataSize); //状态信息 case MDM_GR_STATUS: return this.OnSocketMainStatus(sub,data,dataSize); //银行消息 case MDM_GR_INSURE: return OnSocketMainInsure(sub,data,dataSize); //管理消息 case MDM_GR_MANAGE: return OnSocketMainManager(sub,data,dataSize); //管理消息 case MDM_CM_SYSTEM: return this.OnSocketMainSystem(sub,data,dataSize); //游戏消息 case MDM_GF_GAME: case MDM_GF_CARDROOM: case MDM_GF_FRAME: return this.OnSocketMainGameFrame(main,sub,data,dataSize); //比赛消息 case MDM_GR_MATCH: return this.OnSocketMainMatch(sub,data,dataSize); } return true; /*} catch (error) { if(window.LOG_NET_DATA)console.log('onEventTCPSocketRead err!!! '+main+'-'+sub+' size:'+dataSize) if(window.LOG_NET_DATA)console.log(error) }*/ }, //登录消息 OnSocketMainLogon :function(sub, data, dataSize) { switch (sub){ //登录成功 case SUB_GR_LOGON_SUCCESS: return this.OnSocketSubLogonSuccess(data,dataSize); //登录失败 case SUB_GR_LOGON_ERROR: return this.onSocketSubLogonFailure(data,dataSize); //登录完成 case SUB_GR_LOGON_FINISH: return this.OnSocketSubLogonFinish(data,dataSize); //更新提示 case SUB_GR_UPDATE_NOTIFY: return this.OnSocketSubUpdateNotify(data,dataSize); } return true; }, //配置信息 OnSocketMainConfig :function(sub, data, dataSize) { switch (sub){ //房间配置 case SUB_GR_CONFIG_SERVER: return this.OnSocketSubConfigServer(data, dataSize); //列表配置 case SUB_GR_CONFIG_COLUMN: return true; //道具配置 case SUB_GR_CONFIG_PROPERTY: return true; //配置玩家权限 case SUB_GR_CONFIG_USER_RIGHT: return true; //配置完成 case SUB_GR_CONFIG_FINISH: return true; } return true; }, //比赛消息 OnSocketMainMatch :function(sub, data, dataSize){ switch (sub){ //费用查询 case SUB_GR_MATCH_FEE: return this.OnSocketSubMatchFee(data,dataSize); //金币更新 case SUB_GR_MATCH_GOLDUPDATE: return this.OnSocketSubMatchGold(data, dataSize); } return this.mMatchViewFrame.OnEventViewData(sub, data, dataSize); }, //心跳消息 OnSocketHeart :function(){ if( this.mInterval != null) return true; //服务器端返回的心跳 this.mServerHeartTime = new Date().getTime(); window.g_NetResponseTime = this.mServerHeartTime - this.mHeartStatTime; return true; }, //比赛费用 OnSocketSubMatchFee :function(data, dataSize) { var pMatchFee = new CMD_GR_Match_Fee(); //参数效验 if (dataSize>pMatchFee.getSize()) return false; //提取数据 pMatchFee.lMatchFee = gCByte.r4(data,pMatchFee.index_lMatchFee); pMatchFee.szNotifyContent = gCByte.rStr(data,pMatchFee.index_szNotifyContent); if (pMatchFee.lMatchFee>0) { if (this.mIStringMessageSink) { this.mIStringMessageSink.InsertMatchJoinString(pMatchFee.lMatchFee); } } return true; }, //更新金币 OnSocketSubMatchGold :function(data, dataSize) { var pMatchGoldUpdate = new CMD_GR_MatchGoldUpdate(); //参数校验 if (pMatchGoldUpdate.getSize() != dataSize) return false; //提取数据 pMatchGoldUpdate.lCurrGold = gCByte.r8(data,pMatchGoldUpdate.index_lCurrGold); pMatchGoldUpdate.lCurrIngot = gCByte.r8(data,pMatchGoldUpdate.index_lCurrIngot); pMatchGoldUpdate.dwCurrExprience = gCByte.r4(data,pMatchGoldUpdate.index_dwCurrExprience); //变量定义 var pGlobalUserData = g_GlobalUserInfo.GetGlobalUserData(); //设置变量 pGlobalUserData.llUserScore = pMatchGoldUpdate.lCurrGold; pGlobalUserData.llUserIngot = pMatchGoldUpdate.lCurrIngot; pGlobalUserData.dwExperience = pMatchGoldUpdate.dwCurrExprience; return true; }, //登录失败 onSocketSubLogonFailure :function(data, size){ //变量定义 var pLogonFailure = new CMD_GR_LogonFailure(); gCByte.Bytes2Str(pLogonFailure,data); //显示消息 if (this.mIStringMessageSink) this.mIStringMessageSink.InsertPromptStringAndClose(pLogonFailure.szErrorDescribe); return true; }, //登录成功 OnSocketSubLogonSuccess :function(data,dataSize) { this.mIsQuickSitDown = false; //设置状态 this.SetServiceStatus(ServiceStatus_RecvInfo); //if (this.mIServerItemSink) // this.mIServerItemSink.OnGRLogonSuccess(); return true; }, //登录完成 OnSocketSubLogonFinish :function(data, dataSize) { //设置状态 this.SetServiceStatus(ServiceStatus_ServiceIng); this.mUserAttribute.dwUserID=this.mMeUserItem.GetUserID(); this.mUserAttribute.wChairID=INVALID_CHAIR; this.mUserAttribute.wTableID=INVALID_TABLE; if (this.mIServerItemSink) this.mIServerItemSink.OnGRLogonFinish(); return true; }, //登录完成 OnSocketSubUpdateNotify :function(data, dataSize) { if (this.mIServerItemSink) this.mIStringMessageSink.InsertPromptStringAndClose("遊戲版本不匹配"); return true; }, //房间配置 OnSocketSubConfigServer :function(data,dataSize) { var pConfigServer = new CMD_GR_ConfigServer(); //效验数据 if (dataSizeszDescribeString, szDescribeString, sizeof(pRequestFailure->szDescribeString)); mIServerItemSink->OnGFServerClose(szDescribeString); } } */ }else{ //提示消息 if (this.mIServerItemSink) this.mIServerItemSink.onGRRequestFailure(pRequestFailure.szDescribeString); } return true; }, //用户积分 OnSocketSubUserScore: function (data, dataSize) { // 创建一个CMD_GR_UserScore对象实例 var pUserScore = new CMD_GR_UserScore(); // 校验接收到的数据大小是否与CMD_GR_UserScore对象解析后的数据大小一致 // 使用gCByte.Bytes2Str方法将字节数据转换为字符串,并与dataSize进行比较 // 如果不一致,返回false,表示数据校验失败 if (dataSize != gCByte.Bytes2Str(pUserScore, data)) return false; // 根据用户ID从用户管理器中搜索对应的用户项 // pUserScore.dwUserID包含了要查找的用户ID var pIClientUserItem = this.mUserManager.SearchUserByUserID(pUserScore.dwUserID); // 判断用户项是否存在 // 如果用户项不存在(返回0),则不需要进一步处理,直接返回true // 注意:这里的判断条件应该是pIClientUserItem === null 或 pIClientUserItem === undefined, // 根据实际代码逻辑,0可能是为了表示未找到用户,这在某些特定实现中可能是合理的 if (pIClientUserItem == 0) return true; // 获取全局用户数据 // pGlobalUserData是一个包含全局用户信息的对象 var pGlobalUserData = g_GlobalUserInfo.GetGlobalUserData(); // 更新全局用户数据中的用户分数和金币数 // 首先检查全局用户数据中的dwUserID是否与接收到的用户ID一致 if (pGlobalUserData.dwUserID == pUserScore.dwUserID) { // 如果服务器类型为GAME_GENRE_GOLD,则更新用户的分数 // 注意:这里假设llUserScore是用户的分数,llIngot是用户的金币数 if (this.mServerAttribute.wServerType == GAME_GENRE_GOLD) { pGlobalUserData.llUserScore = pUserScore.UserScore.llScore; } // 无论服务器类型如何,都更新用户的金币数 pGlobalUserData.llUserIngot = pUserScore.UserScore.llIngot; } // 更新用户管理器中用户项的分数 // this.mUserManager.UpdateUserItemScore方法用于更新用户项的分数 this.mUserManager.UpdateUserItemScore(pIClientUserItem, pUserScore.UserScore); // 返回true,表示数据处理成功 return true; }, //用户进入 OnSocketSubUserEnter :function(data, dataSize) { //消息处理 var pUserInfoHead = new tagUserInfoHead(); var readSize = gCByte.Bytes2Str(pUserInfoHead,data); //效验参数 if (dataSize=US_SIT)&&(cbUserStatus!=US_LOOKON)){ var wTableID=pIClientUserItem.GetTableID(); var wChairID=pIClientUserItem.GetChairID(); this.mTableViewFrame.SetClientUserItem2(wTableID, wChairID, pIClientUserItem); } }, //状态信息 OnSocketMainStatus:function (sub,data,dataSize) { switch (sub) { //桌子信息 case SUB_GR_TABLE_INFO: return this.OnSocketSubStatusTableInfo(data, dataSize); //桌子状态 case SUB_GR_TABLE_STATUS: return this.OnSocketSubStatusTableStatus(data, dataSize); } return true; }, //桌子信息 OnSocketSubStatusTableInfo :function(data, dataSize){ //变量定义 var pTableInfo = new CMD_GR_TableInfo(); if(dataSize < gCByte.Bytes2Str(pTableInfo,data)) return false; pTableInfo.TableStatusArray = new Array(); for(var i = 0;i=US_PLAYING) { return true; //提示消息 if (this.mIStringMessageSink) this.mIStringMessageSink.InsertPromptString("您正在遊戲中,暫時不能離開,請先結束當前遊戲!"); return false; } //清理界面 if ((this.mReqTableID!=INVALID_TABLE)&&(this.mReqChairID!=INVALID_CHAIR)&&(this.mReqChairID!=MAX_CHAIR)) { pIClientUserItem = this.mTableViewFrame.GetClientUserItem(this.mReqTableID, this.mReqChairID); if (pIClientUserItem == this.mMeUserItem) this.mTableViewFrame.SetClientUserItem2(mReqTableID, mReqChairID, null); } //设置界面 if ((wChairID!=MAX_CHAIR)&&(wTableID!=INVALID_TABLE)&&(wChairID!=INVALID_CHAIR)) { this.mTableViewFrame.VisibleTable(wTableID); this.mTableViewFrame.SetClientUserItem2(wTableID, wChairID, this.mMeUserItem); } //设置变量 this.mReqTableID=wTableID; this.mReqChairID=wChairID; this.mFindTableID=INVALID_TABLE; //发送命令 this.SendSitDownPacket(wTableID,wChairID,""); return true; }, //执行坐下 PerformEnterRoom:function() { if(window.LOG_NET_DATA)console.log("进入房间 ", window.g_dwRoomID); if (!this.IsService()) return false; //状态过滤 if (this.mServiceStatus!=ServiceStatus_ServiceIng) return false; //自己状态 if (this.mMeUserItem.GetUserStatus() >= US_PLAYING && this.mMeUserItem.GetTableID() != INVALID_CHAIR){ return true; //提示消息 if (this.mIStringMessageSink) this.mIStringMessageSink.InsertPromptString("您正在遊戲中,暫時不能離開,請先結束當前遊戲!"); return false; } /* //清理界面 if ((this.mReqTableID!=INVALID_TABLE)&&(this.mReqChairID!=INVALID_CHAIR)&&(this.mReqChairID!=MAX_CHAIR)){ pIClientUserItem = this.mTableViewFrame.GetClientUserItem(this.mReqTableID, this.mReqChairID); if (pIClientUserItem == this.mMeUserItem) this.mTableViewFrame.SetClientUserItem2(mReqTableID, mReqChairID, null); } //设置界面 if ((wChairID!=MAX_CHAIR)&&(wTableID!=INVALID_TABLE)&&(wChairID!=INVALID_CHAIR)){ this.mTableViewFrame.VisibleTable(wTableID); this.mTableViewFrame.SetClientUserItem2(wTableID, wChairID, this.mMeUserItem); } */ //发送命令 //if(g_ServerListDataLast.wServerType & (GAME_GENRE_PERSONAL|GAME_GENRE_CLUB)){ if( window.g_dwRoomID > 0){ var UserSitDown = new CMD_GR_UserEnterRoom(); UserSitDown.dwRoomID = window.g_dwRoomID; UserSitDown.dwClubID = window.g_dwClubID; this.SendSocketClass(MDM_GR_USER, SUB_GR_USER_ENTER_ROOM, UserSitDown); }else{ if(window.LOG_NET_DATA)console.log('PerformEnterRoom window.g_dwRoomID null') this.IntermitConnect(true); } //} return true; }, OnUserItemDelete:function (pIClientUserItem) { //变量定义 var wLastTableID = pIClientUserItem.GetTableID(); var wLastChairID = pIClientUserItem.GetChairID(); var dwLeaveUserID = pIClientUserItem.GetUserID(); var pMeUserInfo = this.mMeUserItem.GetUserInfo(); //离开处理 if ((wLastTableID!=INVALID_TABLE)&&(wLastChairID!=INVALID_CHAIR)) { //获取用户 var pITableUserItem= this.mTableViewFrame.GetClientUserItem(wLastTableID,wLastChairID); if (pITableUserItem==pIClientUserItem) this.mTableViewFrame.SetClientUserItem2(wLastTableID,wLastChairID,null); //离开通知 if ((pIClientUserItem==this.mMeUserItem)||(wLastTableID==pMeUserInfo.wTableID)) { var UserStatus = new tagUserStatus(); UserStatus.cbUserStatus=US_NULL; UserStatus.wTableID=INVALID_TABLE; UserStatus.wChairID=INVALID_CHAIR; if (gClientKernel.get()) gClientKernel.get().OnGFUserStatus(pIClientUserItem.GetUserID(), UserStatus); } } }, OnUserItemUpdate2:function (pIClientUserItem,tLastScore) { //变量定义 var pUserInfo = pIClientUserItem.GetUserInfo(); var pMeUserInfo = this.mMeUserItem.GetUserInfo(); var wNowTableID=pIClientUserItem.GetTableID(); var wLastTableID=tLastScore.wTableID; var wNowChairID=pIClientUserItem.GetChairID(); var wLastChairID=tLastScore.wChairID; var cbNowStatus=pIClientUserItem.GetUserStatus(); var cbLastStatus=tLastScore.cbUserStatus; var pClientKernel = gClientKernel.get(); //桌子离开 if ((wLastTableID!=INVALID_TABLE)&&((wLastTableID!=wNowTableID)||(wLastChairID!=wNowChairID))) { var pITableUserItem = this.mTableViewFrame.GetClientUserItem(wLastTableID, wLastChairID); if (pITableUserItem == pIClientUserItem) this.mTableViewFrame.SetClientUserItem2(wLastTableID, wLastChairID, null); } //桌子加入 if ((wNowTableID!=INVALID_TABLE)&&(cbNowStatus!=US_LOOKON)&&((wNowTableID!=wLastTableID)||(wNowChairID!=wLastChairID))) { this.mTableViewFrame.SetClientUserItem2(wNowTableID,wNowChairID,pIClientUserItem); } //桌子状态 if ((this.mTableViewFrame.GetChairCount() < MAX_CHAIR)&&(wNowTableID!=INVALID_TABLE)&&(wNowTableID==wLastTableID)&&(wNowChairID==wLastChairID)) { this.mTableViewFrame.UpdateTableView(wNowTableID); } //离开通知 if ((wLastTableID!=INVALID_TABLE)&&((wNowTableID!=wLastTableID)||(wNowChairID!=wLastChairID))){ //游戏通知 if ((pIClientUserItem==this.mMeUserItem)||(wLastTableID==pMeUserInfo.wTableID)) { var UserStatus = new tagUserStatus(); UserStatus.wTableID=wNowTableID; UserStatus.wChairID=wNowChairID; UserStatus.cbUserStatus=cbNowStatus; if (pClientKernel) pClientKernel.OnGFUserStatus(pUserInfo.dwUserID,UserStatus); } if (pIClientUserItem==this.mMeUserItem) { //设置变量 mReqTableID=INVALID_TABLE; mReqChairID=INVALID_CHAIR; //快速模式的 this.IntermitConnect(true); //TODO: //if (this.mIServerItemSink) // this.mIServerItemSink.OnGFServerClose(""); } return; } //加入处理 if ((wNowTableID!=INVALID_TABLE)&&((wNowTableID!=wLastTableID)||(wNowChairID!=wLastChairID))) { //自己判断 if (this.mMeUserItem==pIClientUserItem) { //设置变量 this.mReqTableID=INVALID_TABLE; this.mReqChairID=INVALID_CHAIR; if (pClientKernel==0){ //启动进程 if (!this.mIServerItemSink || !this.mIServerItemSink.CreateKernel()){ this.OnGFGameClose(GameExitCode_CreateFailed); return; } } else { this.mMeUserItem = pIClientUserItem; IServerItem.get().OnGFGameReady(); } } //游戏通知 if ((this.mMeUserItem!=pIClientUserItem || this.mMeUserItem.GetUserStatus() == US_LOOKON)&&pMeUserInfo.wTableID==wNowTableID){ if (pClientKernel) pClientKernel.OnGFUserEnter(pIClientUserItem); } return; } //状态改变 if ((wNowTableID!=INVALID_TABLE)&&(wNowTableID==wLastTableID)&&(pMeUserInfo.wTableID==wNowTableID)){ //游戏通知 UserStatus = new tagUserStatus(); UserStatus.wTableID=wNowTableID; UserStatus.wChairID=wNowChairID; UserStatus.cbUserStatus=cbNowStatus; if (pClientKernel) pClientKernel.OnGFUserStatus(pUserInfo.dwUserID,UserStatus); } }, OnUserScoreUpdate: function(pIClientUserItem, UserScore) { // 获取客户端内核对象 var pClientKernel = gClientKernel.get(); // 如果客户端内核对象存在,则调用其OnGFUserScore方法更新用户分数 if (pClientKernel) pClientKernel.OnGFUserScore(pIClientUserItem.GetUserID(), UserScore); }, OnUserFlowerUpdate: function(pIClientUserItem, UserFlower) { // 获取客户端内核对象 var pClientKernel = gClientKernel.get(); // 如果客户端内核对象存在,则调用其OnGFUserFlower方法更新用户鲜花 if (pClientKernel) pClientKernel.OnGFUserFlower(pIClientUserItem.GetUserID(), UserFlower); }, OnUserItemUpdate:function(pIClientUserItem, LastStatus){ //变量定义 var pUserInfo=pIClientUserItem.GetUserInfo(); var pMeUserInfo=this.mMeUserItem.GetUserInfo(); var wNowTableID=pIClientUserItem.GetTableID(); var wLastTableID=LastStatus.wTableID; var wNowChairID=pIClientUserItem.GetChairID(); var wLastChairID=LastStatus.wChairID; var cbNowStatus=pIClientUserItem.GetUserStatus(); var cbLastStatus=LastStatus.cbUserStatus; var pClientKernel = gClientKernel.get(); if (this.mIServerItemSink) this.mIServerItemSink.OnGRUserUpdate(pIClientUserItem); //桌子离开 if ((wLastTableID!=INVALID_TABLE)&&((wLastTableID!=wNowTableID)||(wLastChairID!=wNowChairID))){ var pITableUserItem = this.mTableViewFrame.GetClientUserItem(wLastTableID, wLastChairID); if (pITableUserItem == pIClientUserItem) this.mTableViewFrame.SetClientUserItem2(wLastTableID, wLastChairID, null); } //桌子加入 if ((wNowTableID!=INVALID_TABLE)&&(cbNowStatus!=US_LOOKON)&&((wNowTableID!=wLastTableID)||(wNowChairID!=wLastChairID))) { this.mTableViewFrame.SetClientUserItem2(wNowTableID,wNowChairID,pIClientUserItem); } //桌子状态 if ((this.mTableViewFrame.GetChairCount() < MAX_CHAIR)&&(wNowTableID!=INVALID_TABLE)&&(wNowTableID==wLastTableID)&&(wNowChairID==wLastChairID)){ this.mTableViewFrame.UpdateTableView(wNowTableID); } //离开通知 if ((wLastTableID!=INVALID_TABLE)&&((wNowTableID!=wLastTableID)||(wNowChairID!=wLastChairID))) { //游戏通知 if ((pIClientUserItem==this.mMeUserItem)||(wLastTableID==pMeUserInfo.wTableID)) { var UserStatus = new tagUserStatus(); UserStatus.wTableID=wNowTableID; UserStatus.wChairID=wNowChairID; UserStatus.cbUserStatus=cbNowStatus; if (pClientKernel) pClientKernel.OnGFUserStatus(pUserInfo.dwUserID, UserStatus); } if (pIClientUserItem==this.mMeUserItem){ //设置变量 this.mReqTableID=INVALID_TABLE; this.mReqChairID=INVALID_CHAIR; } return; } //加入处理 if ((wNowTableID!=INVALID_TABLE)&&((wNowTableID!=wLastTableID)||(wNowChairID!=wLastChairID))){ //自己判断 if (this.mMeUserItem==pIClientUserItem){ //设置变量 this.mReqTableID=INVALID_TABLE; this.mReqChairID=INVALID_CHAIR; if (!pClientKernel) { //启动进程 if (!this.mIServerItemSink || !this.mIServerItemSink.CreateKernel()){ this.OnGFGameClose(GameExitCode_CreateFailed); return; } } else { this.mMeUserItem = pIClientUserItem; this.OnGFGameReady(); } } //游戏通知 if ((this.mMeUserItem!=pIClientUserItem || this.mMeUserItem.GetUserStatus() == US_LOOKON)&&(pMeUserInfo.wTableID==wNowTableID)){ if (pClientKernel) pClientKernel.OnGFUserEnter(pIClientUserItem); } return; } //状态改变 if ((wNowTableID!=INVALID_TABLE)&&(wNowTableID==wLastTableID)&&(pMeUserInfo.wTableID==wNowTableID)){ //游戏通知 var UserStatus = new tagUserStatus(); UserStatus.wTableID=wNowTableID; UserStatus.wChairID=wNowChairID; UserStatus.cbUserStatus=cbNowStatus; if (pClientKernel) pClientKernel.OnGFUserStatus(pUserInfo.dwUserID,UserStatus); return; } return; }, //用户状态 OnSocketSubUserStatus:function (data,dataSize) { var pUserStatus = new CMD_GR_UserStatus(); //效验参数 if (dataSize