⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bluetoothengine.cpp

📁 手机钩鱼扑克牌游戏 蓝牙对战 手机游戏:扑克钩鱼 说明文档 硬件环境:支持Symbian Series 60 的智能手机
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		for(TInt8 i=0;i<aPayloadLen;i++)
		{
			iTemp[i+HeaderLen] = iAppUi->iAppView->iAppEngine->temp[i+18*num_temp];
		}

		iTemp[aPayloadLen+HeaderLen] = iAppUi->iAppView->iAppEngine->activeplayer ;
				
		for(TInt idx=0;idx<KMaxConnectedDevices;idx++)
		{
			if(iConnectedDevices[idx]!=NULL)
			{
				
				TBuf<128> formattedMessage ;
				formattedMessage.Append( iTemp,  HeaderLen+aPayloadLen+1 );
				TBuf8<128> buf;
				TPtr8 msgtext8((TUint8*)buf.Ptr(), formattedMessage.Size());
				CnvUtfConverter::ConvertFromUnicodeToUtf8(msgtext8, formattedMessage);
				iConnectedDevices[idx]->SendDataL(msgtext8);					///

				delete []iTemp;
				iTemp = NULL;
			}
		}
	}
	else if( aMsgType ==2 )
	{
		aPayloadLen = iAppUi->iAppView->iAppEngine->table_cards.Count();
		TUint16 *iTemp = new (ELeave)TUint16[aPayloadLen+HeaderLen+2];
		iTemp[0] = 2;iTemp[1]=0;iTemp[2]=2;iTemp[3]=aPayloadLen+2;
		for(TInt i = 0;i<aPayloadLen;i++)
		{
			iTemp[i+HeaderLen]=iAppUi->iAppView->iAppEngine->table_cards[i];
		}
		iTemp[aPayloadLen+HeaderLen]=iAppUi->iAppView->iAppEngine->iPos;
		iTemp[aPayloadLen+HeaderLen+1]=iAppUi->iAppView->iAppEngine->activeplayer;
		for (TInt idx=0; idx<KMaxConnectedDevices; idx++)
		{
			if ( iConnectedDevices[idx]!=NULL ) 
			{				
				TBuf<128> formattedMessage ;
				formattedMessage.Append( iTemp, HeaderLen+aPayloadLen + 2 );

				TBuf8<128> buf;
				TPtr8 msgtext8((TUint8*)buf.Ptr(), formattedMessage.Size());
				CnvUtfConverter::ConvertFromUnicodeToUtf8(msgtext8, formattedMessage);

				iConnectedDevices[idx]->SendDataL(msgtext8);
				delete []iTemp;
				iTemp = NULL;
			}
		}
		
	}
}

void CBluetoothEngine::SlaveSendMessage(TInt8 aMsgType)
{
	TInt8 aPayloadLen = 0;
	if(aMsgType == 1)
	{
		aPayloadLen = 1;
		TUint16 *iTemp = new (ELeave)TUint16[aPayloadLen+HeaderLen+1];
		iTemp[0] = 1;iTemp[1]=0;iTemp[2]=2;iTemp[3]=aPayloadLen+1;
		iTemp[4] = 1;iTemp[aPayloadLen+HeaderLen]=iAppUi->iAppView->iAppEngine->activeplayer ;
		TBuf<128> formattedMessage ;
		formattedMessage.Append( iTemp, HeaderLen+aPayloadLen + 1 );

		TBuf8<128> buf;
		TPtr8 msgtext8((TUint8*)buf.Ptr(), formattedMessage.Size());
		CnvUtfConverter::ConvertFromUnicodeToUtf8(msgtext8, formattedMessage);
		//		iAppUi->iAppView->ctr_2 = 0;
		iListener->SendDataL(msgtext8);			////////////////////////////////////
		delete []iTemp;
		iTemp = NULL;
	}
	
	if( aMsgType == 2 )
	{
		aPayloadLen = iAppUi->iAppView->iAppEngine->table_cards.Count();
		TUint16 *iTemp = new (ELeave)TUint16[aPayloadLen+HeaderLen+2];
		iTemp[0] = 2 ;iTemp[1]=0;iTemp[2]=2;iTemp[3]=aPayloadLen+2;
		
		for(TInt i = 0;i<aPayloadLen;i++)
		{
			iTemp[i+HeaderLen]=iAppUi->iAppView->iAppEngine->table_cards[i];
		}
		
		iTemp[aPayloadLen+HeaderLen]=iAppUi->iAppView->iAppEngine->iPos;
		iTemp[aPayloadLen+HeaderLen+1]=iAppUi->iAppView->iAppEngine->activeplayer;
			
		
	//	for (TInt idx=0; idx<KMaxConnectedDevices; idx++)
	//	{
	//		if ( iConnectedDevices[idx]!=NULL )			//
	//		{	
				////////
		///*		tbuf<80> msg1;			
		//		msg1.format(_l("playernum: %d\n"),20);		
		//		showmessagel(msg1, true);*/
				///////////////////

				TBuf<128> formattedMessage ;
				formattedMessage.Append( iTemp, HeaderLen+aPayloadLen + 2 );

				TBuf8<128> buf;
				TPtr8 msgtext8((TUint8*)buf.Ptr(), formattedMessage.Size());
				CnvUtfConverter::ConvertFromUnicodeToUtf8(msgtext8, formattedMessage);
		//		iAppUi->iAppView->ctr_2 = 0;
				iListener->SendDataL(msgtext8);			////////////////////////////////////
				delete []iTemp;
				iTemp = NULL;
	//		}
	//	}
		//Tbuf<80> msg1;
		//msg1.format(_l("playernum: %d\n"),20);		
		//showmessagel(msg1, false);
	
	
	}


}

