//游戏消息处理 bool __cdecl CTableFrameSink::OnGameMessage(WORD wSubCmdID, const void * pDataBuffer, WORD wDataSize, IServerUserItem * pIServerUserItem) { switch (wSubCmdID) { case SUB_C_LAND_SCORE: //用户叫分 { //效验数据 ASSERT(wDataSize==sizeof(CMD_C_LandScore)); if (wDataSize!=sizeof(CMD_C_LandScore)) return false; //用户效验 tagServerUserData * pUserData=pIServerUserItem->GetUserData(); if (pUserData->cbUserStatus!=US_PLAY) return true; //消息处理 CMD_C_LandScore * pLandScore=(CMD_C_LandScore *)pDataBuffer; return OnUserLandScore(pUserData->wChairID,pLandScore->bLandScore); } case SUB_C_OUT_CART: //用户出牌 { //变量定义 CMD_C_OutCard * pOutCard=(CMD_C_OutCard *)pDataBuffer; WORD wHeadSize=sizeof(CMD_C_OutCard)-sizeof(pOutCard->bCardData); //效验数据 ASSERT(wDataSize>=wHeadSize); if (wDataSize<wHeadSize) return false; ASSERT(wDataSize==(wHeadSize+pOutCard->bCardCount*sizeof(pOutCard->bCardData[0]))); if (wDataSize!=(wHeadSize+pOutCard->bCardCount*sizeof(pOutCard->bCardData[0]))) return false; //用户效验 tagServerUserData * pUserData=pIServerUserItem->GetUserData(); if (pUserData->cbUserStatus!=US_PLAY) return true; //消息处理 return OnUserOutCard(pUserData->wChairID,pOutCard->bCardData,pOutCard->bCardCount); } case SUB_C_PASS_CARD: { //用户效验 tagServerUserData * pUserData=pIServerUserItem->GetUserData(); if (pUserData->cbUserStatus!=US_PLAY) return true; //消息处理 return OnUserPassCard(pUserData->wChairID); } } return true; }
//游戏消息处理 bool __cdecl CTableFrameSink::OnGameMessage(WORD wSubCmdID, const void * pDataBuffer, WORD wDataSize, IServerUserItem * pIServerUserItem) { switch (wSubCmdID) { case SUB_C_LAND_SCORE: //用户叫分 { //效验数据 ASSERT(wDataSize==sizeof(CMD_C_LandScore)); if (wDataSize!=sizeof(CMD_C_LandScore)) return false; //用户效验 tagServerUserData * pUserData=pIServerUserItem->GetUserData(); if (pUserData->cbUserStatus!=US_PLAY) return true; //用户效验 ASSERT(m_wCurrentUser==pUserData->wChairID); if(m_wCurrentUser!=pUserData->wChairID)return false; //消息处理 CMD_C_LandScore * pLandScore=(CMD_C_LandScore *)pDataBuffer; return OnUserLandScore(pUserData->wChairID,pLandScore->bLandScore); } case SUB_C_OUT_CART: //用户出牌 { //变量定义 CMD_C_OutCard * pOutCard=(CMD_C_OutCard *)pDataBuffer; WORD wHeadSize=sizeof(CMD_C_OutCard)-sizeof(pOutCard->bCardData); //效验数据 ASSERT(wDataSize>=wHeadSize); if (wDataSize<wHeadSize) return false; ASSERT(wDataSize==(wHeadSize+pOutCard->bCardCount*sizeof(pOutCard->bCardData[0]))); if (wDataSize!=(wHeadSize+pOutCard->bCardCount*sizeof(pOutCard->bCardData[0]))) return false; //用户效验 tagServerUserData * pUserData=pIServerUserItem->GetUserData(); if (pUserData->cbUserStatus!=US_PLAY) return true; //消息处理 return OnUserOutCard(pUserData->wChairID,pOutCard->bCardData,pOutCard->bCardCount); } case SUB_C_PASS_CARD: { //用户效验 tagServerUserData * pUserData=pIServerUserItem->GetUserData(); if (pUserData->cbUserStatus!=US_PLAY) return true; //消息处理 return OnUserPassCard(pUserData->wChairID); } case SUB_C_TRUSTEE: //玩家托管 { //效验数据 ASSERT(wDataSize==sizeof(CMD_C_UserTrustee)); if (wDataSize != sizeof(CMD_C_UserTrustee)) return false; CMD_C_UserTrustee *pUserTrustee = ( CMD_C_UserTrustee * )pDataBuffer; m_bUserTrustee[ pUserTrustee->wUserChairID ] = pUserTrustee->bTrustee; m_pITableFrame->SendTableData(INVALID_CHAIR,SUB_C_TRUSTEE, (void*)pDataBuffer,wDataSize); m_pITableFrame->SendLookonData(INVALID_CHAIR,SUB_C_TRUSTEE, (void*)pDataBuffer,wDataSize); return true; } } return true; }
//游戏消息处理 bool __cdecl CTableFrameSink::OnGameMessage(WORD wSubCmdID, const void * pDataBuffer, WORD wDataSize, IServerUserItem * pIServerUserItem) { switch (wSubCmdID) { case SUB_C_CALL_SCORE: //用户叫分 { //效验数据 ASSERT(wDataSize==sizeof(CMD_C_CallScore)); if (wDataSize!=sizeof(CMD_C_CallScore)) return false; //用户效验 tagServerUserData * pUserData=pIServerUserItem->GetUserData(); if (pUserData->cbUserStatus!=US_PLAY) return true; //消息处理 CMD_C_CallScore * pLandScore=(CMD_C_CallScore *)pDataBuffer; return OnUserLandScore(pUserData->wChairID,pLandScore->bBossScore,pLandScore->bBossColor); } case SUB_C_MULTIPLES: //用户加倍 { //效验数据 ASSERT(wDataSize==sizeof(CMD_C_OnMultiples)); if (wDataSize!=sizeof(CMD_C_OnMultiples)) return false; //用户效验 tagServerUserData * pUserData=pIServerUserItem->GetUserData(); if (pUserData->cbUserStatus!=US_PLAY) return true; //消息处理 CMD_C_OnMultiples * pMultiples=(CMD_C_OnMultiples *)pDataBuffer; return OnUserMultiples(pUserData->wChairID,pMultiples->bMultiples); } case SUB_C_OUT_CARD: //用户出牌 { /*//变量定义 CMD_C_OutCard * pOutCard=(CMD_C_OutCard *)pDataBuffer; WORD wHeadSize=sizeof(CMD_C_OutCard)-sizeof(pOutCard->cbCardData); //效验数据 ASSERT(wDataSize>=wHeadSize); if (wDataSize<wHeadSize) return false; ASSERT(wDataSize==(wHeadSize+pOutCard->cbCardCount*sizeof(pOutCard->cbCardData[0]))); if (wDataSize!=(wHeadSize+pOutCard->cbCardCount*sizeof(pOutCard->cbCardData[0]))) return false; */ //效验数据 ASSERT(wDataSize==sizeof(CMD_C_OutCard)); if (wDataSize!=sizeof(CMD_C_OutCard)) return false; //用户效验 tagServerUserData * pUserData=pIServerUserItem->GetUserData(); if (pUserData->cbUserStatus!=US_PLAY) return true; //消息处理 CMD_C_OutCard * pOutCard=(CMD_C_OutCard *)pDataBuffer; return OnUserOutCard(pUserData->wChairID,pOutCard->cbCardData,pOutCard->cbCardCount,pOutCard->bIsHandOut,pOutCard->bIsAutoOut); } } return false; }