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

📄 charselect.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				}
				return;
			case MP_USERCONN_CHANNELINFO_ACK:
				{
					MSG_CHANNEL_INFO * pmsg = (MSG_CHANNEL_INFO*)pMsg;
					GetChannelDialog()->SetChannelList(pmsg);
					SetDisablePick(TRUE);
					
					// 眉澄捞 窍唱捞搁 官肺 甸绢啊霸 窃
					if(pmsg->Count == 1)
					{
						GetChannelDialog()->OnConnect();	
						GetChannelDialog()->SetActive(FALSE);
					}
				}
				return;
			case MP_USERCONN_CHANNELINFO_NACK:
				{
					MSG_BYTE* msg = (MSG_BYTE*)pMsg;
					if( msg->bData == 0 )
					{
						//甘捞 摧躯促.
						//急琶芒捞 disable登绢乐唱?
						WINDOWMGR->MsgBox( MBI_MAPSERVER_CLOSE, MBT_OK, CHATMGR->GetChatMsg(449) );
					}
					else
					{						
						//某腐沥焊 肋给登菌促.
						WINDOWMGR->MsgBox( MBI_MAPSERVER_CLOSE, MBT_OK, CHATMGR->GetChatMsg(450) );
					}
				}
				return;
			}
		}
		break; 
	}
	
//	LOG(EC_UNKNOWN_PROTOCOL);
}

void CCharSelect::InitCameraInCharSelect()
{
	//弥辆 技泼瞪 搬苞
	VECTOR3 vPivot;

//* 墨皋扼 捞悼
	if(CAMERA->IsMoved() == FALSE)
	{
		vPivot.x = 27740;
		vPivot.y = 4960;
		vPivot.z = 9104;

		CAMERA->InitCamera(0, -2.0f, 17.0f, 2000, &vPivot);// 芭府 炼沥 

		//
		MHCAMERAPOS CPos;
		CPos.m_AngleX = -2.0f;
		CPos.m_AngleY = 17.0f;
		CPos.m_Dist = 2000;
		CPos.m_Pivot = vPivot;
		CAMERA->SetMovePos(eCP_CHARSEL, &CPos);

		vPivot.x = 24480;
		vPivot.y = 6045;
		vPivot.z = 9854;	
		CPos.m_AngleX = -6.0f;
		CPos.m_AngleY = 0.0f;
		CPos.m_Dist = 2000;
		CPos.m_Pivot = vPivot;
		CAMERA->SetMovePos(eCP_CHARMAKE, &CPos);
	}
//*/

/* 捞悼救矫懦订 捞吧风..
	vPivot.x = 27740;
	vPivot.y = 4960;
	vPivot.z = 9104;

	CAMERA->InitCamera(0, -2.0f, 17.0f, 2000, &vPivot);// 芭府 炼沥 
//*/
	CAMERA->SetCameraMode(eCM_LOGIN);
	CAMERA->SetCurCamera(0);

	//墨皋扼 扁瓷... 鸥百困摹肺狼 局聪皋捞记(墨皋扼, 乔哈) 鞘夸.	

/*
	VECTOR3 vPivot;
	vPivot.x = 23558;
	vPivot.y = 671;
	vPivot.z = 31780;

	CAMERA->InitCamera(0, 0.0f, 90.0f, 5115, &vPivot);// 芭府 炼沥 
	CAMERA->SetCameraMode(eCM_LOGIN);
*/	/// 皋牢鸥捞撇狼 技泼惑炔
	
/*
	VECTOR3 pos;

//	pos.x = 25400; //蔼阑 疵捞搁 快螟栏肺 
	pos.x = 25750;
//	pos.y = -100;
	pos.y = -70;
	pos.z = 39900;
	
	CAMERA->InitCamera(0, 0.17f, 0, 10500, &pos);// 芭府 炼沥 
//	CAMERA->InitCamera(0, 2.0, 0, 10500, &pos);// 芭府 炼沥 
	CAMERA->SetCameraMode(eCM_LOGIN);

	CAMERA->SetCurCamera(0);
	
	if(m_bReturnOfCharMake == FALSE)
	{
//		CAMERA->ZoomDistance(0, -1200.f, 1700);		
		CAMERA->ZoomDistance(0, -0550.f, 1700);			
		CAMERA->SetTargetAngleX(0,0.8f,1700);
		CAMERA->SetTargetAngleY(0,0.25f,1700);
		CAMERA->SetTargetAngleY(0,0.6f,0);
	}
	else
	{
//		CAMERA->ZoomDistance(0, 900, 1700); // pjs 墨皋扼 第肺 捞悼 [5/13/2003]
		CAMERA->ZoomDistance(0, 1200, 1700);
	}
*/


}

void CCharSelect::SetCurSelctedPlayer(int num)
{	
	cPushupButton * charBtn[4];

	if(num == -1)
	{
		for(int n=0;n<4;++n)
		{
			charBtn[n] = (cPushupButton *)WINDOWMGR->GetWindowForIDEx(MT_FIRSTCHOSEBTN+n);
			charBtn[n]->SetPush(FALSE);
		}
		m_CurSelectedPlayer = -1;
		return;
	}
	for(int n=0;n<4;++n)
	{
		charBtn[n] = (cPushupButton *)WINDOWMGR->GetWindowForIDEx(MT_FIRSTCHOSEBTN+n);
		if(n == num)
			charBtn[n]->SetPush(TRUE);
		else
			charBtn[n]->SetPush(FALSE);
	}
	m_CurSelectedPlayer = num;
}

