//游戏消息 bool __cdecl CAndroidUserItemSink::OnEventGameMessage(WORD wSubCmdID, void * pBuffer, WORD wDataSize) { switch (wSubCmdID) { case SUB_S_GAME_FREE: //游戏空闲 { return OnSubGameFree(pBuffer, wDataSize); } case SUB_S_GAME_START: //游戏开始 { return OnSubGameStart(pBuffer, wDataSize); } case SUB_S_PLACE_JETTON: //用户加注 { return OnSubPlaceJetton(pBuffer, wDataSize); } case SUB_S_APPLY_BANKER: //申请做庄 { return OnSubUserApplyBanker(pBuffer,wDataSize); } case SUB_S_CANCEL_BANKER: //取消做庄 { return OnSubUserCancelBanker(pBuffer,wDataSize); } case SUB_S_CHANGE_BANKER: //切换庄家 { return OnSubChangeBanker(pBuffer,wDataSize); } case SUB_S_GAME_END: //游戏结束 { return OnSubGameEnd(pBuffer, wDataSize); } case SUB_S_SEND_RECORD: //游戏记录 (忽略) { return true; } case SUB_S_PLACE_JETTON_FAIL: //下注失败 (忽略) { return true; } } //错误断言 ASSERT(FALSE); return true; }
//网络消息 bool CGameClientDlg::OnGameMessage(WORD wSubCmdID, const void * pBuffer, WORD wDataSize) { switch (wSubCmdID) { case SUB_S_GAME_FREE: //游戏空闲 { return OnSubGameFree(pBuffer,wDataSize); } case SUB_S_GAME_START: //游戏开始 { return OnSubGameStart(pBuffer,wDataSize); } case SUB_S_PLACE_JETTON: //用户加注 { return OnSubPlaceJetton(pBuffer,wDataSize); } case SUB_S_APPLY_BANKER: //申请做庄 { return OnSubUserApplyBanker(pBuffer, wDataSize); } case SUB_S_CANCEL_BANKER: //取消做庄 { return OnSubUserCancelBanker(pBuffer, wDataSize); } case SUB_S_CHANGE_BANKER: //切换庄家 { return OnSubChangeBanker(pBuffer, wDataSize); } case SUB_S_GAME_END: //游戏结束 { return OnSubGameEnd(pBuffer,wDataSize); } case SUB_S_SEND_RECORD: //游戏记录 { return OnSubGameRecord(pBuffer,wDataSize); } case SUB_S_PLACE_JETTON_FAIL: //下注失败 { return OnSubPlaceJettonFail(pBuffer,wDataSize); } } //错误断言 ASSERT(FALSE); return true; }
bool SmallNineAndroid::OnGameMessage(WORD wSubCmdID, const void * pBuffer, WORD wDataSize) { switch (wSubCmdID) { //游戏开始 case SUB_S_GAME_START: { OnGameStart(pBuffer, wDataSize); } break; //用户加注 case SUB_S_PLACE_JETTON: { OnSubPlaceJetton(pBuffer, wDataSize); } break; //申请做庄 case SUB_S_APPLY_BANKER: { OnApplyBanker(pBuffer, wDataSize); } break; //切换庄家 case SUB_S_CHANGE_BANKER: { OnChangeBanker(pBuffer, wDataSize); } break; //更新积分 case SUB_S_CHANGE_USER_SCORE: { } break; //押注开始 case SUB_S_StartJetton: { OnStartJetton(pBuffer, wDataSize); } break; //游戏结束 case SUB_S_GAME_END: { OnGameEnd(pBuffer, wDataSize); } break; //游戏记录 case SUB_S_SEND_RECORD: { } break; //游戏积分 case SUB_S_GAME_SCORE: { OnGameScore(pBuffer, wDataSize); } break; } return true; }
//游戏消息 bool __cdecl CAndroidUserItemSink::OnEventGameMessage(WORD wSubCmdID, void * pBuffer, WORD wDataSize) { switch (wSubCmdID) { case SUB_S_GAME_FREE: //游戏空闲 { m_lMeMaxScore =0; // 最大下注 m_lAllMaxScore=0L; // 当局可以下注的总注 ZeroMemory(m_lMeScore,sizeof(m_lMeScore)); // 每个方位总注 ZeroMemory(m_lAllScore,sizeof(m_lAllScore)); // 每个方位总注 m_bEnableNote = false; return true; } case SUB_S_GAME_START: // 游戏开始 { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_GameStart)); if (wDataSize!=sizeof(CMD_S_GameStart)) { return false; } //消息处理 CMD_S_GameStart * pGameStart=(CMD_S_GameStart *)pBuffer; ZeroMemory(m_lMeScore, sizeof(m_lMeScore)); ZeroMemory(m_lAllScore, sizeof(m_lAllScore)); m_lMeMaxScore=pGameStart->lUserMaxScore; m_wCurrentBanker = pGameStart->wBankerUser; m_lBankerScore = pGameStart->lBankerScore; m_lAllMaxScore=pGameStart->lAllMaxScore; // 当局可以下注的总注 if (NULL != m_pIAndroidUserItem) { m_bEnableNote = true; UINT nElapse=(rand()%TIME_RAND) +TIME_LESS; if (pGameStart->cbTimeLeave>(TIME_LESS+nElapse)) { if (m_wCurrentBanker != m_pIAndroidUserItem->GetChairID()) { m_pIAndroidUserItem->SetGameTimer(IDI_USER_JETTON,nElapse); m_pIAndroidUserItem->SetGameTimer(IDI_PLACE_JETTON,pGameStart->cbTimeLeave-TIME_LESS); } else { //m_pIAndroidUserItem->SetGameTimer(IDI_SELECT_SICBOTYPE,nElapse); } } } //设置文件名 TCHAR szPath[MAX_PATH]=TEXT(""); TCHAR szINIPath[MAX_PATH] = TEXT(""); GetCurrentDirectory(sizeof(szPath),szPath); _snprintf(szINIPath,sizeof(szINIPath),TEXT("%s\\SicboShowHandConfig.ini"),szPath); iRandLimit[0]=GetPrivateProfileInt("RandLimit","Area0",200,szINIPath); iRandLimit[1]=GetPrivateProfileInt("RandLimit","Area1",200,szINIPath); iRandLimit[2]=GetPrivateProfileInt("RandLimit","Area2",-1,szINIPath); iRandLimit[3]=GetPrivateProfileInt("RandLimit","Area3",20,szINIPath); iRandLimit[4]=GetPrivateProfileInt("RandLimit","Area4",60,szINIPath); iRandLimit[5]=GetPrivateProfileInt("RandLimit","Area5",85,szINIPath); iRandLimit[6]=GetPrivateProfileInt("RandLimit","Area6",97,szINIPath); return true; } case SUB_S_PLACE_JETTON: //用户加注 { return OnSubPlaceJetton(pBuffer,wDataSize); } case SUB_S_APPLY_BANKER: //申请做庄 { return OnSubUserApplyBanker(pBuffer,wDataSize); } case SUB_S_CANCEL_BANKER: //取消做庄 { return OnSubUserCancelBanker(pBuffer,wDataSize); } case SUB_S_CHANGE_BANKER: // 切换庄家 { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_ChangeBanker)); if (wDataSize!=sizeof(CMD_S_ChangeBanker)) { return false; } //消息处理 CMD_S_ChangeBanker * pChangeBanker=(CMD_S_ChangeBanker *)pBuffer; //庄家信息 m_wCurrentBanker = pChangeBanker->wBankerUser; m_lBankerScore = pChangeBanker->lBankerScore; m_iMaxAndroidBanker = 1 + rand()%MAX_ANDROID_BANKER; // 删除玩家 for (int i=0; i<m_arApplyBanker.GetCount(); ++i) { if (m_arApplyBanker[i] == pChangeBanker->dwUserID) { m_arApplyBanker.RemoveAt(i); if (m_arApplyBanker.GetCount() < m_iMaxAndroidBanker) { m_pIAndroidUserItem->SetGameTimer(IDI_APPLY_BANKER, (TIME_LESS+rand()%TIME_APPLY_BANKER)); } return true; } } return true; } case SUB_S_GAME_END: //游戏结束 { m_bEnableNote = false; // 清除定时器 if (NULL != m_pIAndroidUserItem) { m_pIAndroidUserItem->KillGameTimer(IDI_USER_JETTON); m_pIAndroidUserItem->KillGameTimer(IDI_SELECT_SICBOTYPE); if (INVALID_CHAIR == m_wCurrentBanker) { m_arApplyBanker.RemoveAll(); m_pIAndroidUserItem->SetGameTimer(IDI_APPLY_BANKER, (TIME_LESS+rand()%TIME_APPLY_BANKER)); } } return true; } case SUB_S_SEND_RECORD: //游戏记录 case SUB_C_CHANGE_SICBO_TYPE: { // 机器人不需要处理 return true; } case SUB_S_PLACE_JETTON_FAIL: //下注失败 { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_PlaceJettonFail)); if (wDataSize!=sizeof(CMD_S_PlaceJettonFail)) { return false; } //消息处理 CMD_S_PlaceJettonFail * pPlaceJettonFail=(CMD_S_PlaceJettonFail *)pBuffer; //效验参数 BYTE cbViewIndex=pPlaceJettonFail->lJettonArea; ASSERT(cbViewIndex<COUNT_AZIMUTH); if (cbViewIndex>=COUNT_AZIMUTH) { return false; } __int64 lJettonCount=pPlaceJettonFail->lPlaceScore; m_lMeScore[cbViewIndex] -= lJettonCount; if (m_lMeScore[cbViewIndex] < 0) { m_lMeScore[cbViewIndex] = 0; } return true; } default:break; } //错误断言 ASSERT(FALSE); return true; }
bool CDanShuangGame::OnGameMessage(WORD wMainCmd, WORD wSubCmd, const void * pBuffer, WORD wDataSize) { CCLOG("GameMsg:%d",wSubCmd); switch(wSubCmd) { case SUB_S_GAME_STATUS: //游戏状态 { //效验数据 CC_ASSERT(wDataSize==sizeof(CMD_S_GameStatus)); if (wDataSize!=sizeof(CMD_S_GameStatus)) return false; CMD_S_GameStatus * pGameStatus = (CMD_S_GameStatus *)pBuffer; m_nGameStatus = pGameStatus->cbGameStatus; return true; } case SUB_S_GAME_FREE: //游戏空闲 { return OnSubGameFree(pBuffer,wDataSize); } case SUB_S_GAME_ANIMATION: //游戏动画 { return OnSubGameAnimation(pBuffer,wDataSize); } case SUB_S_GAME_START: //游戏开始 { return OnSubGameStart(pBuffer,wDataSize); } case SUB_S_PLACE_JETTON: //用户加注 { return OnSubPlaceJetton(pBuffer,wDataSize,true); } case SUB_S_GAME_END: //游戏结束 { return OnSubGameEnd(pBuffer,wDataSize); } case SUB_S_APPLY_BANKER: //申请坐庄 { return OnSubUserApplyBanker(pBuffer, wDataSize); } case SUB_S_CHANGE_BANKER: //切换庄家 { return OnSubChangeBanker(pBuffer, wDataSize); } case SUB_S_CANCEL_BANKER: //取消坐庄 { return OnSubUserCancelBanker(pBuffer, wDataSize); } case SUB_S_CLEAN: //取消下注 { return OnSubClearJetton(pBuffer,wDataSize); } case SUB_S_SCORE_RECORD: //查看分数记录 { return OnSubScoreRecord(pBuffer,wDataSize); } default:break; } CC_ASSERT(false); return false; }
//网络消息 bool CGameClientDlg::OnGameMessage(WORD wSubCmdID, const void * pBuffer, WORD wDataSize) { switch (wSubCmdID) { case SUB_S_GAME_FREE: //游戏空闲 { return OnSubGameFree(pBuffer,wDataSize); } case SUB_S_GAME_START: //游戏开始 { return OnSubGameStart(pBuffer,wDataSize); } case SUB_S_PLACE_JETTON: //用户加注 { return OnSubPlaceJetton(pBuffer,wDataSize); } case SUB_S_APPLY_BANKER: //申请做庄 { return OnSubUserApplyBanker(pBuffer, wDataSize); } case SUB_S_CANCEL_BANKER: //取消做庄 { return OnSubUserCancelBanker(pBuffer, wDataSize); } case SUB_S_CHANGE_BANKER: //切换庄家 { return OnSubChangeBanker(pBuffer, wDataSize); } case SUB_S_GAME_END: //游戏结束 { return OnSubGameEnd(pBuffer,wDataSize); } case SUB_S_SEND_RECORD: //游戏记录 { return OnSubGameRecord(pBuffer,wDataSize); } case SUB_S_PLACE_JETTON_FAIL: //下注失败 { return OnSubPlaceJettonFail(pBuffer,wDataSize); } case SUB_S_UPDATE_USER_SCORE: //更新成绩 { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_UpdateUserScore)); if (wDataSize!=sizeof(CMD_S_UpdateUserScore)) return false; //消息处理 CMD_S_UpdateUserScore * UpdateUserScore=(CMD_S_UpdateUserScore *)pBuffer; m_lMeMaxScore = UpdateUserScore->lUserScore; m_GameClientView.SetMeMaxScore(m_lMeMaxScore); return true; } case SUB_S_UPDATE_BANKER_SCORE: //更新成绩 { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_UpdateBankerScore)); if (wDataSize!=sizeof(CMD_S_UpdateUserScore)) return false; //消息处理 CMD_S_UpdateBankerScore * UpdateBankerScore=(CMD_S_UpdateBankerScore *)pBuffer; m_lBankerScore = UpdateBankerScore->lBankerScore; m_GameClientView.SetBankerInfo(m_wCurrentBanker,m_lBankerScore); return true; } } //错误断言 ASSERT(FALSE); return true; }