⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientgamedlg.cpp

📁 原子,棋牌游戏源代码,功能齐全,稳定,适合用于棋牌游戏开发
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			SendGameData(&OutCard,sizeof(OutCard)-sizeof(OutCard.iCardList)+sizeof(BYTE)*OutCard.iCardCount,
							  MDM_GM_GAME_NOTIFY,ASS_OUT_CARD,0);
		//设置预显示
		m_PlayView.m_UserCard[2].SetCard(OutCard.iCardList,NULL,OutCard.iCardCount);
	}

	return 0;
}

//按动上轮按钮函数
LRESULT	CClientGameDlg::OnHitLastTurn(WPARAM wparam, LPARAM lparam)
{
	if ((m_bShowIngLast)||(!m_bShowLast)||(m_iLastCardCount==0)||(m_iNowOutPeople==m_iFirstOutPeople)) return 0;
	m_bShowIngLast=TRUE;
	SetTimer(ID_SHOW_LAST,3000,NULL);
	for (int i=0;i<3;i++)
		m_PlayView.m_UserCard[ViewStation(i)].SetCard(m_iLastOutCard[i],NULL,m_iLastCardCount);
	return 0;
}

//按动看底牌按钮函数
LRESULT	CClientGameDlg::OnHitLookBack(WPARAM wparam, LPARAM lparam)
{
	//if (m_PlayView.m_BackCardDlg.GetSafeHwnd()==NULL) m_PlayView.m_BackCardDlg.Create(IDD_BACK_CARD,this);
	//m_PlayView.m_BackCardDlg.SetBackCard(m_iBackCard,(m_iPalyCardCount==2)?8:6);
	////把按底牌按钮函数移到相应位置
	//CRect rect1,rect2;
	//m_PlayView.m_BackCardDlg.GetWindowRect(rect1);
	//m_PlayView.GetClientRect(rect2);
	//m_PlayView.m_BackCardDlg.MoveWindow(rect2.Width()-60-rect1.Width(),rect2.Height()-135-rect1.Height(),rect1.Width(),rect1.Height());

	//m_PlayView.m_BackCardDlg.ShowWindow(SW_SHOW);
	//m_PlayView.m_BackCardDlg.SetFocus();
	//return 0;
//		BYTE bUpList[128];
//		m_PlayView.m_iCardNum=m_PlayView.m_MeCard.GetCard(m_PlayView.m_TempMeCard,bUpList);
//		m_PlayView.m_MeCard.SetShowCard(TRUE);
//		m_PlayView.m_MeCard.SetCard(m_iBackCard,NULL,(m_iPalyCardCount==2)?8:6);
//		m_PlayView.m_MeCard.SetUseMouse(FALSE);
//		m_PlayView.m_btBackCard.ShowWindow(SW_HIDE);
//		SetTimer(ID_LOOK_BACK,2000,NULL);
	/*	m_PlayView.m_MeCard.SetShowCard(FALSE);
		m_PlayView.m_MeCard.ShowWindow(SW_HIDE);
		m_PlayView.m_MeBackCard.SetShowCard(TRUE);
		m_PlayView.m_MeBackCard.SetUseMouse(FALSE);
		m_PlayView.m_MeBackCard.ShowWindow(SW_SHOW);
		m_PlayView.m_MeBackCard.SetCard(m_iBackCard,NULL,(m_iPalyCardCount==2)?8:6);
		m_PlayView.m_btBackCard.ShowWindow(SW_HIDE);
		SetTimer(ID_LOOK_BACK,2000,NULL);*/

		if (!m_bSortFalg)
		{
			m_Logic.ReSortCard(m_iMeCardList,m_iMeCardCount);
			m_bSortFalg = true;
		}
		else 
		{
			m_Logic.SortCard(m_iMeCardList,NULL,m_iMeCardCount);
			m_bSortFalg = false;
		}

		m_PlayView.m_MeCard.SetCard(m_iMeCardList,NULL,m_iMeCardCount);


	return 0;

}

//按动有事按钮函数
LRESULT	CClientGameDlg::OnHitHaveThing(WPARAM wparam, LPARAM lparam)
{
	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;
}


//不出按钮
LRESULT CClientGameDlg::OnHitPass(WPARAM wparam, LPARAM lparam)
{
	if (/*m_PlayView.m_btPass.IsWindowEnabled() &&*/ m_PlayView.m_btPass.IsWindowVisible())
	{
		KillAllTimer();
		m_PlayView.m_btOutCard.ShowWindow(SW_HIDE);
		m_PlayView.m_btPass.ShowWindow(SW_HIDE);
		m_PlayView.m_btPass.EnableWindow(FALSE);

		SendGameData(MDM_GM_GAME_NOTIFY,ASS_PASS,0);
	}
	return 0;
}


//重置游戏
void CClientGameDlg::ResetGameStation(int iGameStation)
{
	//数据重置
	m_iMeCardCount=0;
	m_iNtCount=0;
	m_iNtPeopole=-1;
	m_iNowOutPeople=-1;
	m_iBaseCount=0;
	m_iFirstOutPeople=-1;
	m_iLastCardCount=0;
	m_bShowLast=FALSE;
	::memset(m_iBackCard,0,sizeof(m_iBackCard));
	::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_btOutCard.ShowWindow(SW_HIDE);
	m_PlayView.m_btPass.ShowWindow(SW_HIDE);
///	m_PlayView.m_NtList.ShowWindow(SW_HIDE);
	//m_PlayView.m_btLastTurn.EnableWindow(FALSE);
	m_PlayView.m_btBackCard.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);
				m_PlayView.m_PassCard[i].ShowWindow(SW_HIDE);
				
			}
			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_PassCard[i].ShowWindow(SW_HIDE);
				
			}
			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_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 + -