void CCharSelect::SelectPlayer(int num)
{
	if( GetCurSelectedPlayer() )
	if( GetCurSelectedPlayer()->GetEngineObject()->GetCurMotion() != eMotion_Sel1Afterstop )
	{
		cPushupButton * charBtn = (cPushupButton *)WINDOWMGR->GetWindowForIDEx(MT_FIRSTCHOSEBTN + num);
		charBtn->SetPush( FALSE );
		return;
	}
	
	if( num == m_CurSelectedPlayer) 
	{
		return;
	}

	if(num != -1)
	if(m_pPlayer[num] == NULL)
	{
			cPushupButton * charBtn[4];
			charBtn[num] = (cPushupButton *)WINDOWMGR->GetWindowForIDEx(MT_FIRSTCHOSEBTN+num);
			charBtn[num]->SetPush(FALSE);
			return;

//		cPushupButton * charBtn[4];
//		charBtn[num] = (cPushupButton *)WINDOWMGR->GetWindowForIDEx(MT_FIRSTCHOSEBTN+num);
//		charBtn[num]->SetPush(FALSE);
//		return;
	}

/*
	if(num == m_CurSelectedPlayer)
	{
		//辑乐绰 局甫 第倒酒啊霸 窍绊 
		SetCurSelctedPlayer(-1);
		PlayDeselectedMotion(num);
		return;
	}
*/
	
	PlayDeselectedMotion(m_CurSelectedPlayer);
	PlaySelectedMotion(num);

	SetCurSelctedPlayer(num);
}

BOOL CCharSelect::IsFull()
{
	for(int n=0;n<MAX_CHARACTER_NUM;++n)
	{
		if(m_pPlayer[n] == NULL)
			return FALSE;
	}
	return TRUE;
}

BOOL CCharSelect::EnterGame()
{
	CPlayer* pPlayer = GetCurSelectedPlayer();
	if(pPlayer == NULL)
		return FALSE;
	GameLoadingParam loadingParam;
	loadingParam.selectedCharNum = pPlayer->GetID();
	loadingParam.m_MapNum = pPlayer->GetCharacterTotalInfo()->LoginMapNum;

	MAINGAME->SetGameState(eGAMESTATE_GAMELOADING, (void *)&loadingParam, sizeof(GameLoadingParam));

	return TRUE;
}

void CCharSelect::DeleteCharacter()
{
	CPlayer* pPlayer = GetCurSelectedPlayer();
	if(pPlayer == NULL)
		return;
		
	MSG_DWORD  msg;
	msg.Category = MP_USERCONN;
	msg.Protocol = MP_USERCONN_CHARACTER_REMOVE_SYN;
	msg.dwData = pPlayer->GetID();
	NETWORK->Send(&msg,sizeof(msg));
}

void CCharSelect::PlaySelectedMotion(int num)
{
	if(num == -1)
		return;
	if(m_pPlayer[num] == NULL)
		return;

	m_pPlayer[num]->ChangeMotion(eMotion_sel1After,0);//+4*num,0);
	m_pPlayer[num]->ChangeBaseMotion(eMotion_Sel1Afterstop);//+4*num);

//KES 030904
//	m_pPlayer[num]->DisPlayObjectName(RGB_HALF(255,255,0), 1000000000 );
}
void CCharSelect::PlayDeselectedMotion(int num)
{
	if(num == -1)
		return;
	if(m_pPlayer[num] == NULL)
		return;
	
	m_pPlayer[num]->ChangeMotion(eMotion_Sel1Back,0);//+4*num, 0);
	m_pPlayer[num]->ChangeBaseMotion(eMotion_Sel1Before);//+4*num);

//KES 030904
//	m_pPlayer[num]->DisPlayObjectName(RGB_HALF(255,255,255), 1000000000 );
}

void CCharSelect::DisplayNotice(int MsgNum)
{
	WINDOWMGR->MsgBox( MBI_CHARSELERROR, MBT_OK, CHATMGR->GetChatMsg(MsgNum) );
	SetDisablePick( TRUE );
}


void CCharSelect::SetDisablePick( BOOL val )
{
	m_bDiablePick = val;
	if( m_pSelectDlg )
		m_pSelectDlg->SetDisable( val );
}

void CCharSelect::BackToMainTitle()
{
	MSGBASE msg;
	msg.Category = MP_USERCONN;
	msg.Protocol = MP_USERCONN_DISCONNECT_SYN;
	NETWORK->Send(&msg,sizeof(msg));

	SetBlock(TRUE);
	
	gUserID = 0;
	
	SetDisablePick(TRUE);
	m_bBackToMainTitle = TRUE;
}

void CCharSelect::OnDisconnect()
{
//	if( !m_bBlockScreen )			//backtomaintitle老锭绰 救嘛绰促.
//		CGameState::OnDisconnect();

	if( m_bBackToMainTitle )
	{
		SetBlock(FALSE);
		OBJECTMGR->RemoveAllObject();	//咯扁辑 救瘤快绊 release俊辑 瘤快搁 maintitle拳搁俊 泪矫 焊牢促.
		MAINGAME->SetGameState(eGAMESTATE_TITLE);	//俊捞怜飘啊 谗唱搁..
		m_bBackToMainTitle = FALSE;
		NETWORK->ReleaseKey();
	}
	else
	{
		CGameState::OnDisconnect();
	}


	// do nothing
}

void CCharSelect::SendMsgGetChannelInfo()
{
	CPlayer* pPlayer = GetCurSelectedPlayer();
	if(pPlayer == NULL)
	{
		DisplayNotice(18);
		return;
	}

	MSGBASE msg;
	msg.Category = MP_USERCONN;
	msg.Protocol = MP_USERCONN_CHANNELINFO_SYN;
	msg.dwObjectID = pPlayer->GetID();
	
	NETWORK->Send( &msg, sizeof(msg) );
}

⌨️ 快捷键说明

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