Esempio n. 1
0
//切换庄家
bool CGameClientDlg::OnSubChangeBanker(const void * pBuffer, WORD wDataSize)
{
	//效验数据
	ASSERT(wDataSize==sizeof(CMD_S_ChangeBanker));
	if (wDataSize!=sizeof(CMD_S_ChangeBanker)) return false;

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

	//显示图片
	m_GameClientView.ShowChangeBanker(m_wCurrentBanker!=pChangeBanker->wBankerUser);

	//自己判断
	if (m_wCurrentBanker==GetMeChairID() && IsLookonMode() == false && pChangeBanker->wBankerUser!=GetMeChairID()) 
	{
		m_bMeApplyBanker=false;
	}
	else if (IsLookonMode() == false && pChangeBanker->wBankerUser==GetMeChairID())
	{
		m_bMeApplyBanker=true;
	}

	//庄家信
	SetBankerInfo(pChangeBanker->wBankerUser,pChangeBanker->lBankerScore);
	m_GameClientView.SetBankerScore(0,0);

	//删除玩家
	if (m_wCurrentBanker!=INVALID_CHAIR)
	{
		tagUserData const *pBankerUserData=GetUserData(m_wCurrentBanker);
		if (pBankerUserData != NULL)
		{
			tagApplyUser ApplyUser;
			ApplyUser.strUserName = pBankerUserData->szName;
			m_GameClientView.m_ApplyUser.DeleteUser(ApplyUser);
		}
	}

	//更新界面
	UpdateButtonContron();
	m_GameClientView.UpdateGameView(NULL);

	return true;
}
Esempio n. 2
0
//游戏开始
bool CGameClientDlg::OnSubGameStart(const void * pBuffer, WORD wDataSize)
{
	//效验数据
	ASSERT(wDataSize==sizeof(CMD_S_GameStart));
	if (wDataSize!=sizeof(CMD_S_GameStart)) return false;

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

	//庄家信息
	SetBankerInfo(pGameStart->wBankerUser,pGameStart->lBankerScore);

	//玩家信息
	m_lMeMaxScore=pGameStart->lUserMaxScore;
	m_GameClientView.SetMeMaxScore(m_lMeMaxScore);

	m_lAreaLimitScore = pGameStart->lAreaLimitScore;
	m_GameClientView.SetAreaLimitScore(m_lAreaLimitScore);

	//设置时间
	SetGameTimer(GetMeChairID(),IDI_PLACE_JETTON,pGameStart->cbTimeLeave);
	//设置空闲状态
	m_GameClientView.SetFreeTime();

	//设置状态
	SetGameStatus(GS_PLACE_JETTON);

	//更新控制
	UpdateButtonContron();

	//更新界面
	m_GameClientView.UpdateGameView(NULL);

	//播放声音
	if (IsEnableSound()) 
	{
		PlayGameSound(GAME_START);
		m_DTSDBackground.Play(0,true);
	}

	return true;
}
Esempio n. 3
0
//切换庄家
bool CDanShuangGame::OnSubChangeBanker(const void * pBuffer, WORD wDataSize)
{
	//效验数据
	CC_ASSERT(wDataSize==sizeof(CMD_S_ChangeBanker));
	if (wDataSize!=sizeof(CMD_S_ChangeBanker)) return false;

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

	WORD wPrevBanker = m_wCurrentBanker;	//备份上个庄家

	//自己判断
	if (m_wCurrentBanker == m_pDirector->m_nMeChairID && pChangeBanker->wBankerUser != m_pDirector->m_nMeChairID) 
	{
		m_bMeApplyBanker=false;
	}
	else if (pChangeBanker->wBankerUser == m_pDirector->m_nMeChairID)
	{
		m_bMeApplyBanker=true;
	}

	//庄家信息
	SetBankerInfo(pChangeBanker->wBankerUser, pChangeBanker->lBankerScore);

	//显示图片
	m_pDanShuangGameView->ShowChangeBanker(wPrevBanker != pChangeBanker->wBankerUser);
	m_pDanShuangGameView->SetBankerScore(0, 0);

	//删除上庄列表玩家
	if (m_wCurrentBanker!=INVALID_CHAIR)
	{
		tagApplyUser ApplyUser;
		ApplyUser.wChairID = m_wCurrentBanker;
		m_pDanShuangGameView->CancelApplyBanker(ApplyUser);
	}

	//更新控件
	UpdateButtonControl();

	return true;
}
Esempio n. 4
0
//游戏开始
bool CDanShuangGame::OnSubGameStart(const void * pBuffer, WORD wDataSize)
{
	//效验数据
	CC_ASSERT(wDataSize==sizeof(CMD_S_GameStart));
	if (wDataSize!=sizeof(CMD_S_GameStart)) return false;

	//消息处理
	CMD_S_GameStart * pGameStart=(CMD_S_GameStart *)pBuffer;
	memset(m_lMeScore,0, sizeof(m_lMeScore));
	memset(m_lAllScore, 0,sizeof(m_lAllScore));

	//庄家信息
	SetBankerInfo(pGameStart->wBankerUser,pGameStart->lBankerScore);

	//玩家信息
	m_lMeMaxScore=pGameStart->lUserMaxScore;
	m_lAllMaxScore = pGameStart->lAllMaxScore;

	//设置时间
	m_pDanShuangGameView->SetGameTime(pGameStart->cbTimeLeave,GS_GAME_START);

	//停止抛币动画
	m_pDanShuangGameView->BeginThrowCoin(false);

	//设置状态
	m_nGameStatus = GS_GAME_START;

	//更新控制
	UpdateButtonControl(true);

	//播放声音
	string strPath = SOUND_PATH;
	strPath += "GAME_START.ogg";
	SimpleAudioEngine::sharedEngine()->playEffect(strPath.c_str());

	return true;
}
Esempio n. 5
0
bool CDanShuangGame::OnEventGameScene(bool bLookonOther, const void * pBuffer, WORD wDataSize)
{
	switch (m_nGameStatus)
	{
	case GS_GAME_FREE:	//空闲状态
	case GS_GAME_ANIMATION:	//动画状态
		{
			//效验数据
			CC_ASSERT(wDataSize == sizeof(CMD_S_StatusFree));
			if (wDataSize != sizeof(CMD_S_StatusFree))
				return false;

			//消息处理
			CMD_S_StatusFree * pStatusFree = (CMD_S_StatusFree *)pBuffer;

			//庄家信息
			SetBankerInfo(pStatusFree->wBankerUser, pStatusFree->lBankerScore);
			m_pDanShuangGameView->SetBankerScore(pStatusFree->wBankerTime, pStatusFree->lBankerWinScore);
			m_bEnableSysBanker = pStatusFree->bEnableSysBanker;

			//控制信息
			m_lApplyBankerCondition = pStatusFree->lApplyBankerCondition;
			m_lAreaLimitScore = pStatusFree->lAreaLimitScore;
			char szApplyBankerCondition[256];
			sprintf(szApplyBankerCondition,"上庄条件:%lld分",m_lApplyBankerCondition);
			//m_pDanShuangGameView->ShowMessage(szApplyBankerCondition);

			//游戏记录
			m_pDanShuangGameView->SetGameHistory(pStatusFree->cbOpenRecord);

			//设置时间
			m_pDanShuangGameView->SetGameTime(pStatusFree->cbTimeLeave, m_nGameStatus);

			if (m_nGameStatus == GS_GAME_FREE)
			{
				//清理桌面
				m_pDanShuangGameView->SetWinnerSide(0xFF);
				m_pDanShuangGameView->ClearAllJetton();
			}
			else if (m_nGameStatus == GS_GAME_ANIMATION)
			{
				//停止抛币动画
				m_pDanShuangGameView->BeginThrowCoin(false);
			}

			//更新控制
			UpdateButtonControl(false);

			return true;
		}
	case GS_GAME_START:	//游戏状态
		{
			//效验数据
			CC_ASSERT(wDataSize == sizeof(CMD_S_StatusJetton));
			if (wDataSize != sizeof(CMD_S_StatusJetton))
				return false;

			//消息处理
			CMD_S_StatusJetton * pStatusJetton = (CMD_S_StatusJetton *)pBuffer;

			//下注信息
			WORD wMeChairID=m_pDirector->GetMeData()->nUserChair;
			for (BYTE i =0; i < AREA_COUNT; i++)
			{
				m_lAllScore[i] += pStatusJetton->lAllScore[i];
				m_pDanShuangGameView->PlaceUserJetton(i + JA_RED, pStatusJetton->lAllScore[i] - pStatusJetton->lUserScore[i], INVALID_CHAIR);
				m_lMeScore[i] += pStatusJetton->lUserScore[i];
				m_pDanShuangGameView->PlaceUserJetton(i + JA_RED, pStatusJetton->lUserScore[i], wMeChairID);
				if (m_lMeScore[i] > 0)
				{
					m_bMePlaceJetton = true;
				}
			}

			//玩家积分
			m_lMeMaxScore = pStatusJetton->lUserMaxScore;
			m_lAllMaxScore = pStatusJetton->lAllMaxScore;

			//控制信息
			m_lApplyBankerCondition = pStatusJetton->lApplyBankerCondition;
			m_lAreaLimitScore = pStatusJetton->lAreaLimitScore;
			char szApplyBankerCondition[256];
			sprintf(szApplyBankerCondition,"上庄条件:%lld分",m_lApplyBankerCondition);
			//m_pDanShuangGameView->ShowMessage(szApplyBankerCondition);

			//庄家信息
			SetBankerInfo(pStatusJetton->wBankerUser, pStatusJetton->lBankerScore);
			m_pDanShuangGameView->SetBankerScore(pStatusJetton->wBankerTime, pStatusJetton->lBankerWinScore);
			m_bEnableSysBanker = pStatusJetton->bEnableSysBanker;

			//游戏记录
			m_pDanShuangGameView->SetGameHistory(pStatusJetton->cbOpenRecord);

			//设置时间
			m_pDanShuangGameView->SetGameTime(pStatusJetton->cbTimeLeave, m_nGameStatus);

			//停止抛币动画
			m_pDanShuangGameView->BeginThrowCoin(false);

			//更新控制
			UpdateButtonControl(true);
			return true;
		}
	case GS_GAME_END:	//结束状态
		{
			//效验数据
			CC_ASSERT(wDataSize == sizeof(CMD_S_StatusEnd));
			if (wDataSize != sizeof(CMD_S_StatusEnd))
				return false;

			//消息处理
			CMD_S_StatusEnd * pStatusEnd = (CMD_S_StatusEnd *)pBuffer;

			//下注信息
			WORD wMeChairID=m_pDirector->GetMeData()->nUserChair;
			for (BYTE i =0; i < AREA_COUNT; i++)
			{
				memcpy(m_lAllScore, pStatusEnd->lAllScore, sizeof(pStatusEnd->lAllScore));
				m_pDanShuangGameView->PlaceUserJetton(i + JA_RED, pStatusEnd->lAllScore[i] - pStatusEnd->lUserScore[i], INVALID_CHAIR);
				memcpy(m_lMeScore, pStatusEnd->lUserScore, sizeof(pStatusEnd->lUserScore));
				m_pDanShuangGameView->PlaceUserJetton(i + JA_RED, pStatusEnd->lUserScore[i], wMeChairID);
			}

			//控制信息
			m_lApplyBankerCondition = pStatusEnd->lApplyBankerCondition;
			m_lAreaLimitScore = pStatusEnd->lAreaLimitScore;
			char szApplyBankerCondition[256];
			sprintf(szApplyBankerCondition,"上庄条件:%lld分",m_lApplyBankerCondition);
			//m_pDanShuangGameView->ShowMessage(szApplyBankerCondition);

			//庄家信息
			SetBankerInfo(pStatusEnd->wBankerUser, pStatusEnd->lBankerScore);
			m_pDanShuangGameView->SetBankerScore(pStatusEnd->wBankerTime, pStatusEnd->lBankerWinScore);
			m_bEnableSysBanker = pStatusEnd->bEnableSysBanker;

			//游戏记录
			m_pDanShuangGameView->SetGameHistory(pStatusEnd->cbOpenRecord);

			//结束信息
			m_pDanShuangGameView->SetCardInfo((enOpenCardType)pStatusEnd->cbOpenArea, false);
			m_pDanShuangGameView->FinishOpenAnimation(false);
			m_pDanShuangGameView->SetCurGameScore(pStatusEnd->lEndUserScore, pStatusEnd->lEndUserReturnScore,
				pStatusEnd->lEndBankerScore, pStatusEnd->lEndRevenue);

			//设置时间
			m_pDanShuangGameView->SetGameTime(pStatusEnd->cbTimeLeave, m_nGameStatus);

			//更新控制
			UpdateButtonControl(false);
			return true;
		}
	}
	return true;
}
Esempio n. 6
0
//游戏场景
bool CGameClientDlg::OnGameSceneMessage(BYTE cbGameStation, bool bLookonOther, const void * pBuffer, WORD wDataSize)
{
	switch (cbGameStation)
	{
	case GS_FREE:			//空闲状态
		{
			//效验数据
			ASSERT(wDataSize==sizeof(CMD_S_StatusFree));
			if (wDataSize!=sizeof(CMD_S_StatusFree)) return false;

			//消息处理
			CMD_S_StatusFree * pStatusFree=(CMD_S_StatusFree *)pBuffer;

			//设置时间
			SetGameTimer(GetMeChairID(),IDI_FREE,pStatusFree->cbTimeLeave);

            //玩家信息
			m_lMeMaxScore=pStatusFree->lUserMaxScore;			
			m_GameClientView.SetMeMaxScore(m_lMeMaxScore);
			WORD wMeChairID=GetMeChairID();
			m_GameClientView.SetMeChairID(SwitchViewChairID(wMeChairID));

            //庄家信息
			SetBankerInfo(pStatusFree->wBankerUser,pStatusFree->lBankerScore);
			m_GameClientView.SetBankerScore(pStatusFree->cbBankerTime,pStatusFree->lBankerWinScore);
			m_bEnableSysBanker=pStatusFree->bEnableSysBanker;
			m_GameClientView.EnableSysBanker(m_bEnableSysBanker);

            //控制信息
			m_lApplyBankerCondition=pStatusFree->lApplyBankerCondition;
			m_lAreaLimitScore=pStatusFree->lAreaLimitScore;
			m_GameClientView.SetAreaLimitScore(m_lAreaLimitScore);

			//设置状态
			SetGameStatus(GS_FREE);

			//更新控制
			UpdateButtonContron();
			m_GameClientView.UpdateGameView(NULL);

			return true;
		}
	case GS_PLAYING:		//游戏状态
	case GS_GAME_END:		//结束状态
		{
			//效验数据
			ASSERT(wDataSize==sizeof(CMD_S_StatusPlay));
			if (wDataSize!=sizeof(CMD_S_StatusPlay)) return false;

			//消息处理
			CMD_S_StatusPlay * pStatusPlay=(CMD_S_StatusPlay *)pBuffer;

			//全局下注
			m_GameClientView.PlaceUserJetton(ID_TIAN_MARK,pStatusPlay->lAllTianScore);
			m_GameClientView.PlaceUserJetton(ID_DI_MARK,pStatusPlay->lAllDiScore);
			m_GameClientView.PlaceUserJetton(ID_XUAN_MARK,pStatusPlay->lAllXuanScore);
			m_GameClientView.PlaceUserJetton(ID_HUANG_MARK,pStatusPlay->lAllHuangScore);


			//玩家下注
			SetMePlaceJetton(ID_TIAN_MARK,pStatusPlay->lUserTianScore);
			SetMePlaceJetton(ID_DI_MARK,pStatusPlay->lUserDiScore);
			SetMePlaceJetton(ID_XUAN_MARK,pStatusPlay->lUserXuanScore);
			SetMePlaceJetton(ID_HUANG_MARK,pStatusPlay->lUserHuangScore);

			//玩家积分
			m_lMeMaxScore=pStatusPlay->lUserMaxScore;			
			m_GameClientView.SetMeMaxScore(m_lMeMaxScore);
			WORD wMeChairID=GetMeChairID();
			m_GameClientView.SetMeChairID(SwitchViewChairID(wMeChairID));

			//控制信息
			m_lApplyBankerCondition=pStatusPlay->lApplyBankerCondition;
			m_lAreaLimitScore=pStatusPlay->lAreaLimitScore;
			m_GameClientView.SetAreaLimitScore(m_lAreaLimitScore);

			if (pStatusPlay->cbGameStatus==GS_GAME_END)
			{
				//扑克信息
				m_GameClientView.SetCardInfo(true,pStatusPlay->cbTableCardArray);
				m_GameClientView.FinishDispatchCard();

				//设置成绩
				m_GameClientView.SetCurGameScore(pStatusPlay->lEndUserScore,pStatusPlay->lEndUserReturnScore,pStatusPlay->lEndBankerScore,pStatusPlay->lEndRevenue);
			}
			else
			{
				m_GameClientView.SetCardInfo(false,NULL);

				//播放声音
				if (IsEnableSound()) m_DTSDBackground.Play(0,true);
			}

			//庄家信息
			SetBankerInfo(pStatusPlay->wBankerUser,pStatusPlay->lBankerScore);
			m_GameClientView.SetBankerScore(pStatusPlay->cbBankerTime,pStatusPlay->lBankerWinScore);
			m_bEnableSysBanker=pStatusPlay->bEnableSysBanker;
			m_GameClientView.EnableSysBanker(m_bEnableSysBanker);

			//设置状态
			SetGameStatus(pStatusPlay->cbGameStatus);

			//设置时间
			SetGameTimer(GetMeChairID(),pStatusPlay->cbGameStatus==GS_GAME_END?IDI_DISPATCH_CARD:IDI_PLACE_JETTON,pStatusPlay->cbTimeLeave);

			//更新按钮
			UpdateButtonContron();
			m_GameClientView.UpdateGameView(NULL);

			return true;
		}
	}

	return false;
}
Esempio n. 7
0
//游戏场景
bool CGameClientDlg::OnGameSceneMessage(BYTE cbGameStation, bool bLookonOther, const void * pBuffer, WORD wDataSize)
{
	switch (cbGameStation)
	{
	case GS_FREE:			//空闲状态
		{
			//效验数据
			ASSERT(wDataSize==sizeof(CMD_S_StatusFree));
			if (wDataSize!=sizeof(CMD_S_StatusFree)) return false;

			//消息处理
			CMD_S_StatusFree * pStatusFree=(CMD_S_StatusFree *)pBuffer;

			//设置时间
			SetGameTimer(GetMeChairID(),IDI_FREE,pStatusFree->cbTimeLeave);		

            //玩家信息
			m_lMeMaxScore=pStatusFree->lUserMaxScore;			
			m_GameClientView.SetMeMaxScore(m_lMeMaxScore);
			WORD wMeChairID=GetMeChairID();
			m_GameClientView.SetMeChairID(SwitchViewChairID(wMeChairID));
		
            //庄家信息
			SetBankerInfo(pStatusFree->wBankerUser,pStatusFree->lBankerScore);
			m_GameClientView.SetBankerScore(pStatusFree->cbBankerTime,pStatusFree->lBankerWinScore);
			m_bEnableSysBanker=pStatusFree->bEnableSysBanker;
			m_GameClientView.EnableSysBanker(m_bEnableSysBanker);

            //控制信息
			m_lApplyBankerCondition=pStatusFree->lApplyBankerCondition;
			m_lAreaLimitScore=pStatusFree->lAreaLimitScore;
			m_GameClientView.SetAreaLimitScore(m_lAreaLimitScore);

			//设置状态
			SetGameStatus(GS_FREE);

			//更新控制
			UpdateButtonContron();
			m_GameClientView.UpdateGameView(NULL);

			return true;
		}
	case GS_PLAYING:		//游戏状态
	case GS_GAME_END:		//结束状态
		{
			//效验数据
			ASSERT(wDataSize==sizeof(CMD_S_StatusPlay));
			if (wDataSize!=sizeof(CMD_S_StatusPlay)) return false;

			//消息处理
			CMD_S_StatusPlay * pStatusPlay=(CMD_S_StatusPlay *)pBuffer;

			//全局下注
			m_GameClientView.PlaceUserJetton(ID_HORSE1,pStatusPlay->lAllScore1);
			m_GameClientView.PlaceUserJetton(ID_HORSE2,pStatusPlay->lAllScore2);
			m_GameClientView.PlaceUserJetton(ID_HORSE3,pStatusPlay->lAllScore3);
			m_GameClientView.PlaceUserJetton(ID_HORSE4,pStatusPlay->lAllScore4);
			m_GameClientView.PlaceUserJetton(ID_HORSE5,pStatusPlay->lAllScore5);
			m_GameClientView.PlaceUserJetton(ID_HORSE6,pStatusPlay->lAllScore6);
			m_GameClientView.PlaceUserJetton(ID_HORSE7,pStatusPlay->lAllScore7);
			m_GameClientView.PlaceUserJetton(ID_HORSE8,pStatusPlay->lAllScore8);

			//玩家下注
			SetMePlaceJetton(ID_HORSE1,pStatusPlay->lUserScore1);
			SetMePlaceJetton(ID_HORSE2,pStatusPlay->lUserScore2);
			SetMePlaceJetton(ID_HORSE3,pStatusPlay->lUserScore3);
			SetMePlaceJetton(ID_HORSE4,pStatusPlay->lUserScore4);
			SetMePlaceJetton(ID_HORSE5,pStatusPlay->lUserScore5);
			SetMePlaceJetton(ID_HORSE6,pStatusPlay->lUserScore6);
			SetMePlaceJetton(ID_HORSE7,pStatusPlay->lUserScore7);
			SetMePlaceJetton(ID_HORSE8,pStatusPlay->lUserScore8);

			//玩家积分
			m_lMeMaxScore=pStatusPlay->lUserMaxScore;			
			m_GameClientView.SetMeMaxScore(m_lMeMaxScore);
			WORD wMeChairID=GetMeChairID();
			m_GameClientView.SetMeChairID(SwitchViewChairID(wMeChairID));

			//控制信息
			m_lApplyBankerCondition=pStatusPlay->lApplyBankerCondition;
			m_lAreaLimitScore=pStatusPlay->lAreaLimitScore;
			m_GameClientView.SetAreaLimitScore(m_lAreaLimitScore);

			if (pStatusPlay->cbGameStatus==GS_GAME_END)
			{
				//扑克信息
				m_GameClientView.SetHorseSpeed(pStatusPlay->cbHorseSpeed);
				m_GameClientView.FinishRun();

				//设置成绩
				m_GameClientView.SetCurGameScore(pStatusPlay->lEndUserScore,pStatusPlay->lEndUserReturnScore,pStatusPlay->lEndBankerScore,pStatusPlay->lEndRevenue);
			}
			else
			{
				//m_GameClientView.SetHorseSpeed(NULL);

				//播放声音
				if (IsEnableSound()) m_DTSDBackground.Play(0,true);
			}

			//庄家信息
			SetBankerInfo(pStatusPlay->wBankerUser,pStatusPlay->lBankerScore);
			m_GameClientView.SetBankerScore(pStatusPlay->cbBankerTime,pStatusPlay->lBankerWinScore);
			m_bEnableSysBanker=pStatusPlay->bEnableSysBanker;
			m_GameClientView.EnableSysBanker(m_bEnableSysBanker);

			//设置状态
			SetGameStatus(pStatusPlay->cbGameStatus);

			//设置时间
			SetGameTimer(GetMeChairID(),pStatusPlay->cbGameStatus==GS_GAME_END?IDI_HORSE_RUN:IDI_PLACE_JETTON,pStatusPlay->cbTimeLeave);

			//更新按钮
			UpdateButtonContron();
			m_GameClientView.UpdateGameView(NULL);

			return true;
		}
	}

	return false;
}