예제 #1
0
//游戏消息
bool __cdecl CAndroidUserItemSink::OnEventGameMessage(WORD wSubCmdID, void * pBuffer, WORD wDataSize)
{
	switch (wSubCmdID)
	{
	case SUB_S_GAME_FREE:			//游戏空闲 
		{
			return OnSubGameFree(pBuffer, wDataSize);
		}
	case SUB_S_GAME_START:			//游戏开始
		{
			return OnSubGameStart(pBuffer, wDataSize);
		}
	case SUB_S_PLACE_JETTON:		//用户加注
		{
			return OnSubPlaceJetton(pBuffer, wDataSize);
		}
	case SUB_S_APPLY_BANKER:		//申请做庄 
		{
			return OnSubUserApplyBanker(pBuffer,wDataSize);
		}
	case SUB_S_CANCEL_BANKER:		//取消做庄 
		{
			return OnSubUserCancelBanker(pBuffer,wDataSize);
		}
	case SUB_S_CHANGE_BANKER:		//切换庄家 
		{
			return OnSubChangeBanker(pBuffer,wDataSize);
		}
	case SUB_S_GAME_END:			//游戏结束 
		{
			return OnSubGameEnd(pBuffer, wDataSize);
		}
	case SUB_S_SEND_RECORD:			//游戏记录 (忽略)
		{
			return true;
		}
	case SUB_S_PLACE_JETTON_FAIL:	//下注失败 (忽略)
		{
			return true;
		}
	}

	//错误断言
	ASSERT(FALSE);

	return true;
}
예제 #2
0
//网络消息
bool CGameClientDlg::OnGameMessage(WORD wSubCmdID, const void * pBuffer, WORD wDataSize)
{
	switch (wSubCmdID)
	{
	case SUB_S_GAME_FREE:		//游戏空闲
		{
			return OnSubGameFree(pBuffer,wDataSize);
		}
	case SUB_S_GAME_START:		//游戏开始
		{
			return OnSubGameStart(pBuffer,wDataSize);
		}
	case SUB_S_PLACE_JETTON:	//用户加注
		{
			return OnSubPlaceJetton(pBuffer,wDataSize);
		}
	case SUB_S_APPLY_BANKER:	//申请做庄
		{
			return OnSubUserApplyBanker(pBuffer, wDataSize);
		}
	case SUB_S_CANCEL_BANKER:	//取消做庄
		{
			return OnSubUserCancelBanker(pBuffer, wDataSize);
		}
	case SUB_S_CHANGE_BANKER:	//切换庄家
		{
			return OnSubChangeBanker(pBuffer, wDataSize);
		}
	case SUB_S_GAME_END:		//游戏结束
		{
			return OnSubGameEnd(pBuffer,wDataSize);
		}
	case SUB_S_SEND_RECORD:		//游戏记录
		{
			return OnSubGameRecord(pBuffer,wDataSize);
		}
	case SUB_S_PLACE_JETTON_FAIL:	//下注失败
		{
			return OnSubPlaceJettonFail(pBuffer,wDataSize);
		}
	}

	//错误断言
	ASSERT(FALSE);

	return true;
}
	bool		SmallNineAndroid::OnGameMessage(WORD wSubCmdID, const void * pBuffer, WORD wDataSize)
	{
		switch (wSubCmdID)
		{
			//游戏开始
		case SUB_S_GAME_START:		
			{
				OnGameStart(pBuffer, wDataSize);
			}
			break;
			//用户加注
		case SUB_S_PLACE_JETTON:	
			{
				OnSubPlaceJetton(pBuffer, wDataSize);
			}
			break;

			//申请做庄
		case SUB_S_APPLY_BANKER:	
			{
				OnApplyBanker(pBuffer, wDataSize);
			}
			break;

			//切换庄家
		case SUB_S_CHANGE_BANKER:	
			{
				OnChangeBanker(pBuffer, wDataSize);
			}
			break;

			//更新积分
		case SUB_S_CHANGE_USER_SCORE:
			{

			}
			break;

			//押注开始
		case SUB_S_StartJetton:
			{
				OnStartJetton(pBuffer, wDataSize);
			}
			break;

			//游戏结束
		case SUB_S_GAME_END:		
			{
				OnGameEnd(pBuffer, wDataSize);
			}
			break;

			//游戏记录
		case SUB_S_SEND_RECORD:		
			{
				
			}
			break;

			//游戏积分
		case SUB_S_GAME_SCORE:		
			{
				OnGameScore(pBuffer, wDataSize);
			}
			break;
		}

		return true;
	}