// ----------------------------------------------------------------------------
// CBluetoothEngine::HandleListenerDataReceivedL(TDesC& aData)
//
// display data the slave listener receives from the master.  this is a 
// callback that CListener class will invoke when it receives new data.
// ----------------------------------------------------------------------------
void CBluetoothEngine::HandleListenerDataReceivedL(TDesC& aData)
{
	// display received message

	const TUint16* Data = aData.Ptr();
	TInt length = aData.Length();
	TInt8 *iTemp = new (ELeave) TInt8[length];
	for ( TInt i = 0 ; i < length; ++i )
	{
		iTemp[i] = (TInt8) Data[i];
	}

	
	if( iTemp[0] == 0 ) //指定玩家身份
	{
		//TBuf<80> msg;
		//msg.Format(_L("playernum: %d\n"), (iTemp[4]+1)%2);		
		//ShowMessageL(msg, false);

		iAppUi->iAppView->iAppEngine->iPlayerNum = (iTemp[4]+1)%2;
	}

	else if(iTemp[0]==1)
	{
		TInt8 playernum = iAppUi->iAppView->iAppEngine->iPlayerNum ;
		//TBuf<80> msg;
		//msg.Format(_L("msgtype: %d\nplLen:%d\nFirstCard:%d active:%d\n"),iTemp[0],length-HeaderLen-1,iTemp[4],iTemp[length-1]);
		//ShowMessageL(msg,false);
		//newround
		num_temp = iTemp[1];
		//TBuf<80> msg1;
		//msg1.Format(_L("p: %d\n"), playernum);		
		//ShowMessageL(msg1, false);
		for(TInt i = 0; i<length-HeaderLen-1;i++)
		{
		//	iAppUi->iAppView->iAppEngine->players[playernum].handing_cards.InsertInOrder(iTemp[i+HeaderLen]);
			iAppUi->iAppView->iAppEngine->temp[i+num_temp*18]=iTemp[i+HeaderLen];
		}
		iAppUi->iAppView->iAppEngine->activeplayer= iTemp[length-1];
		
		if(num_temp == 0)
		{
			iAppUi->iAppView->iAppEngine->table_cards.Reset();
			iAppUi->iAppView->iAppEngine->Start();
			num_temp++;
		}
		else
		{
			num_temp++;
		}
		//TBuf<80> msg0;
		//msg0.Format(_L("num_temp: %d\n"), num_temp);		
		//ShowMessageL(msg0, false);

		iAppUi->iAppView->DrawMove();
	}
	else if(iTemp[0] ==2)
	{
		//TBuf<80> msg;
		//msg.Format(_L("msgtype: %d\nplLen:%d\nFirstCard:%d active:%d\n"),iTemp[0],length-HeaderLen-2,iTemp[4],iTemp[length-1]);
		//ShowMessageL(msg,false);
		iAppUi->iAppView->iAppEngine->table_cards.Reset();
		for(TInt i = 0;i<length-HeaderLen-2;++i)
		{
			iAppUi->iAppView->iAppEngine->table_cards.Insert(iTemp[i+HeaderLen],i);
		}
		iAppUi->iAppView->iAppEngine->iPos = iTemp[length-2]/*+iappui->iappview->iappengine->ipos*/;
		iAppUi->iAppView->iAppEngine->activeplayer = iTemp[length-1];
		
		//TBuf<80> msg2;
		//msg2.Format(_L("ipos: %d\n"),iAppUi->iAppView->iAppEngine->iPos);
		//ShowMessageL(msg2,false);
		
//1!@#$%^&*()))))__+!@#$%^&*(()

		iAppUi->iAppView->iAppEngine->iCurrentSelectedCard = 0;       /////////////
		iAppUi->iAppView->DrawMove();

	}

	delete []iTemp;
	iTemp=NULL;
}

