Exemple #1
0
void CScabbyQueenPlayer::SendComplete(TInt aError)
	{
	switch (iSendMode)
		{
		case ESendReadyForUpdate:
			SendReadyForUpdateComplete();
		break;
		
		case ESendRecvTokenSuccess:
			SentTokenRecvSuccess();
		break;
		
		case ESendCardRecvNotification:
			SentCardRecvNotification();
		break;
		
		case ESendGameStatus:
			SentGameStatus();
		break;
		
		case ESendReadyForToken:
			SentReadyForToken();
		break;
		
		case ESendCardNumber:
			SendOfCardNumberComplete();
		break;
		
		case ESendOwnHandSize:
			SendOfHandSizeComplete();
		break;
		
		case ESendPlayerCard:
			SendCardComplete();
		break;
			
		case EPlayerSendAckSendCard:
			SendCard();
		break;
			
		case EPlayerSendAckRecvHandSize:
			PrepareToSendCard();
		break;
			
		case EPlayerSendAckRecvCard:
			RecvOfCardComplete();
		break;
		
		case EPlayerSendAckRecvWait:
			AckSentAfterRecvWait(aError);
		break;
		default:
		break;
		}
	}
Exemple #2
0
void CScabbyQueenPlayer::RecvComplete(TInetAddr /*aRecvAddr*/, TInt /*aError*/)
	{

	switch (iRecvMode)
		{
		case EPlayerRecvNum:
			RecvOfPlayerNumComplete();
		break;
		
		case EPlayerRecvHand:
			RecvOfHandComplete();
		break;
		
		case EPlayerRecvStatus:
			RecvOfPlayTokenComplete();
		break;
		
		case EGameStatus:
			SendGameStatus();
		break;
		
		case EPlayerUpdate:
			ReceiveNextRole();
		break;
		
		case EDealerReady:
			RecvUpdate();
		break;
		
		case ERecvHandSize:
			RecvHandSize();
		break;
		
		case ERecvCardNum:
			SendCard();
		break;
		
		case ERecvCard:
			RecvOfCardComplete();
		break;

		default:
			break;
		}
	}
//设置服务器时间
void CTableFrameSink::SetGameTimer(WORD wTimerID,UINT nElapse)
{
	nElapse=nElapse*1000;
	/*SetTimer(NULL,wTimerID,nElapse,NULL);
	MSG msg;
	msg.message=NULL;
	PeekMessage(&msg,NULL,NULL,NULL,FALSE);
	while(GetMessage(&msg,NULL,NULL,NULL))
	{
		if(msg.message==WM_TIMER)
		{
					SendCard();	
					break;
		}
	}
	KillTimer(NULL,wTimerID);*/
	Sleep(nElapse);
	SendCard();	
}
//定时器消息
void CGameClientView::OnTimer(UINT nIDEvent)
{
	if (nIDEvent==IDI_CARTOON)		//动画到时
	{
		//变量定义
		bool bKillTimer=true;

		//闪牌动画
		if(m_bStopDraw && (FlashCard()==true))
		{
			bKillTimer=false;
		}

		//比牌动画
		if ((m_wLoserUser!=INVALID_CHAIR)&&(CompareCard()==true))
		{
			bKillTimer=false;
		}

		//发牌动画
		if ((m_SendCardItemArray.GetCount()>0)&&(SendCard()==true))
		{
			bKillTimer=false;
		}

		//删除时间
		if (bKillTimer==true)
		{
			m_bCartoon=false;
			KillTimer(nIDEvent);
		}

		return;
	}
	

	__super::OnTimer(nIDEvent);
}
//游戏开始
bool CServerGameDesk::GameBegin(BYTE bBeginFlag)
{
	
	if (__super::GameBegin(bBeginFlag)==false) 
	{
		GameFinish(0,GF_SALE);
		return false;
	}

	m_bGameStation = GS_SEND_CARD;				//游戏状态

	//-ADD--BY---DWJ-20121203
	//这里每盘根据房间ID读取下配置文件中的ReSetAIHaveWinMoney 参数 设定下机器人赢了多少钱;
	GetAIContrlSetFromIni(m_pDataManage->m_InitData.uRoomID);

	//牛牛玩家人数
	m_byCowUserNum = 0;
	//是否牛牛玩家
	memset(m_bIsCowUser, false, sizeof(m_bIsCowUser));

	for (int i = 0; i < PLAY_COUNT; ++i) 
	{
		if(m_pUserInfo[i])
		{
			m_bIsInGame[i] = true;
		}
	}

	//分发扑克
	m_Logic.RandCard(m_iTotalCard,m_iAllCardCount,m_bHaveKing);
	int temp = rand()%100;

	//洗到好牌
	if (temp < m_iGoodCard)
	{
		for (int i=0; i<20; i++)
		{
			if (GetMaxCardShape(m_iTotalCard,m_iAllCardCount) > UG_BULL_SEVEN)
			{
				break;
			}

			m_Logic.RandCard(m_iTotalCard,m_iAllCardCount,m_bHaveKing);
		}
	}

	srand(GetTickCount());

	m_bGameStation = GS_SEND_CARD;

	BeginUpgradeStruct begindata;

	::CopyMemory(begindata.bIsInGame,m_bIsInGame,sizeof(m_bIsInGame));

	for(int i = 0; i < PLAY_COUNT; ++i)
	{
		if(NULL == m_pUserInfo[i])
			continue;
	
		SendGameData(i,&begindata,sizeof(BeginUpgradeStruct),MDM_GM_GAME_NOTIFY,ASS_BEGIN_UPGRADE,0);
	}
	SendWatchData(m_bMaxPeople,&begindata,sizeof(BeginUpgradeStruct),MDM_GM_GAME_NOTIFY,ASS_BEGIN_UPGRADE,0);

	SendCard();

	DebugPrintf("游戏开始__ happy landowner gamebing end!");

	return true;
}