예제 #4
0
//游戏消息
bool __cdecl CAndroidUserItemSink::OnEventGameMessage(WORD wSubCmdID, void * pBuffer, WORD wDataSize)
{
	switch (wSubCmdID)
	{
	case SUB_S_GAME_FREE:		//游戏空闲
		{
			m_lMeMaxScore =0;						         // 最大下注
			m_lAllMaxScore=0L;                     // 当局可以下注的总注
			ZeroMemory(m_lMeScore,sizeof(m_lMeScore));       // 每个方位总注
			ZeroMemory(m_lAllScore,sizeof(m_lAllScore));	 // 每个方位总注
			m_bEnableNote = false;
			return  true;
		}
	case SUB_S_GAME_START:		// 游戏开始
		{
			//效验数据
			ASSERT(wDataSize==sizeof(CMD_S_GameStart));
			if (wDataSize!=sizeof(CMD_S_GameStart))
			{
				return false;
			}

			//消息处理
			CMD_S_GameStart * pGameStart=(CMD_S_GameStart *)pBuffer;

			ZeroMemory(m_lMeScore, sizeof(m_lMeScore));
			ZeroMemory(m_lAllScore, sizeof(m_lAllScore));

			m_lMeMaxScore=pGameStart->lUserMaxScore;
			m_wCurrentBanker = pGameStart->wBankerUser;
			m_lBankerScore = pGameStart->lBankerScore;
			m_lAllMaxScore=pGameStart->lAllMaxScore;               // 当局可以下注的总注
			if (NULL != m_pIAndroidUserItem)
			{
				m_bEnableNote = true;
				UINT nElapse=(rand()%TIME_RAND) +TIME_LESS;
				if (pGameStart->cbTimeLeave>(TIME_LESS+nElapse))
				{
					if (m_wCurrentBanker != m_pIAndroidUserItem->GetChairID())
					{
						m_pIAndroidUserItem->SetGameTimer(IDI_USER_JETTON,nElapse);
						m_pIAndroidUserItem->SetGameTimer(IDI_PLACE_JETTON,pGameStart->cbTimeLeave-TIME_LESS);
					}
					else
					{
						//m_pIAndroidUserItem->SetGameTimer(IDI_SELECT_SICBOTYPE,nElapse);
					}
				}
			}

			//设置文件名
			TCHAR szPath[MAX_PATH]=TEXT("");
			TCHAR szINIPath[MAX_PATH] = TEXT("");
			GetCurrentDirectory(sizeof(szPath),szPath);
			_snprintf(szINIPath,sizeof(szINIPath),TEXT("%s\\SicboShowHandConfig.ini"),szPath);
			iRandLimit[0]=GetPrivateProfileInt("RandLimit","Area0",200,szINIPath);
			iRandLimit[1]=GetPrivateProfileInt("RandLimit","Area1",200,szINIPath);
			iRandLimit[2]=GetPrivateProfileInt("RandLimit","Area2",-1,szINIPath);
			iRandLimit[3]=GetPrivateProfileInt("RandLimit","Area3",20,szINIPath);
			iRandLimit[4]=GetPrivateProfileInt("RandLimit","Area4",60,szINIPath);
			iRandLimit[5]=GetPrivateProfileInt("RandLimit","Area5",85,szINIPath);
			iRandLimit[6]=GetPrivateProfileInt("RandLimit","Area6",97,szINIPath);
			return true;
		}
	case SUB_S_PLACE_JETTON:	//用户加注
		{
			return OnSubPlaceJetton(pBuffer,wDataSize);
		}
	case SUB_S_APPLY_BANKER:	//申请做庄
		{
			return OnSubUserApplyBanker(pBuffer,wDataSize);
		}
	case SUB_S_CANCEL_BANKER:	//取消做庄
		{
			return OnSubUserCancelBanker(pBuffer,wDataSize);
		}
	case SUB_S_CHANGE_BANKER:	// 切换庄家
		{
			//效验数据
			ASSERT(wDataSize==sizeof(CMD_S_ChangeBanker));
			if (wDataSize!=sizeof(CMD_S_ChangeBanker))
			{
				return false;
			}

			//消息处理
			CMD_S_ChangeBanker * pChangeBanker=(CMD_S_ChangeBanker *)pBuffer;

			//庄家信息
			m_wCurrentBanker = pChangeBanker->wBankerUser;
			m_lBankerScore = pChangeBanker->lBankerScore;
			m_iMaxAndroidBanker = 1 + rand()%MAX_ANDROID_BANKER;

			// 删除玩家
			for (int i=0; i<m_arApplyBanker.GetCount(); ++i)
			{
				if (m_arApplyBanker[i] == pChangeBanker->dwUserID)
				{
					m_arApplyBanker.RemoveAt(i);
					if (m_arApplyBanker.GetCount() < m_iMaxAndroidBanker)
					{
						m_pIAndroidUserItem->SetGameTimer(IDI_APPLY_BANKER, (TIME_LESS+rand()%TIME_APPLY_BANKER));	
					}
					return true;
				}
			}
			return true;
		}
	case SUB_S_GAME_END:		//游戏结束
		{
			m_bEnableNote = false;
			// 清除定时器
			if (NULL != m_pIAndroidUserItem)
			{				
				m_pIAndroidUserItem->KillGameTimer(IDI_USER_JETTON);
				m_pIAndroidUserItem->KillGameTimer(IDI_SELECT_SICBOTYPE);
				if (INVALID_CHAIR == m_wCurrentBanker)
				{
					m_arApplyBanker.RemoveAll();
					m_pIAndroidUserItem->SetGameTimer(IDI_APPLY_BANKER, (TIME_LESS+rand()%TIME_APPLY_BANKER));
				}
			}
			return true;
		}
	case SUB_S_SEND_RECORD:		//游戏记录
	case SUB_C_CHANGE_SICBO_TYPE:
		{
			// 机器人不需要处理
			return true;
		}
	case SUB_S_PLACE_JETTON_FAIL:	//下注失败
		{
			//效验数据
			ASSERT(wDataSize==sizeof(CMD_S_PlaceJettonFail));
			if (wDataSize!=sizeof(CMD_S_PlaceJettonFail))
			{
				return false;
			}

			//消息处理
			CMD_S_PlaceJettonFail * pPlaceJettonFail=(CMD_S_PlaceJettonFail *)pBuffer;

			//效验参数
			BYTE cbViewIndex=pPlaceJettonFail->lJettonArea;
			ASSERT(cbViewIndex<COUNT_AZIMUTH);
			if (cbViewIndex>=COUNT_AZIMUTH)
			{
				return false;
			}

			__int64 lJettonCount=pPlaceJettonFail->lPlaceScore;
			m_lMeScore[cbViewIndex] -= lJettonCount;
			if (m_lMeScore[cbViewIndex] < 0)
			{
				m_lMeScore[cbViewIndex] = 0;
			}
			return true;
		}
	default:break;
	}

	//错误断言
	ASSERT(FALSE);

	return true;
}
예제 #5
0
bool CDanShuangGame::OnGameMessage(WORD wMainCmd, WORD wSubCmd, const void * pBuffer, WORD wDataSize)
{
	CCLOG("GameMsg:%d",wSubCmd);
	switch(wSubCmd)
	{
	case SUB_S_GAME_STATUS:					//游戏状态
		{
			//效验数据
			CC_ASSERT(wDataSize==sizeof(CMD_S_GameStatus));
			if (wDataSize!=sizeof(CMD_S_GameStatus))
				return false;

			CMD_S_GameStatus * pGameStatus = (CMD_S_GameStatus *)pBuffer;
			m_nGameStatus = pGameStatus->cbGameStatus;

			return true;
		}
	case SUB_S_GAME_FREE:					//游戏空闲
		{
			return OnSubGameFree(pBuffer,wDataSize);
		}
	case SUB_S_GAME_ANIMATION:				//游戏动画
		{
			return OnSubGameAnimation(pBuffer,wDataSize);
		}
	case SUB_S_GAME_START:					//游戏开始
		{
			return OnSubGameStart(pBuffer,wDataSize);
		}
	case SUB_S_PLACE_JETTON:				//用户加注
		{
			return OnSubPlaceJetton(pBuffer,wDataSize,true);
		}
	case SUB_S_GAME_END:					//游戏结束
		{
			return OnSubGameEnd(pBuffer,wDataSize);
		}
	case SUB_S_APPLY_BANKER:				//申请坐庄
		{
			return OnSubUserApplyBanker(pBuffer, wDataSize);
		}
	case SUB_S_CHANGE_BANKER:				//切换庄家
		{
			return OnSubChangeBanker(pBuffer, wDataSize);
		}
	case SUB_S_CANCEL_BANKER:				//取消坐庄
		{
			return OnSubUserCancelBanker(pBuffer, wDataSize);
		}
	case SUB_S_CLEAN:						//取消下注
		{
			return OnSubClearJetton(pBuffer,wDataSize);
		}
	case SUB_S_SCORE_RECORD:				//查看分数记录
		{
			return OnSubScoreRecord(pBuffer,wDataSize);
		}
	default:break;
	}

	CC_ASSERT(false);
	return false;
}
예제 #6
0
//网络消息
bool CGameClientDlg::OnGameMessage(WORD wSubCmdID, const void * pBuffer, WORD wDataSize)
{
	switch (wSubCmdID)
	{
	case SUB_S_GAME_FREE:		//游戏空闲
		{
			return OnSubGameFree(pBuffer,wDataSize);
		}
	case SUB_S_GAME_START:		//游戏开始
		{
			return OnSubGameStart(pBuffer,wDataSize);
		}
	case SUB_S_PLACE_JETTON:	//用户加注
		{
			return OnSubPlaceJetton(pBuffer,wDataSize);
		}
	case SUB_S_APPLY_BANKER:	//申请做庄
		{
			return OnSubUserApplyBanker(pBuffer, wDataSize);
		}
	case SUB_S_CANCEL_BANKER:	//取消做庄
		{
			return OnSubUserCancelBanker(pBuffer, wDataSize);
		}
	case SUB_S_CHANGE_BANKER:	//切换庄家
		{
			return OnSubChangeBanker(pBuffer, wDataSize);
		}
	case SUB_S_GAME_END:		//游戏结束
		{
			return OnSubGameEnd(pBuffer,wDataSize);
		}
	case SUB_S_SEND_RECORD:		//游戏记录
		{
			return OnSubGameRecord(pBuffer,wDataSize);
		}
	case SUB_S_PLACE_JETTON_FAIL:	//下注失败
		{
			return OnSubPlaceJettonFail(pBuffer,wDataSize);
		}
	case SUB_S_UPDATE_USER_SCORE:		//更新成绩
		{
			//效验数据
			ASSERT(wDataSize==sizeof(CMD_S_UpdateUserScore));
			if (wDataSize!=sizeof(CMD_S_UpdateUserScore)) return false;

			//消息处理
			CMD_S_UpdateUserScore * UpdateUserScore=(CMD_S_UpdateUserScore *)pBuffer;
			m_lMeMaxScore = UpdateUserScore->lUserScore;
			m_GameClientView.SetMeMaxScore(m_lMeMaxScore);
			return true;
		}
	case SUB_S_UPDATE_BANKER_SCORE:	//更新成绩
		{
			//效验数据
			ASSERT(wDataSize==sizeof(CMD_S_UpdateBankerScore));
			if (wDataSize!=sizeof(CMD_S_UpdateUserScore)) return false;

			//消息处理
			CMD_S_UpdateBankerScore * UpdateBankerScore=(CMD_S_UpdateBankerScore *)pBuffer;
			m_lBankerScore = UpdateBankerScore->lBankerScore;
			m_GameClientView.SetBankerInfo(m_wCurrentBanker,m_lBankerScore);
			return true;
		}
	}

	//错误断言
	ASSERT(FALSE);

	return true;
}