/** * 获取游戏状态信息 */ 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; }
//获取游戏状态信息 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; }