// ----------------------------------------------------------------------------
// CBluetoothEngine::HandleConnectorDataReceivedL(THostName aName,
//															TDesC& aData)
//
// display data the master receives from a connected slave.  this is a 
// callback that CConnector class will invoke when it receives data from slave.
// ----------------------------------------------------------------------------
void CBluetoothEngine::HandleConnectorDataReceivedL(THostName aName,
															  TDesC& aData)
{
	const TUint16* Data = aData.Ptr();
	TInt length = aData.Length();
	TInt8 *iTemp = new (ELeave) TInt8[length];
	for ( TInt i = 0 ; i < length; ++i )
	{
		iTemp[i] = (TInt8) Data[i];
	}
	if( iTemp[0] == 1)
	{
		iAppUi->iAppView->NewRound();
		num_temp = 0;
		MasterSendMessage(1);
	}
	if(iTemp[0] == 2)
	{
		//TBuf<80> msg;
		//msg.Format(_L("msgtype: %d\nplLen:%d\nFirstCard:%d active:%d"),iTemp[0],length-HeaderLen-2,iTemp[4],iTemp[length-1]);
		//ShowMessageL(msg,false);
		
		iAppUi->iAppView->iAppEngine->table_cards.Reset();
		for(TInt i = 0;i<length-HeaderLen-2;i++)
		{
		//	iAppUi->iAppView->iAppEngine->table_cards.InsertInOrder(iTemp[i+HeaderLen]);
			iAppUi->iAppView->iAppEngine->table_cards.Insert(iTemp[i+HeaderLen],i);
		}
		iAppUi->iAppView->iAppEngine->iPos = iTemp[length-2]/*+iAppUi->iAppView->iAppEngine->iPos*/;
		iAppUi->iAppView->iAppEngine->activeplayer = iTemp[length-1]/*(iAppUi->iAppView->iAppEngine->iPlayerNum+1)%2*/;
		//TBuf<80> msg2;
		//msg2.Format(_L("ipos: %d\n"),iAppUi->iAppView->iAppEngine->iPos);
		//ShowMessageL(msg2,false);
	//	iAppUi->iAppView->iAppEngine->iCurrentSelectedCard = 0;
		
		//TBuf<80> msg1;
		//msg1.Format(_L("ctr_2: %d\n"),iAppUi->iAppView->ctr_2);		
		//ShowMessageL(msg1, false);

		iAppUi->iAppView->DrawMove();
	/*	TBuf<80> msg1;
		msg1.Format(_L("playernum: %d\n"),20);		
		ShowMessageL(msg1, false);*/
	}

	delete []iTemp;
	iTemp=NULL;

}	

// ----------------------------------------------------------------------------
// CBluetoothEngine::HandleListenerConnectedL()
//
// a callback received from CListener to indicate that it has been connected to
// ----------------------------------------------------------------------------
void CBluetoothEngine::HandleListenerConnectedL()
	{
	ShowMessageL(_L("Connected!\n"), true);
	}


// ----------------------------------------------------------------------------
// CBluetoothEngine::HandleListenerDisconnectedL()
//
// a callback received from CListener to indicate that it has been disconnected
// ----------------------------------------------------------------------------
void CBluetoothEngine::HandleListenerDisconnectedL()
	{
	if ( !iIsSlave )
		return;
	// listener has already been stopped, request advertiser to stop as well
	iServiceAdvertiser->StopAdvertiserL();
	ShowMessageL(_L("Disconnected!\nSlave stopped.\n"), true);
	}

// ----------------------------------------------------------------------------
// CBluetoothEngine::HandleDeviceDiscoveryCompleteL()
//
// a callback received from device discoverer to indicate that the device
// discovery has completed.
// ----------------------------------------------------------------------------
void CBluetoothEngine::HandleDeviceDiscoveryCompleteL()
	{
	// iterate and display found devices, if any
	if ( iDevDataList.Count()> 0 )
		{
		// found devices
		ShowMessageL(_L("Found devices:\n"), true);
		for (TInt idx=0; idx<(iDevDataList.Count()); idx++)
			{
			TDeviceData *dev = iDevDataList[idx];
			TBuf<40> name;
			name = dev->iDeviceName;
			name.Append(_L("\n"));
			ShowMessageL(name, false);
			}
		}
	else 
		{
		// no devices found
		ShowMessageL(_L("\nNo devices found!"), false);
		}	
	}



// ----------------------------------------------------------------------------
// CBluetoothEngine::HandleServiceDiscoveryCompleteL()
//
// a callback received from service discoverer to indicate that the service
// discovery has completed.
// ----------------------------------------------------------------------------
void CBluetoothEngine::HandleServiceDiscoveryCompleteL()
	{
	TInt count=0;
	ShowMessageL(_L("Found service on:\n"), true);
	// display devices with service we can use
	for ( TInt idx=0; idx<(iDevDataList.Count()); idx++ )
		{
		TDeviceData *dev = iDevDataList[idx];
		if ( dev->iDeviceServicePort>0 )
			{
			THostName name = dev->iDeviceName;
			name.Append(_L("\n"));
			ShowMessageL(name, false);
			count++;
			}
		}
	if ( count==0 )
		{
		ShowMessageL(_L("No services found!\n"), false);
		}
	}


// ----------------------------------------------------------------------------
// CBluetoothEngine::HasConnections()
//
// returns true if master has any connections to slave(s)
// ----------------------------------------------------------------------------
TBool CBluetoothEngine::HasConnections()
	{
	return ( iConnectedDeviceCount>0 );
	}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -