📄 clientgamedlg.cpp
字号:
// if (m_PlayView.m_HaveThing.GetSafeHwnd()==NULL)
// {
// m_PlayView.m_HaveThing.Create(IDD_THING,this);
// m_PlayView.m_HaveThing.m_pParnet=this;
// }
// m_PlayView.m_HaveThing.ShowWindow(SW_SHOW);
// m_PlayView.m_HaveThing.SetFocus();
// return 0;
//}
//
////提前结束
//LRESULT CClientGameDlg::OnStop(WPARAM wparam, LPARAM lparam)
//{
// if(m_PlayView.m_bMeSide && m_PlayView.m_iGamePoint>=80 && !m_bWatchMode)
// {
// if (m_PlayView.m_StopThing.GetSafeHwnd()==NULL)
// {
// m_PlayView.m_StopThing.Create(IDD_STOP,this);
// m_PlayView.m_StopThing.m_pParnet=this;
// }
// m_PlayView.m_StopThing.ShowWindow(SW_SHOW);
// m_PlayView.m_StopThing.SetFocus();
//
// }
// return 0;
//}
////发送提前结束
//LRESULT CClientGameDlg::OnStopThing(WPARAM wparam, LPARAM lparam)
//{
// if(!m_bWatchMode && GetStationParameter()!=GS_WAIT_SETGAME && m_PlayView.m_bMeSide && m_PlayView.m_iGamePoint>=80)
// {
// SendGameData(MDM_GM_GAME_NOTIFY,ASS_STOP_THING,0);
// }
// return 0;
//}
//
////同意提前结束
//LRESULT CClientGameDlg::OnAgreeStop(WPARAM wparam, LPARAM lparam)
//{
// if(!m_bWatchMode && GetStationParameter()!=GS_WAIT_SETGAME)
// {
// StopResultStruct Stop;
// Stop.bArgee=((BYTE)wparam==1);
// SendGameData(&Stop,sizeof(Stop),MDM_GM_GAME_NOTIFY,ASS_AGREE_STOP,0);
// }
// return 0;
//}
//
////发送离开请求函数
//LRESULT CClientGameDlg::OnSendHaveThing(WPARAM wparam, LPARAM lparam)
//{
// if(!m_bWatchMode && GetStationParameter()!=GS_WAIT_SETGAME)
// {
// m_PlayView.m_btThing.EnableWindow(FALSE);
// HaveThingStruct HaveThing;
// HaveThing.pos=0;
// ::strcpy(HaveThing.szMessage,(char *)wparam);
// SendGameData(&HaveThing,sizeof(HaveThing),MDM_GM_GAME_NOTIFY,ASS_HAVE_THING,0);
// }
//
// return 0;
//}
////用户请求离开
//LRESULT CClientGameDlg::OnArgeeUserLeft(WPARAM wparam, LPARAM lparam)
//{
// LeaveResultStruct Leave;
// Leave.bDeskStation=GetMeUserInfo()->bDeskStation;
// Leave.bArgeeLeave=(BYTE)wparam;
// SendGameData(&Leave,sizeof(Leave),MDM_GM_GAME_NOTIFY,ASS_LEFT_RESULT,0);
// return 0;
//}
//重载托管按钮函数
void CClientGameDlg::TuoGuan()
{
if ((m_bWatchMode))return;
m_iSelCard.iCardCount = 0;
if (m_bTimeOutCount>2)
{
AFCMessage(TEXT("托管次数太多,禁止解除托管!"),m_pGameInfo->szGameName,MB_ICONQUESTION,this);
m_BtTuoGuan.EnableWindow(FALSE);
return;
}
else//执行命令
{
if (!m_PlayView.m_bTuoGuan[1])//申请托管
{m_bTimeOutCount++;
m_PlayView.m_bTuoGuan[1]=true;
m_PlayView.m_MeCard.Tml_Down();
//界面重置
//m_PlayView.m_DiZhuLiangPai.Tml_DelAll();
// m_PlayView.m_btGiveBack.ShowWindow(SW_HIDE);
m_PlayView.m_btOutCard.ShowWindow(SW_HIDE);
m_PlayView.m_btnTiShi.ShowWindow(SW_HIDE);
m_PlayView.m_btPass.ShowWindow(SW_HIDE);
TCHAR szMessage[50];
sprintf(szMessage,TEXT("你已经托管%d 次了,超时三次禁止解除托管。"),m_bTimeOutCount);
m_MessageHandle.InsertNormalMessage(szMessage);
SendGameData(MDM_GM_GAME_NOTIFY,ASS_GM_TUOGUAN,1);//发送托管消息
}
else{//解除托管
m_PlayView.m_bTuoGuan[1]=false;
SendGameData(MDM_GM_GAME_NOTIFY,ASS_GM_TUOGUAN,0);//发送解除托管消息
}
SetTuoGuanBT(m_PlayView.m_bTuoGuan[1]);//设置托管按钮的显示图片
}
return;
}
//不出按钮
LRESULT CClientGameDlg::OnHitPass(WPARAM wparam, LPARAM lparam)
{
if (/*m_PlayView.m_btPass.IsWindowEnabled() &&*/ m_PlayView.m_btPass.IsWindowVisible())
{
//删除所有升起的扑克
m_PlayView.m_MeCard.Tml_Down();
KillAllTimer();
m_iSelCard.iCardCount=0;
m_PlayView.m_btOutCard.ShowWindow(SW_HIDE);
m_PlayView.m_btPass.ShowWindow(SW_HIDE);
m_PlayView.m_btPass.EnableWindow(FALSE);
m_PlayView.m_btnTiShi.ShowWindow(SW_HIDE);
SendGameData(MDM_GM_GAME_NOTIFY,ASS_PASS,0);
}
return 0;
}
//提示按钮
LRESULT CClientGameDlg::OnTiShi(WPARAM wparam, LPARAM lparam)
{
//BYTE list1[17] = {0x4e,0xd,0x3d,0x1d,0xc,0x1b,0x2a,0x9,0x38,0x28,0x17,0x7,0x16,0x35,0x34,0x23,0x3};
//BYTE list2[5] = {0x14,0x4,0x32,0x22,0x12};
//for (int i=0;i<17;i++)
//{
// m_iMeCardList[i]=list1[i];
//}
//m_iMeCardCount=17;
//for (int i=0;i<5;i++)
//{
// m_iBaseCard.iCardList[i]=list1[i];
//}
//m_iBaseCard.iCardCount=5;
//设置控件
if (m_PlayView.m_btnTiShi.IsWindowVisible()&&m_PlayView.m_btnTiShi.IsWindowEnabled())
{
if( m_iSelCard.iCardCount==0) //第一次点提示
{
::memset(&m_iSelCard,0,sizeof(m_iSelCard));
m_iSelCard.iCardCount=m_iBaseCard.iCardCount;
for(int j = 0;j< m_iBaseCard.iCardCount; j++)
m_iSelCard.iCardList[j]=m_iBaseCard.iCardList[j];
}
//定义临时牌,把手里的牌复制出来
OutCardStruct OutCard;
::memset(&OutCard,0,sizeof(OutCard));
CString OutStr="手中的牌:";
for (int i=0;i<m_iMeCardCount;i++)
{
OutStr.AppendFormat("0x%x,",m_iMeCardList[i]);
}
m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));
OutStr="上家的牌:";
for (int i=0;i<m_iBaseCard.iCardCount;i++)
{
OutStr.AppendFormat("0x%x,",m_iBaseCard.iCardList[i]);
}
m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));
OutStr="上次选的牌:";
for (int i=0;i<m_iSelCard.iCardCount;i++)
{
OutStr.AppendFormat("0x%x,",m_iSelCard.iCardList[i]);
}
m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));
OutStr="提示的牌:";
for (int i=0;i<OutCard.iCardCount;i++)
{
OutStr.AppendFormat("%x,",OutCard.iCardList[i]);
}
m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));
//结束打印出牌情况
try
{
if (!m_Logic.AutoOutCard(m_iMeCardList,m_iMeCardCount,m_iSelCard.iCardList,m_iSelCard.iCardCount,OutCard.iCardList,OutCard.iCardCount,m_iLastOutPeople==GetMeUserInfo()->bDeskStation)) //没选出牌,重头再选一次
{
::memset(&OutCard,0,sizeof(OutCard));
if (!m_Logic.AutoOutCard(m_iMeCardList,m_iMeCardCount,m_iBaseCard.iCardList,m_iBaseCard.iCardCount,OutCard.iCardList,OutCard.iCardCount,m_iLastOutPeople==GetMeUserInfo()->bDeskStation)) ::memset(&OutCard,0,sizeof(OutCard));
}
}
catch (TCHAR * szError) { AfxMessageBox(szError); }
catch(...)
{
AfxMessageBox("提示异常!!!");
//打印出牌情况
CString OutStr="手中的牌:";
for (int i=0;i<m_iMeCardCount;i++)
{
OutStr.AppendFormat("0x%x,",m_iMeCardList[i]);
}
m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));
OutStr="上家的牌:";
for (int i=0;i<m_iBaseCard.iCardCount;i++)
{
OutStr.AppendFormat("0x%x,",m_iBaseCard.iCardList[i]);
}
m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));
OutStr="上次选的牌:";
for (int i=0;i<m_iSelCard.iCardCount;i++)
{
OutStr.AppendFormat("0x%x,",m_iSelCard.iCardList[i]);
}
m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));
OutStr="提示的牌:";
for (int i=0;i<OutCard.iCardCount;i++)
{
OutStr.AppendFormat("%x,",OutCard.iCardList[i]);
}
m_MessageHandle.InsertNormalMessage(OutStr.GetBuffer(MAX_PATH));
//结束打印出牌情况
//异常处理
}
::memset(&m_iSelCard,0,sizeof(m_iSelCard));
m_iSelCard.iCardCount = OutCard.iCardCount;
if (OutCard.iCardCount==0)//没有找找到牌
{
m_PlayView.m_btOutCard.EnableWindow(FALSE);
OnHitPass(0,0);
}
else{
for(int j = 0; j< m_iSelCard.iCardCount ; j++)
m_iSelCard.iCardList[j]=OutCard.iCardList[j];
m_PlayView.m_MeCard.Tml_Down();
m_PlayView.m_MeCard.Tml_UpSel(OutCard.iCardList,OutCard.iCardCount);//Tml_UpSel是把LIST的升起
m_PlayView.m_btOutCard.EnableWindow(true);//提示能出
}
}
return 0;
}
//重置游戏
void CClientGameDlg::ResetGameStation(int iGameStation)
{
//数据重置
m_iMeCardCount=0;
//m_iNtCount=0;
//m_iNtPeopole=-1;
m_iNowOutPeople=255;
m_iFirstOutPeople=-1;
m_iLastCardCount=0;
m_bShowLast=FALSE;
::memset(&m_iBaseCard,0,sizeof(m_iBaseCard));
::memset(m_iDeskCardCount,0,sizeof(m_iDeskCardCount));
::memset(m_iMeCardList,0,sizeof(m_iMeCardList));
//::memset(m_iUserJiaoFen,0,sizeof(m_iUserJiaoFen));
//m_nJiaoZu=0;
m_bSortFalg = false;
//界面重置
//m_PlayView.m_btGiveBack.ShowWindow(SW_HIDE);
/// m_PlayView.m_NtList.ShowWindow(SW_HIDE);
m_PlayView.m_btOutCard.ShowWindow(SW_HIDE);
m_PlayView.m_btPass.ShowWindow(SW_HIDE);
m_PlayView.m_btnTiShi.ShowWindow(SW_HIDE);
m_PlayView.m_btLastTurn.EnableWindow(FALSE);
m_PlayView.m_btSortCard.EnableWindow(FALSE);
// m_PlayView.m_btThing.EnableWindow(FALSE);
if (m_PlayView.m_GameInfo.GetSafeHwnd()) m_PlayView.m_GameInfo.DestroyWindow();
// if (m_PlayView.m_BackCardDlg.GetSafeHwnd()) m_PlayView.m_BackCardDlg.DestroyWindow();
//if (m_PlayView.m_HaveThing.GetSafeHwnd()) m_PlayView.m_HaveThing.DestroyWindow();
//if (m_PlayView.m_ThingMessage.GetSafeHwnd()) m_PlayView.m_ThingMessage.DestroyWindow();
switch (iGameStation)
{
case RS_ALL_VIEW:
case RS_GAME_CUT:
{
//m_PlayView.SetGamePoint();
//m_PlayView.SetNTStation(-1);
//m_PlayView.SetShowNtStation(-1,0);
m_PlayView.m_MeCard.SetCard(NULL,NULL,0);
//m_PlayView.m_StationView.SetShowMessage(FALSE);
//m_PlayView.m_StationView.CleanAllInfo(TRUE);
for (int i=0;i<4;i++)
{
m_PlayView.m_UserCard[i].SetCard(NULL,NULL,0);
}
if (m_PlayView.m_GameSet.GetSafeHwnd()) m_PlayView.m_GameSet.DestroyWindow();
// if (m_PlayView.m_GameEndView.GetSafeHwnd()) m_PlayView.m_GameEndView.DestroyWindow();
break;
}
case RS_GAME_BEGIN:
{
//m_PlayView.SetGamePoint();
//m_PlayView.SetNTStation(-1);
//m_PlayView.SetShowNtStation(-1,0);
//m_PlayView.m_StationView.SetShowMessage(TRUE);
//m_PlayView.m_StationView.CleanAllInfo(FALSE);
for (int i=0;i<4;i++)
{
m_PlayView.m_UserCard[i].SetCard(NULL,NULL,0);
}
m_PlayView.m_MeCard.SetCard(NULL,NULL,0);
if (m_PlayView.m_GameSet.GetSafeHwnd()) m_PlayView.m_GameSet.DestroyWindow();
// if (m_PlayView.m_GameEndView.GetSafeHwnd()) m_PlayView.m_GameEndView.DestroyWindow();
break;
}
}
return;
}
void CClientGameDlg::OnGameSetting()
{
//AfxSetResourceHandle(GetModuleHandle(CLIENT_DLL_NAME));
CGameSet GameSetDlg(this);
GameSetDlg.m_bSound=m_pGameInfo->bEnableSound;
GameSetDlg.m_bShowUser=m_pGameInfo->bShowUserInfo;
GameSetDlg.m_bEnableWatch=m_pGameInfo->bEnableWatch;
GameSetDlg.m_bRightPower=GetProfileInt(TEXT("RightPower"),FALSE);
if (GameSetDlg.DoModal()==IDOK)
{
//定义参数
bool bSendWatch=((m_bWatchMode==false)&&(m_pGameInfo->bEnableWatch!=(GameSetDlg.m_bEnableWatch==1)));
//保存数据
m_pGameInfo->bShowUserInfo=(GameSetDlg.m_bShowUser==1);
m_pGameInfo->bEnableWatch=(GameSetDlg.m_bEnableWatch==1);
m_pGameInfo->bEnableSound=(GameSetDlg.m_bSound==1);
WriteProfileInt(TEXT("RightPower"),GameSetDlg.m_bRightPower?1:0);
m_PlayView.m_bRightPower=GameSetDlg.m_bRightPower;
//发送数据
if (bSendWatch==true)
{
MSG_GM_WatchSet WatchSet;
memset(&WatchSet,0,sizeof(WatchSet));
WatchSet.dwUserID=0;
SendGameData(&WatchSet,sizeof(WatchSet),MDM_GM_GAME_FRAME,ASS_GM_WATCH_SET,GameSetDlg.m_bEnableWatch?TRUE:FALSE);
}
}
//AfxSetResourceHandle(GetModuleHandle(NULL));
return;
}
void CClientGameDlg::OnWatchSetChange(void)
{
if (m_bWatchMode==true)
{
m_PlayView.m_MeCard.SetShowCard(m_bWatchOther?TRUE:FALSE);
if (m_bWatchOther) m_MessageHandle.InsertNormalMessage(TEXT("玩家允许你旁观他游戏"));
else m_MessageHandle.InsertNormalMessage(TEXT("玩家不允许你旁观他游戏"));
}
}
//用户离开
bool CClientGameDlg::GameUserLeft(BYTE bDeskStation, UserItemStruct * pUserItem, bool bWatchUser)
{
if ((bWatchUser==false)&&(pUserItem!=NULL)&&(bDeskStation==0))
{
if (GetStationParameter()==GS_WAIT_ARGEE)
{
for (int i=0;i<4;i++)
{
if (m_pUserInfo[i]!=NULL)
{
m_pUserInfo[i]->GameUserInfo.bUserState=USER_SITTING;
m_UserListDlg.UpdateGameUser(m_pUserInfo[i]);
}
}
if (m_PlayView.m_GameInfo.GetSafeHwnd()) m_PlayView.m_GameInfo.DestroyWindow();
m_PlayView.m_GameNoteView.SetMessage(TEXT("正在等待东家设置牌局"));
m_PlayView.UpdateViewFace(NULL);
}
}
return __super::GameUserLeft(bDeskStation,pUserItem,bWatchUser);
}
void CClientGameDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent==ID_LOOK_BACK)
{
// m_PlayView.m_MeCard.SetCard(m_PlayView.m_TempMeCard,NULL,m_PlayView.m_iCardNum);
m_PlayView.m_MeCard.SetUseMouse(TRUE);
m_PlayView.m_MeCard.SetShowCard(TRUE);
m_PlayView.m_MeCard.ShowWindow(SW_SHOW);
m_PlayView.m_btSortCard.ShowWindow(SW_SHOW);
m_PlayView.m_MeBackCard.SetShowCard(FALSE);
m_PlayView.m_MeBackCard.SetUseMouse(FALSE);
m_PlayView.m_MeBackCard.ShowWindow(SW_HIDE);
KillTimer(ID_LOOK_BACK);
}
else if(nIDEvent==ID_SHOW_LAST) //查看上一轮扑克
{
m_bShowIngLast=FALSE;
for (int i=0;i<3;i++)
m_PlayView.m_UserCard[ViewStation(i)].SetCard(m_DeskCard[i],NULL,m_iDeskCardCount[i]);
KillTimer(ID_SHOW_LAST);
}
CTMLframe::OnTimer(nIDEvent);
}
//void CClientGameDlg::OnClose()
//{
// //查询状态
// if ((m_bWatchMode==false)&&(GetStationParameter()>=20))
// {
// if (IDYES!=AFCMessage(TEXT("现在退出将会被扣分,真的要退出吗?"),m_pGameInfo->szGameName,MB_YESNO|MB_DEFBUTTON2|MB_ICONINFORMATION,this))
// return;
// SendGameData(MDM_GM_GAME_FRAME,ASS_GM_FORCE_QUIT,0);
// }
// if (m_pGameInfo->pMeUserInfo->GameUserInfo.bDeskNO!=255) SendGameData(MDM_GR_USER_ACTION,ASS_GR_USER_UP,0);
// CTMLframe::OnClose();
//}
//void CClientGameDlg::OnCancel()
//{
// //查询状态
// if (!m_bWatchMode && GetStationParameter()>=20)
// {
// if (IDYES!=AFCMessage(TEXT("现在退出将会被扣分,真的要退出吗?"),m_pGameInfo->szGameName,MB_YESNO|MB_DEFBUTTON2|MB_ICONINFORMATION,this))
// return;
// SendGameData(150,3,0);
// }
//
// AFCCloseFrame();
//
// __super::OnCancel();
//}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -