コード例 #1
0
ファイル: ServerManage.cpp プロジェクト: lincoln56/robinerp
/**
 * 获取游戏状态信息
 */
bool CServerGameDesk::OnGetGameStation(BYTE bDeskStation, UINT uSocketID, bool bWatchUser)
{
	switch (m_bGameStation)
	{
	case GS_WAIT_SETGAME:		//游戏没有开始状态
		{
			GameStation_1 GameStation;
			::memset(&GameStation,0,sizeof(GameStation));
			GameStation.iMainVersion=MAIN_VERSION;
			GameStation.iLessVersion=ASS_VERSION;
			GameStation.uRunPublish=m_pDataManage->m_InitData.uRunPublish;
			GameStation.basepoint=m_pDataManage->m_InitData.uBasePoint;
			//发送数据
			SendGameStation(bDeskStation,uSocketID,bWatchUser,&GameStation,sizeof(GameStation));

			MessageStruct Mess;
			ZeroMemory(Mess.Message,200);
			lstrcpy(Mess.Message,"欢迎您参加四国军棋游戏,祝您玩得开心!");
			SendGameData(bDeskStation,&Mess,sizeof(Mess),MDM_GM_GAME_NOTIFY,ASS_MESSAGE,0);

			return TRUE;
		}
	case GS_WAIT_ARGEE:			//等待玩家开始状态
		{
			GameStation_2 GameStation;
			::memset(&GameStation,0,sizeof(GameStation));
			GameStation.iPlayCount=m_iLessCount;
			GameStation.iMainVersion=MAIN_VERSION;
			GameStation.iLessVersion=ASS_VERSION;
			GameStation.uRunPublish=m_pDataManage->m_InitData.uRunPublish;
			GameStation.basepoint=m_pDataManage->m_InitData.uBasePoint;
			for(int i=0;i<MAX_I;i++)
		      for(int j=0;j<MAX_J;j++)
	        GameStation.mBoard[i][j]=m_Logic.mBoard[i][j];

			//发送数据
			SendGameStation(bDeskStation,uSocketID,bWatchUser,&GameStation,sizeof(GameStation));
			return TRUE;
		}
	case GS_BUZHEN:		//发牌状态(还未发牌)
	case GS_PLAY_GAME:	//游戏中状态
		{
			GameStation_3 GameStation;
			::memset(&GameStation,0,sizeof(GameStation));
			GameStation.iPlayCount=m_iLessCount;
			GameStation.iTimerCount = m_iTimerCount ; 
			GameStation.iPunishPoint=m_PunishPoint[bDeskStation];
			GameStation.iBeenPlayGame=m_iBeenPlayGame;
			GameStation.m_iNowOutPeople=m_Logic.m_iNowOutPeople;	

			GameStation.m_iStartI=m_Logic.m_iStartI;
			GameStation.m_iStartJ=m_Logic.m_iStartJ;
			GameStation.m_iEndI=m_Logic.m_iEndI;
			GameStation.m_iEndJ=m_Logic.m_iEndJ;
			GameStation.uRunPublish=m_pDataManage->m_InitData.uRunPublish;
			GameStation.basepoint=m_pDataManage->m_InitData.uBasePoint;
			for(int i=0;i<MAX_I;i++)
		      for(int j=0;j<MAX_J;j++)
	        GameStation.mBoard[i][j]=m_Logic.mBoard[i][j];


			int iSendSize=sizeof(GameStation);
			SendGameStation(bDeskStation,uSocketID,bWatchUser,&GameStation,iSendSize);
			return TRUE;
		}

	case GS_WAIT_NEXT:		//等待下一盘游戏开始
		{
			GameStation_5 GameStation;
			::memset(&GameStation,0,sizeof(GameStation));
			GameStation.iPlayCount=m_iLessCount;
			GameStation.iPunishPoint=m_PunishPoint[bDeskStation];			
			GameStation.iBeenPlayGame=m_iBeenPlayGame;		
			GameStation.uRunPublish=m_pDataManage->m_InitData.uRunPublish;
			GameStation.basepoint=m_pDataManage->m_InitData.uBasePoint;
			//发送数据
			SendGameStation(bDeskStation,uSocketID,bWatchUser,&GameStation,sizeof(GameStation));
			return TRUE;
		}
	}
	return false;
}
コード例 #2
0
//获取游戏状态信息
bool CServerGameDesk::OnGetGameStation(BYTE bDeskStation, UINT uSocketID, bool bWatchUser)
{
	m_bIsCut[bDeskStation] = false;

	SuperLoad();

	DebugPrintf("用户进来  位置=【%d】状态=【%d】",bDeskStation,m_bGameStation);

	switch (m_bGameStation)
	{
	case GS_WAIT_SETGAME:		//游戏没有开始状态
	case GS_WAIT_ARGEE:			//等待玩家开始状态
		{
			GameStation_2 GameStation;

			GetIniData(GameStation.s_Data);		//获取读取INI文件数据

			GetBaseData(GameStation.sBData, bDeskStation);	//获取游戏基本数据

			SendGameStation(bDeskStation,uSocketID,bWatchUser,&GameStation,sizeof(GameStation));
			
			break;
		}
	case GS_SEND_CARD:		//发牌状态
		{
			GameStation_3 GameStation;

			GetIniData(GameStation.s_Data);		//获取读取INI文件数据

			GetBaseData(GameStation.sBData, bDeskStation);	//获取游戏基本数据

			::CopyMemory(GameStation.iUCCount,m_iUCCount,sizeof(m_iUCCount));

			::CopyMemory(GameStation.byUCard,m_byUCard[bDeskStation],sizeof(m_byUCard[bDeskStation]));

			//不充许 旁观
			if(bWatchUser && !m_bWatchOther[bDeskStation])
			{
				::memset(GameStation.byUCard,0x4D,sizeof(GameStation.byUCard));	
			}
	
			SendGameStation(bDeskStation,uSocketID,bWatchUser,&GameStation,sizeof(GameStation));
			
			break;
		}
	case GS_PLAY_GAME:	//游戏中状态
		{
			GameStation_4 GameStation;

			GetIniData(GameStation.s_Data);		//获取读取INI文件数据

			GetBaseData(GameStation.sBData, bDeskStation);	//获取游戏基本数据

			::CopyMemory(GameStation.iUCCount,m_iUCCount,sizeof(m_iUCCount));

			::CopyMemory(GameStation.byUCard,m_byUCard[bDeskStation],sizeof(m_byUCard[bDeskStation]));

			::CopyMemory(GameStation.byDownCard,m_bBullCard[bDeskStation],sizeof(m_bBullCard[bDeskStation]));

			GameStation.iSurplusTime = m_iSurplusTime;		//剩余的时间

			//不充许 旁观
			if(bWatchUser && !m_bWatchOther[bDeskStation])
			{
				::memset(GameStation.byUCard,0x4D,sizeof(GameStation.byUCard));	
			}
	
			SendGameStation(bDeskStation,uSocketID,bWatchUser,&GameStation,sizeof(GameStation));
			
			break;
		}
	case GS_WAIT_NEXT:		//等待下一盘游戏开始
		{
			GameStation_5 GameStation;

			GetIniData(GameStation.s_Data);		//获取读取INI文件数据

			GetBaseData(GameStation.sBData, bDeskStation);	//获取游戏基本数据
	
			SendGameStation(bDeskStation,uSocketID,bWatchUser,&GameStation,sizeof(GameStation));
			
			break;
		}
	}

	return true;
}