//切换庄家 bool CGameClientDlg::OnSubChangeBanker(const void * pBuffer, WORD wDataSize) { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_ChangeBanker)); if (wDataSize!=sizeof(CMD_S_ChangeBanker)) return false; //消息处理 CMD_S_ChangeBanker * pChangeBanker=(CMD_S_ChangeBanker *)pBuffer; //显示图片 m_GameClientView.ShowChangeBanker(m_wCurrentBanker!=pChangeBanker->wBankerUser); //自己判断 if (m_wCurrentBanker==GetMeChairID() && IsLookonMode() == false && pChangeBanker->wBankerUser!=GetMeChairID()) { m_bMeApplyBanker=false; } else if (IsLookonMode() == false && pChangeBanker->wBankerUser==GetMeChairID()) { m_bMeApplyBanker=true; } //庄家信 SetBankerInfo(pChangeBanker->wBankerUser,pChangeBanker->lBankerScore); m_GameClientView.SetBankerScore(0,0); //删除玩家 if (m_wCurrentBanker!=INVALID_CHAIR) { tagUserData const *pBankerUserData=GetUserData(m_wCurrentBanker); if (pBankerUserData != NULL) { tagApplyUser ApplyUser; ApplyUser.strUserName = pBankerUserData->szName; m_GameClientView.m_ApplyUser.DeleteUser(ApplyUser); } } //更新界面 UpdateButtonContron(); m_GameClientView.UpdateGameView(NULL); return true; }
//游戏开始 bool CGameClientDlg::OnSubGameStart(const void * pBuffer, WORD wDataSize) { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_GameStart)); if (wDataSize!=sizeof(CMD_S_GameStart)) return false; //消息处理 CMD_S_GameStart * pGameStart=(CMD_S_GameStart *)pBuffer; //庄家信息 SetBankerInfo(pGameStart->wBankerUser,pGameStart->lBankerScore); //玩家信息 m_lMeMaxScore=pGameStart->lUserMaxScore; m_GameClientView.SetMeMaxScore(m_lMeMaxScore); m_lAreaLimitScore = pGameStart->lAreaLimitScore; m_GameClientView.SetAreaLimitScore(m_lAreaLimitScore); //设置时间 SetGameTimer(GetMeChairID(),IDI_PLACE_JETTON,pGameStart->cbTimeLeave); //设置空闲状态 m_GameClientView.SetFreeTime(); //设置状态 SetGameStatus(GS_PLACE_JETTON); //更新控制 UpdateButtonContron(); //更新界面 m_GameClientView.UpdateGameView(NULL); //播放声音 if (IsEnableSound()) { PlayGameSound(GAME_START); m_DTSDBackground.Play(0,true); } return true; }
//切换庄家 bool CDanShuangGame::OnSubChangeBanker(const void * pBuffer, WORD wDataSize) { //效验数据 CC_ASSERT(wDataSize==sizeof(CMD_S_ChangeBanker)); if (wDataSize!=sizeof(CMD_S_ChangeBanker)) return false; //消息处理 CMD_S_ChangeBanker * pChangeBanker=(CMD_S_ChangeBanker *)pBuffer; WORD wPrevBanker = m_wCurrentBanker; //备份上个庄家 //自己判断 if (m_wCurrentBanker == m_pDirector->m_nMeChairID && pChangeBanker->wBankerUser != m_pDirector->m_nMeChairID) { m_bMeApplyBanker=false; } else if (pChangeBanker->wBankerUser == m_pDirector->m_nMeChairID) { m_bMeApplyBanker=true; } //庄家信息 SetBankerInfo(pChangeBanker->wBankerUser, pChangeBanker->lBankerScore); //显示图片 m_pDanShuangGameView->ShowChangeBanker(wPrevBanker != pChangeBanker->wBankerUser); m_pDanShuangGameView->SetBankerScore(0, 0); //删除上庄列表玩家 if (m_wCurrentBanker!=INVALID_CHAIR) { tagApplyUser ApplyUser; ApplyUser.wChairID = m_wCurrentBanker; m_pDanShuangGameView->CancelApplyBanker(ApplyUser); } //更新控件 UpdateButtonControl(); return true; }
//游戏开始 bool CDanShuangGame::OnSubGameStart(const void * pBuffer, WORD wDataSize) { //效验数据 CC_ASSERT(wDataSize==sizeof(CMD_S_GameStart)); if (wDataSize!=sizeof(CMD_S_GameStart)) return false; //消息处理 CMD_S_GameStart * pGameStart=(CMD_S_GameStart *)pBuffer; memset(m_lMeScore,0, sizeof(m_lMeScore)); memset(m_lAllScore, 0,sizeof(m_lAllScore)); //庄家信息 SetBankerInfo(pGameStart->wBankerUser,pGameStart->lBankerScore); //玩家信息 m_lMeMaxScore=pGameStart->lUserMaxScore; m_lAllMaxScore = pGameStart->lAllMaxScore; //设置时间 m_pDanShuangGameView->SetGameTime(pGameStart->cbTimeLeave,GS_GAME_START); //停止抛币动画 m_pDanShuangGameView->BeginThrowCoin(false); //设置状态 m_nGameStatus = GS_GAME_START; //更新控制 UpdateButtonControl(true); //播放声音 string strPath = SOUND_PATH; strPath += "GAME_START.ogg"; SimpleAudioEngine::sharedEngine()->playEffect(strPath.c_str()); return true; }
bool CDanShuangGame::OnEventGameScene(bool bLookonOther, const void * pBuffer, WORD wDataSize) { switch (m_nGameStatus) { case GS_GAME_FREE: //空闲状态 case GS_GAME_ANIMATION: //动画状态 { //效验数据 CC_ASSERT(wDataSize == sizeof(CMD_S_StatusFree)); if (wDataSize != sizeof(CMD_S_StatusFree)) return false; //消息处理 CMD_S_StatusFree * pStatusFree = (CMD_S_StatusFree *)pBuffer; //庄家信息 SetBankerInfo(pStatusFree->wBankerUser, pStatusFree->lBankerScore); m_pDanShuangGameView->SetBankerScore(pStatusFree->wBankerTime, pStatusFree->lBankerWinScore); m_bEnableSysBanker = pStatusFree->bEnableSysBanker; //控制信息 m_lApplyBankerCondition = pStatusFree->lApplyBankerCondition; m_lAreaLimitScore = pStatusFree->lAreaLimitScore; char szApplyBankerCondition[256]; sprintf(szApplyBankerCondition,"上庄条件:%lld分",m_lApplyBankerCondition); //m_pDanShuangGameView->ShowMessage(szApplyBankerCondition); //游戏记录 m_pDanShuangGameView->SetGameHistory(pStatusFree->cbOpenRecord); //设置时间 m_pDanShuangGameView->SetGameTime(pStatusFree->cbTimeLeave, m_nGameStatus); if (m_nGameStatus == GS_GAME_FREE) { //清理桌面 m_pDanShuangGameView->SetWinnerSide(0xFF); m_pDanShuangGameView->ClearAllJetton(); } else if (m_nGameStatus == GS_GAME_ANIMATION) { //停止抛币动画 m_pDanShuangGameView->BeginThrowCoin(false); } //更新控制 UpdateButtonControl(false); return true; } case GS_GAME_START: //游戏状态 { //效验数据 CC_ASSERT(wDataSize == sizeof(CMD_S_StatusJetton)); if (wDataSize != sizeof(CMD_S_StatusJetton)) return false; //消息处理 CMD_S_StatusJetton * pStatusJetton = (CMD_S_StatusJetton *)pBuffer; //下注信息 WORD wMeChairID=m_pDirector->GetMeData()->nUserChair; for (BYTE i =0; i < AREA_COUNT; i++) { m_lAllScore[i] += pStatusJetton->lAllScore[i]; m_pDanShuangGameView->PlaceUserJetton(i + JA_RED, pStatusJetton->lAllScore[i] - pStatusJetton->lUserScore[i], INVALID_CHAIR); m_lMeScore[i] += pStatusJetton->lUserScore[i]; m_pDanShuangGameView->PlaceUserJetton(i + JA_RED, pStatusJetton->lUserScore[i], wMeChairID); if (m_lMeScore[i] > 0) { m_bMePlaceJetton = true; } } //玩家积分 m_lMeMaxScore = pStatusJetton->lUserMaxScore; m_lAllMaxScore = pStatusJetton->lAllMaxScore; //控制信息 m_lApplyBankerCondition = pStatusJetton->lApplyBankerCondition; m_lAreaLimitScore = pStatusJetton->lAreaLimitScore; char szApplyBankerCondition[256]; sprintf(szApplyBankerCondition,"上庄条件:%lld分",m_lApplyBankerCondition); //m_pDanShuangGameView->ShowMessage(szApplyBankerCondition); //庄家信息 SetBankerInfo(pStatusJetton->wBankerUser, pStatusJetton->lBankerScore); m_pDanShuangGameView->SetBankerScore(pStatusJetton->wBankerTime, pStatusJetton->lBankerWinScore); m_bEnableSysBanker = pStatusJetton->bEnableSysBanker; //游戏记录 m_pDanShuangGameView->SetGameHistory(pStatusJetton->cbOpenRecord); //设置时间 m_pDanShuangGameView->SetGameTime(pStatusJetton->cbTimeLeave, m_nGameStatus); //停止抛币动画 m_pDanShuangGameView->BeginThrowCoin(false); //更新控制 UpdateButtonControl(true); return true; } case GS_GAME_END: //结束状态 { //效验数据 CC_ASSERT(wDataSize == sizeof(CMD_S_StatusEnd)); if (wDataSize != sizeof(CMD_S_StatusEnd)) return false; //消息处理 CMD_S_StatusEnd * pStatusEnd = (CMD_S_StatusEnd *)pBuffer; //下注信息 WORD wMeChairID=m_pDirector->GetMeData()->nUserChair; for (BYTE i =0; i < AREA_COUNT; i++) { memcpy(m_lAllScore, pStatusEnd->lAllScore, sizeof(pStatusEnd->lAllScore)); m_pDanShuangGameView->PlaceUserJetton(i + JA_RED, pStatusEnd->lAllScore[i] - pStatusEnd->lUserScore[i], INVALID_CHAIR); memcpy(m_lMeScore, pStatusEnd->lUserScore, sizeof(pStatusEnd->lUserScore)); m_pDanShuangGameView->PlaceUserJetton(i + JA_RED, pStatusEnd->lUserScore[i], wMeChairID); } //控制信息 m_lApplyBankerCondition = pStatusEnd->lApplyBankerCondition; m_lAreaLimitScore = pStatusEnd->lAreaLimitScore; char szApplyBankerCondition[256]; sprintf(szApplyBankerCondition,"上庄条件:%lld分",m_lApplyBankerCondition); //m_pDanShuangGameView->ShowMessage(szApplyBankerCondition); //庄家信息 SetBankerInfo(pStatusEnd->wBankerUser, pStatusEnd->lBankerScore); m_pDanShuangGameView->SetBankerScore(pStatusEnd->wBankerTime, pStatusEnd->lBankerWinScore); m_bEnableSysBanker = pStatusEnd->bEnableSysBanker; //游戏记录 m_pDanShuangGameView->SetGameHistory(pStatusEnd->cbOpenRecord); //结束信息 m_pDanShuangGameView->SetCardInfo((enOpenCardType)pStatusEnd->cbOpenArea, false); m_pDanShuangGameView->FinishOpenAnimation(false); m_pDanShuangGameView->SetCurGameScore(pStatusEnd->lEndUserScore, pStatusEnd->lEndUserReturnScore, pStatusEnd->lEndBankerScore, pStatusEnd->lEndRevenue); //设置时间 m_pDanShuangGameView->SetGameTime(pStatusEnd->cbTimeLeave, m_nGameStatus); //更新控制 UpdateButtonControl(false); return true; } } return true; }
//游戏场景 bool CGameClientDlg::OnGameSceneMessage(BYTE cbGameStation, bool bLookonOther, const void * pBuffer, WORD wDataSize) { switch (cbGameStation) { case GS_FREE: //空闲状态 { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_StatusFree)); if (wDataSize!=sizeof(CMD_S_StatusFree)) return false; //消息处理 CMD_S_StatusFree * pStatusFree=(CMD_S_StatusFree *)pBuffer; //设置时间 SetGameTimer(GetMeChairID(),IDI_FREE,pStatusFree->cbTimeLeave); //玩家信息 m_lMeMaxScore=pStatusFree->lUserMaxScore; m_GameClientView.SetMeMaxScore(m_lMeMaxScore); WORD wMeChairID=GetMeChairID(); m_GameClientView.SetMeChairID(SwitchViewChairID(wMeChairID)); //庄家信息 SetBankerInfo(pStatusFree->wBankerUser,pStatusFree->lBankerScore); m_GameClientView.SetBankerScore(pStatusFree->cbBankerTime,pStatusFree->lBankerWinScore); m_bEnableSysBanker=pStatusFree->bEnableSysBanker; m_GameClientView.EnableSysBanker(m_bEnableSysBanker); //控制信息 m_lApplyBankerCondition=pStatusFree->lApplyBankerCondition; m_lAreaLimitScore=pStatusFree->lAreaLimitScore; m_GameClientView.SetAreaLimitScore(m_lAreaLimitScore); //设置状态 SetGameStatus(GS_FREE); //更新控制 UpdateButtonContron(); m_GameClientView.UpdateGameView(NULL); return true; } case GS_PLAYING: //游戏状态 case GS_GAME_END: //结束状态 { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_StatusPlay)); if (wDataSize!=sizeof(CMD_S_StatusPlay)) return false; //消息处理 CMD_S_StatusPlay * pStatusPlay=(CMD_S_StatusPlay *)pBuffer; //全局下注 m_GameClientView.PlaceUserJetton(ID_TIAN_MARK,pStatusPlay->lAllTianScore); m_GameClientView.PlaceUserJetton(ID_DI_MARK,pStatusPlay->lAllDiScore); m_GameClientView.PlaceUserJetton(ID_XUAN_MARK,pStatusPlay->lAllXuanScore); m_GameClientView.PlaceUserJetton(ID_HUANG_MARK,pStatusPlay->lAllHuangScore); //玩家下注 SetMePlaceJetton(ID_TIAN_MARK,pStatusPlay->lUserTianScore); SetMePlaceJetton(ID_DI_MARK,pStatusPlay->lUserDiScore); SetMePlaceJetton(ID_XUAN_MARK,pStatusPlay->lUserXuanScore); SetMePlaceJetton(ID_HUANG_MARK,pStatusPlay->lUserHuangScore); //玩家积分 m_lMeMaxScore=pStatusPlay->lUserMaxScore; m_GameClientView.SetMeMaxScore(m_lMeMaxScore); WORD wMeChairID=GetMeChairID(); m_GameClientView.SetMeChairID(SwitchViewChairID(wMeChairID)); //控制信息 m_lApplyBankerCondition=pStatusPlay->lApplyBankerCondition; m_lAreaLimitScore=pStatusPlay->lAreaLimitScore; m_GameClientView.SetAreaLimitScore(m_lAreaLimitScore); if (pStatusPlay->cbGameStatus==GS_GAME_END) { //扑克信息 m_GameClientView.SetCardInfo(true,pStatusPlay->cbTableCardArray); m_GameClientView.FinishDispatchCard(); //设置成绩 m_GameClientView.SetCurGameScore(pStatusPlay->lEndUserScore,pStatusPlay->lEndUserReturnScore,pStatusPlay->lEndBankerScore,pStatusPlay->lEndRevenue); } else { m_GameClientView.SetCardInfo(false,NULL); //播放声音 if (IsEnableSound()) m_DTSDBackground.Play(0,true); } //庄家信息 SetBankerInfo(pStatusPlay->wBankerUser,pStatusPlay->lBankerScore); m_GameClientView.SetBankerScore(pStatusPlay->cbBankerTime,pStatusPlay->lBankerWinScore); m_bEnableSysBanker=pStatusPlay->bEnableSysBanker; m_GameClientView.EnableSysBanker(m_bEnableSysBanker); //设置状态 SetGameStatus(pStatusPlay->cbGameStatus); //设置时间 SetGameTimer(GetMeChairID(),pStatusPlay->cbGameStatus==GS_GAME_END?IDI_DISPATCH_CARD:IDI_PLACE_JETTON,pStatusPlay->cbTimeLeave); //更新按钮 UpdateButtonContron(); m_GameClientView.UpdateGameView(NULL); return true; } } return false; }
//游戏场景 bool CGameClientDlg::OnGameSceneMessage(BYTE cbGameStation, bool bLookonOther, const void * pBuffer, WORD wDataSize) { switch (cbGameStation) { case GS_FREE: //空闲状态 { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_StatusFree)); if (wDataSize!=sizeof(CMD_S_StatusFree)) return false; //消息处理 CMD_S_StatusFree * pStatusFree=(CMD_S_StatusFree *)pBuffer; //设置时间 SetGameTimer(GetMeChairID(),IDI_FREE,pStatusFree->cbTimeLeave); //玩家信息 m_lMeMaxScore=pStatusFree->lUserMaxScore; m_GameClientView.SetMeMaxScore(m_lMeMaxScore); WORD wMeChairID=GetMeChairID(); m_GameClientView.SetMeChairID(SwitchViewChairID(wMeChairID)); //庄家信息 SetBankerInfo(pStatusFree->wBankerUser,pStatusFree->lBankerScore); m_GameClientView.SetBankerScore(pStatusFree->cbBankerTime,pStatusFree->lBankerWinScore); m_bEnableSysBanker=pStatusFree->bEnableSysBanker; m_GameClientView.EnableSysBanker(m_bEnableSysBanker); //控制信息 m_lApplyBankerCondition=pStatusFree->lApplyBankerCondition; m_lAreaLimitScore=pStatusFree->lAreaLimitScore; m_GameClientView.SetAreaLimitScore(m_lAreaLimitScore); //设置状态 SetGameStatus(GS_FREE); //更新控制 UpdateButtonContron(); m_GameClientView.UpdateGameView(NULL); return true; } case GS_PLAYING: //游戏状态 case GS_GAME_END: //结束状态 { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_StatusPlay)); if (wDataSize!=sizeof(CMD_S_StatusPlay)) return false; //消息处理 CMD_S_StatusPlay * pStatusPlay=(CMD_S_StatusPlay *)pBuffer; //全局下注 m_GameClientView.PlaceUserJetton(ID_HORSE1,pStatusPlay->lAllScore1); m_GameClientView.PlaceUserJetton(ID_HORSE2,pStatusPlay->lAllScore2); m_GameClientView.PlaceUserJetton(ID_HORSE3,pStatusPlay->lAllScore3); m_GameClientView.PlaceUserJetton(ID_HORSE4,pStatusPlay->lAllScore4); m_GameClientView.PlaceUserJetton(ID_HORSE5,pStatusPlay->lAllScore5); m_GameClientView.PlaceUserJetton(ID_HORSE6,pStatusPlay->lAllScore6); m_GameClientView.PlaceUserJetton(ID_HORSE7,pStatusPlay->lAllScore7); m_GameClientView.PlaceUserJetton(ID_HORSE8,pStatusPlay->lAllScore8); //玩家下注 SetMePlaceJetton(ID_HORSE1,pStatusPlay->lUserScore1); SetMePlaceJetton(ID_HORSE2,pStatusPlay->lUserScore2); SetMePlaceJetton(ID_HORSE3,pStatusPlay->lUserScore3); SetMePlaceJetton(ID_HORSE4,pStatusPlay->lUserScore4); SetMePlaceJetton(ID_HORSE5,pStatusPlay->lUserScore5); SetMePlaceJetton(ID_HORSE6,pStatusPlay->lUserScore6); SetMePlaceJetton(ID_HORSE7,pStatusPlay->lUserScore7); SetMePlaceJetton(ID_HORSE8,pStatusPlay->lUserScore8); //玩家积分 m_lMeMaxScore=pStatusPlay->lUserMaxScore; m_GameClientView.SetMeMaxScore(m_lMeMaxScore); WORD wMeChairID=GetMeChairID(); m_GameClientView.SetMeChairID(SwitchViewChairID(wMeChairID)); //控制信息 m_lApplyBankerCondition=pStatusPlay->lApplyBankerCondition; m_lAreaLimitScore=pStatusPlay->lAreaLimitScore; m_GameClientView.SetAreaLimitScore(m_lAreaLimitScore); if (pStatusPlay->cbGameStatus==GS_GAME_END) { //扑克信息 m_GameClientView.SetHorseSpeed(pStatusPlay->cbHorseSpeed); m_GameClientView.FinishRun(); //设置成绩 m_GameClientView.SetCurGameScore(pStatusPlay->lEndUserScore,pStatusPlay->lEndUserReturnScore,pStatusPlay->lEndBankerScore,pStatusPlay->lEndRevenue); } else { //m_GameClientView.SetHorseSpeed(NULL); //播放声音 if (IsEnableSound()) m_DTSDBackground.Play(0,true); } //庄家信息 SetBankerInfo(pStatusPlay->wBankerUser,pStatusPlay->lBankerScore); m_GameClientView.SetBankerScore(pStatusPlay->cbBankerTime,pStatusPlay->lBankerWinScore); m_bEnableSysBanker=pStatusPlay->bEnableSysBanker; m_GameClientView.EnableSysBanker(m_bEnableSysBanker); //设置状态 SetGameStatus(pStatusPlay->cbGameStatus); //设置时间 SetGameTimer(GetMeChairID(),pStatusPlay->cbGameStatus==GS_GAME_END?IDI_HORSE_RUN:IDI_PLACE_JETTON,pStatusPlay->cbTimeLeave); //更新按钮 UpdateButtonContron(); m_GameClientView.UpdateGameView(NULL); return true; } } return false; }