//时间消息 bool CGameClientDlg::OnTimerMessage(WORD wChairID, UINT nElapse, UINT nTimerID) { static int num = 0; if ((nTimerID==IDI_PLACE_JETTON)&&(nElapse==0)) { num = 0; //设置光标 m_GameClientView.SetCurrentJetton(0L); //禁止按钮 m_GameClientView.m_btJetton100.EnableWindow(FALSE); m_GameClientView.m_btJetton1000.EnableWindow(FALSE); m_GameClientView.m_btJetton10000.EnableWindow(FALSE); m_GameClientView.m_btJetton100000.EnableWindow(FALSE); m_GameClientView.m_btJetton1000000.EnableWindow(FALSE); m_GameClientView.m_btJetton5000000.EnableWindow(FALSE); m_GameClientView.m_btJetton10000000.EnableWindow(FALSE); //庄家按钮 m_GameClientView.m_btApplyBanker.EnableWindow( FALSE ); m_GameClientView.m_btCancelBanker.EnableWindow( FALSE ); } if ((nTimerID==IDI_PLACE_JETTON)&&IsEnableSound()) { if (nElapse<=2&&nElapse>1) PlayGameSound(HORSE_READY); } if (nTimerID == IDI_HORSE_RUN && nElapse > 11 && (nElapse%3) == 0) { m_GameClientView.SetEveryHorseSpeed(8- (nElapse-11)/3); } if (nTimerID == IDI_HORSE_RUN) { if (nElapse == 34) { PlayGameSound(RACE_RUN); } if (IsEnableSound() && m_GameClientView.GetIsFinishRace()) { num ++; if (num == 3) { PlayGameSound(RACE_OVER); } } } return true; }
//游戏设置 void CGameClientDlg::OnGameOptionSet() { //构造数据 CGameOption GameOption; GameOption.m_dwCardHSpace=m_dwCardHSpace; GameOption.m_bEnableSound=IsEnableSound(); GameOption.m_bDeasilOrder=m_GameClientView.IsDeasilOrder(); //配置数据 if (GameOption.DoModal()==IDOK) { //获取参数 m_bDeasilOrder=GameOption.m_bDeasilOrder; m_dwCardHSpace=GameOption.m_dwCardHSpace; //设置控件 EnableSound(GameOption.m_bEnableSound); m_GameClientView.SetUserOrder(GameOption.m_bDeasilOrder); m_GameClientView.m_HandCardControl.SetCardSpace(m_dwCardHSpace,0,20); //保存配置 AfxGetApp()->WriteProfileInt(TEXT("GameOption"),TEXT("CardSpace"),m_dwCardHSpace); AfxGetApp()->WriteProfileInt(TEXT("GameOption"),TEXT("DeasilOrder"),m_bDeasilOrder?TRUE:FALSE); } return; }
//时间消息 bool CGameClientDlg::OnTimerMessage(WORD wChairID, UINT nElapse, UINT nTimerID) { if ((nTimerID==IDI_PLACE_JETTON)&&(nElapse==0)) { //设置光标 m_GameClientView.SetCurrentJetton(0L); //禁止按钮 m_GameClientView.m_btJetton100.EnableWindow(FALSE); m_GameClientView.m_btJetton1000.EnableWindow(FALSE); m_GameClientView.m_btJetton10000.EnableWindow(FALSE); m_GameClientView.m_btJetton50000.EnableWindow(FALSE); m_GameClientView.m_btJetton100000.EnableWindow(FALSE); m_GameClientView.m_btJetton500000.EnableWindow(FALSE); m_GameClientView.m_btJetton1000000.EnableWindow(FALSE); m_GameClientView.m_btJetton5000000.EnableWindow(FALSE); //庄家按钮 m_GameClientView.m_btApplyBanker.EnableWindow( FALSE ); m_GameClientView.m_btCancelBanker.EnableWindow( FALSE ); } if (IsEnableSound()) { if (nTimerID==IDI_PLACE_JETTON&&nElapse<=5) PlayGameSound(AfxGetInstanceHandle(),TEXT("TIME_WARIMG")); } return true; }
//游戏设置 void CGameClientDlg::OnGameOptionSet() { //构造数据 CGameOption GameOption; //GameOption.m_dwCardHSpace=m_dwCardHSpace; GameOption.m_bEnableSound=IsEnableSound(); GameOption.m_bAllowLookon=IsAllowUserLookon(); //配置数据 if (GameOption.DoModal()==IDOK) { //设置扑克 //m_dwCardHSpace=GameOption.m_dwCardHSpace; //for (int i=0;i<GAME_PLAYER;i++) m_GameClientView.m_CardControl[i].SetCardSpace(m_dwCardHSpace); //设置配置 EnableSound(GameOption.m_bEnableSound); AllowUserLookon(0,GameOption.m_bAllowLookon); //保存配置 //AfxGetApp()->WriteProfileInt(TEXT("GameOption"),TEXT("CardSpace"),m_dwCardHSpace); } return; }
//用户加注 bool CGameClientDlg::OnSubPlaceJetton(const void * pBuffer, WORD wDataSize) { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_PlaceJetton)); if (wDataSize!=sizeof(CMD_S_PlaceJetton)) return false; //消息处理 CMD_S_PlaceJetton * pPlaceJetton=(CMD_S_PlaceJetton *)pBuffer; //加注界面 m_GameClientView.PlaceUserJetton(pPlaceJetton->cbJettonArea,pPlaceJetton->lJettonScore); //播放声音 if (IsEnableSound()) { if (pPlaceJetton->wChairID!=GetMeChairID() || IsLookonMode()) { if (pPlaceJetton->lJettonScore==5000000) PlayGameSound(AfxGetInstanceHandle(),TEXT("ADD_GOLD_EX")); else PlayGameSound(AfxGetInstanceHandle(),TEXT("ADD_GOLD")); m_DTSDCheer[rand()%3].Play(); } } return true; }
//时间消息 bool CGameClientDlg::OnTimerMessage(WORD wChairID, UINT nElapse, UINT nTimerID) { switch (nTimerID) { case IDI_START_GAME: //开始定时器 { //中止判断 if (nElapse==0) { PostMessage(WM_CLOSE,0,0); return false; } //警告通知 //if (nElapse<=5) PlayGameSound(AfxGetInstanceHandle(),TEXT("GAME_WARN")); if(nElapse%5==0) { if(!IsEnableSound()) m_DTSDBackground.Stop(); } return true; } case IDI_NULLITY: //过滤时器 { //中止判断 if (nElapse==0) { KillGameTimer(IDI_NULLITY); return false; } //警告通知 //if (nElapse<=5) PlayGameSound(AfxGetInstanceHandle(),TEXT("GAME_WARN")); return true; } case IDI_CALL_BANKER: //叫庄定时 { //中止判断 if (nElapse==0) { //测试代码 //放弃做庄 OnBanker(0,0); return false; } //警告通知 //if (nElapse<=5) PlayGameSound(AfxGetInstanceHandle(),TEXT("GAME_WARN")); return true; } } return false; }
VOID CGameFrameDlg::OnSound() { if (IsEnableSound()==true) { EnableSound(false); } else { EnableSound(true); } HINSTANCE hInstancleMe=GetModuleHandle(GAME_FRAME_DLL_NAME); m_btSound.SetButtonImage(m_bAllowSound?IDB_SOUND1:IDB_SOUND0, hInstancleMe, false); }
//初始函数 bool CGameClientDlg::InitGameFrame() { //设置图标 HICON hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); SetIcon(hIcon,TRUE); SetIcon(hIcon,FALSE); HINSTANCE hInstance = AfxGetInstanceHandle(); //读取配置 m_dwCardHSpace=AfxGetApp()->GetProfileInt(TEXT("GameOption"),TEXT("CardSpace"),DEFAULT_PELS); //调整参数 if ((m_dwCardHSpace>MAX_PELS)||(m_dwCardHSpace<LESS_PELS)) m_dwCardHSpace=18; //配置控件 for (int i=0;i<GAME_PLAYER;i++) { m_GameClientView.m_CardControlOx[i].SetDisplayFlag(true); m_GameClientView.m_CardControlOx[i].SetCardSpace(m_dwCardHSpace); m_GameClientView.m_CardControl[i].SetCardSpace(m_dwCardHSpace); } //测试代码 #ifdef _DEBUG //m_GameClientView.m_btShortcut.ShowWindow(SW_SHOW); //BYTE bTemp[]={1,2,3,4,5}; //for (BYTE i=0;i<GAME_PLAYER;i++) //{ // m_GameClientView.m_CardControl[i].SetDisplayFlag(true); // m_GameClientView.m_CardControl[i].SetCardData(bTemp,5); // //m_GameClientView.m_CardControlOx[i].SetDisplayFlag(true); // //m_GameClientView.m_CardControlOx[i].SetCardData(bTemp,2); //} //m_GameClientView.m_CardControl[2].SetPositively(true); #endif //加载声音 VERIFY(m_DTSDBackground.Create(TEXT("BACK_GROUND"))); if (IsEnableSound()) { PlayGameSound(AfxGetInstanceHandle(),TEXT("GAME_START")); //m_DTSDBackground.Play(0,true); } return true; }
//游戏设置 void CGameClientDlg::OnGameOptionSet() { //构造数据 CGameOption GameOption; GameOption.m_bEnableSound=IsEnableSound(); GameOption.m_bAllowLookon=IsAllowUserLookon(); //配置数据 if (GameOption.DoModal()==IDOK) { EnableSound(GameOption.m_bEnableSound); AllowUserLookon(0,GameOption.m_bAllowLookon); } return; }
//游戏开始 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; }
//游戏设置 void CGameClientDlg::OnGameOptionSet() { //构造数据 CGameOption GameOption; GameOption.m_bEnableSound=IsEnableSound(); GameOption.m_bShowChessName=m_bShowChessName; //配置数据 if (GameOption.DoModal()==IDOK) { //设置变量 m_bShowChessName=GameOption.m_bShowChessName; //保存配置 AfxGetApp()->WriteProfileInt(TEXT("GameOption"),TEXT("ShowChessName"),m_bShowChessName); //功能设置 EnableSound(GameOption.m_bEnableSound); m_GameClientView.m_ChessBorad.ShowChessName(m_bShowChessName); } return; }
//加注消息 LRESULT CGameClientDlg::OnPlaceJetton(WPARAM wParam, LPARAM lParam) { //变量定义 BYTE cbJettonArea=(BYTE)wParam; LONG lJettonScore=(LONG)lParam; //庄家判断 if ( GetMeChairID() == m_wCurrentBanker ) return true; //状态判断 if (GetGameStatus()!=GS_PLACE_JETTON) { UpdateButtonContron(); return true; } //设置变量 switch (cbJettonArea) { case ID_TIAN_MARK: { m_lMeTianScore += lJettonScore; m_GameClientView.SetMePlaceJetton(ID_TIAN_MARK,m_lMeTianScore); break; } case ID_DI_MARK: { m_lMeDiScore += lJettonScore; m_GameClientView.SetMePlaceJetton(ID_DI_MARK,m_lMeDiScore); break; } case ID_XUAN_MARK: { m_lMeXuanScore += lJettonScore; m_GameClientView.SetMePlaceJetton(ID_XUAN_MARK,m_lMeXuanScore); break; } case ID_HUANG_MARK: { m_lMeHuangScore += lJettonScore; m_GameClientView.SetMePlaceJetton(ID_HUANG_MARK,m_lMeHuangScore); break; } } //变量定义 CMD_C_PlaceJetton PlaceJetton; ZeroMemory(&PlaceJetton,sizeof(PlaceJetton)); //构造变量 PlaceJetton.cbJettonArea=cbJettonArea; PlaceJetton.lJettonScore=lJettonScore; //发送消息 SendData(SUB_C_PLACE_JETTON,&PlaceJetton,sizeof(PlaceJetton)); //更新按钮 UpdateButtonContron(); //播放声音 if (IsEnableSound()) { if (lJettonScore==5000000) PlayGameSound(AfxGetInstanceHandle(),TEXT("ADD_GOLD_EX")); else PlayGameSound(AfxGetInstanceHandle(),TEXT("ADD_GOLD")); m_DTSDCheer[rand()%3].Play(); } return 0; }
//用户叫庄 bool CGameClientDlg::OnSubCallBanker(const void * pBuffer, WORD wDataSize) { //效验数据 if (wDataSize!=sizeof(CMD_S_CallBanker)) return false; CMD_S_CallBanker * pCallBanker=(CMD_S_CallBanker *)pBuffer; //首次叫庄 if(pCallBanker->bFirstTimes) { m_wBankCount=0; m_wFirstBankUser= pCallBanker->wCallBanker; //用户信息 for (WORD i=0;i<GAME_PLAYER;i++) { //视图位置 m_wViewChairID[i]=SwitchViewChairID(i); //获取用户 const tagUserData * pUserData=GetUserData(i); if (pUserData==NULL) continue; //游戏信息 m_cbPlayStatus[i]=TRUE; //用户名字 lstrcpyn(m_szAccounts[i],pUserData->szName,CountArray(m_szAccounts[i])); } //旁观者清理数据 if (IsLookonMode()) OnStart(0,0); //播放声音 if (IsEnableSound()) { PlayGameSound(AfxGetInstanceHandle(),TEXT("GAME_START")); //m_DTSDBackground.Continue(); } else { m_DTSDBackground.Stop(); } }else if(IsEnableSound()) { PlayGameSound(AfxGetInstanceHandle(),TEXT("SEND_CARD")); } m_wBankCount++; //删除定时器/按钮 if(m_GameClientView.m_btIdler.IsWindowVisible()==TRUE) { KillGameTimer(IDI_CALL_BANKER); m_GameClientView.m_btIdler.ShowWindow(SW_HIDE); m_GameClientView.m_btBanker.ShowWindow(SW_HIDE); } //用户控件显示 if(IsCurrentUser(pCallBanker->wCallBanker)) { m_GameClientView.m_btBanker.ShowWindow(SW_SHOW); m_GameClientView.m_btIdler.ShowWindow(SW_SHOW); } //等待标志 WORD wViewID=m_wViewChairID[pCallBanker->wCallBanker]; m_GameClientView.SetWaitCall((BYTE)wViewID); //实际定时器 if(pCallBanker->wCallBanker==GetMeChairID()) { SetGameTimer(pCallBanker->wCallBanker,IDI_CALL_BANKER,TIME_USER_CALL_BANKER); } else SetGameTimer(pCallBanker->wCallBanker,IDI_NULLITY,TIME_USER_CALL_BANKER); return true; }
//摊牌按钮 LRESULT CGameClientDlg::OnOpenCard(WPARAM wParam, LPARAM lParam) { if(m_GameClientView.m_btOx.IsWindowEnabled()==TRUE) { //牛牛 m_GameClientView.m_CardControl[MY_VIEW_CHAIRID].SetOX(true); //取消响应 m_GameClientView.m_CardControl[MY_VIEW_CHAIRID].SetPositively(false); //分类牛牌 OnSortCard(0,0); m_GameClientView.m_btOx.EnableWindow(FALSE); } //删除时间 KillTimer(IDI_TIME_OPEN_CARD); //处理控件 m_GameClientView.m_btOx.ShowWindow(SW_HIDE); m_GameClientView.m_btOpenCard.ShowWindow(SW_HIDE); m_GameClientView.m_btHintOx.ShowWindow(SW_HIDE); m_GameClientView.m_btReSort.ShowWindow(SW_HIDE); m_GameClientView.m_btShortcut.ShowWindow(SW_HIDE); WORD wViewChairID=MY_VIEW_CHAIRID; //发送消息 CMD_C_OxCard OxCard; OxCard.bOX=(m_GameClientView.m_CardControl[wViewChairID].GetOX())?TRUE:FALSE; SendData(SUB_C_OPEN_CARD,&OxCard,sizeof(OxCard)); //预先处理 if(OxCard.bOX==FALSE) { //显示不构成牛牛 m_GameClientView.m_CardControl[wViewChairID].ShootAllCard(false); m_GameClientView.SetUserOxValue(wViewChairID,0); } m_GameClientView.ShowOpenCard(wViewChairID); m_GameClientView.m_CardControl[wViewChairID].SetPositively(false); //保存牛信息 m_bUserOxCard[GetMeChairID()]=OxCard.bOX; //PlayGameSound(AfxGetInstanceHandle(),TEXT("OPEN_CARD")); ////////////////////////////////////////////////////////////////////////// WORD wMeChiarID = GetMeChairID(); TCHAR szWav[128]; if(m_bUserOxCard[wMeChiarID]==TRUE)//牛牌分类 { //设置变量 BYTE bTemp[MAX_COUNT]; CopyMemory(bTemp,m_cbHandCardData[wMeChiarID],sizeof(bTemp)); //获取牛牌 m_GameLogic.GetOxCard(bTemp,MAX_COUNT); //显示点数 BYTE bValue=m_GameLogic.GetCardLogicValue(bTemp[3])+m_GameLogic.GetCardLogicValue(bTemp[4]); ASSERT(bValue>0); if(bValue>10) bValue-=10; if(bValue>=10) bValue=10; if(GetUserData(GetMeChairID())->cbGender== 0) _snprintf(szWav, CountArray(szWav), TEXT("GAME_OX2%d"), bValue); else _snprintf(szWav, CountArray(szWav), TEXT("GAME_OX1%d"), bValue); }else{ if(GetUserData(GetMeChairID())->cbGender== 0) _snprintf(szWav, CountArray(szWav), TEXT("GAME_OX20")); else _snprintf(szWav, CountArray(szWav), TEXT("GAME_OX10")); } if(IsLookonMode()==false && IsEnableSound()) PlayGameSound(AfxGetInstanceHandle(),szWav); ////////////////////////////////////////////////////////////////////////// return 0; }
//游戏场景 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; }
//游戏场景 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; }
//加注消息 LRESULT CGameClientDlg::OnPlaceJetton(WPARAM wParam, LPARAM lParam) { //变量定义 BYTE cbJettonArea=(BYTE)wParam; LONGLONG lJettonScore=(LONGLONG)lParam; //庄家判断 if ( GetMeChairID() == m_wCurrentBanker ) return true; //状态判断 if (GetGameStatus()!=GS_PLACE_JETTON) { UpdateButtonContron(); return true; } //设置变量 switch (cbJettonArea) { case ID_HORSE1: { m_lMeScore1 += lJettonScore; m_GameClientView.SetMePlaceJetton(ID_HORSE1,m_lMeScore1); break; } case ID_HORSE2: { m_lMeScore2 += lJettonScore; m_GameClientView.SetMePlaceJetton(ID_HORSE2,m_lMeScore2); break; } case ID_HORSE3: { m_lMeScore3 += lJettonScore; m_GameClientView.SetMePlaceJetton(ID_HORSE3,m_lMeScore3); break; } case ID_HORSE4: { m_lMeScore4 += lJettonScore; m_GameClientView.SetMePlaceJetton(ID_HORSE4,m_lMeScore4); break; } case ID_HORSE5: { m_lMeScore5 += lJettonScore; m_GameClientView.SetMePlaceJetton(ID_HORSE5,m_lMeScore5); break; } case ID_HORSE6: { m_lMeScore6 += lJettonScore; m_GameClientView.SetMePlaceJetton(ID_HORSE6,m_lMeScore6); break; } case ID_HORSE7: { m_lMeScore7 += lJettonScore; m_GameClientView.SetMePlaceJetton(ID_HORSE7,m_lMeScore7); break; } case ID_HORSE8: { m_lMeScore8 += lJettonScore; m_GameClientView.SetMePlaceJetton(ID_HORSE8,m_lMeScore8); break; } } //变量定义 CMD_C_PlaceJetton PlaceJetton; ZeroMemory(&PlaceJetton,sizeof(PlaceJetton)); //构造变量 PlaceJetton.cbJettonArea=cbJettonArea; PlaceJetton.lJettonScore=lJettonScore; //发送消息 SendData(SUB_C_PLACE_JETTON,&PlaceJetton,sizeof(PlaceJetton)); //更新按钮 UpdateButtonContron(); //播放声音 if (IsEnableSound()) { if (lJettonScore==5000000 || lJettonScore==10000000) PlayGameSound(ADD_GOLD_EX); else PlayGameSound(ADD_GOLD); m_DTSDCheer[rand()%3].Play(); } return 0; }
//游戏结束 bool CGameClientDlg::OnSubGameEnd(const void * pBuffer, WORD wDataSize) { //效验数据 ASSERT(wDataSize==sizeof(CMD_S_GameEnd)); if (wDataSize!=sizeof(CMD_S_GameEnd)) return false; //消息处理 CMD_S_GameEnd * pGameEnd=(CMD_S_GameEnd *)pBuffer; //取消动画 for (WORD wAreaIndex=ID_HORSE1; wAreaIndex<=ID_HORSE8; ++wAreaIndex) m_GameClientView.SetBombEffect(false,wAreaIndex); //清空下注 //m_GameClientView.CleanUserJetton(); if (IsEnableSound()) { PlayGameSound(HORSE_GO); } //设置时间 SetGameTimer(GetMeChairID(),IDI_HORSE_RUN, pGameEnd->cbTimeLeave); ////扑克信息 m_GameClientView.SetHorseSpeed(pGameEnd->cbHorseSpeed); //庄家信息 m_GameClientView.SetBankerScore(pGameEnd->nBankerTime, pGameEnd->lBankerTotallScore); //成绩信息 m_GameClientView.SetCurGameScore(pGameEnd->lUserScore,pGameEnd->lUserReturnScore,pGameEnd->lBankerScore,pGameEnd->lRevenue); //设置状态 SetGameStatus(GS_GAME_END); //m_GameBank.ShowWindow(SW_HIDE); //更新成绩 for (WORD wUserIndex = 0; wUserIndex < MAX_CHAIR; ++wUserIndex) { tagUserData const *pUserData = GetUserData(wUserIndex); if ( pUserData == NULL ) continue; tagApplyUser ApplyUser ; //更新信息 ApplyUser.lUserScore = pUserData->lScore; ApplyUser.strUserName = pUserData->szName; m_GameClientView.m_ApplyUser.UpdateUser(ApplyUser); } //更新控件 UpdateButtonContron(); //停止声音 m_DTSDBackground.Stop(); m_DTSDCheer[0].Stop(); m_DTSDCheer[1].Stop(); m_DTSDCheer[2].Stop(); //m_DTSDRaceHorse.Stop(); return true; }