void CGameSocket::Parsing( int length, char* pData )
{
	int index = 0;
	BYTE bType = GetByte(pData, index);

	switch(bType)
	{
	case SERVER_CONNECT:
		RecvServerConnect(pData);
		break;
	case AG_USER_INFO:
		RecvUserInfo(pData+index);
		break;
	case AG_USER_INOUT:
		RecvUserInOut(pData+index);
		break;
	case AG_USER_MOVE:
		RecvUserMove(pData+index);
		break;
	case AG_USER_MOVEEDGE:
		RecvUserMoveEdge(pData+index);
		break;
	case AG_ATTACK_REQ:
		RecvAttackReq(pData+index);
		break;
	case AG_USER_LOG_OUT:
		RecvUserLogOut(pData+index);
		break;
	case AG_USER_REGENE:
		RecvUserRegene(pData+index);
		break;
	case AG_USER_SET_HP:
		RecvUserSetHP(pData+index);
		break;
	case AG_USER_UPDATE:
		RecvUserUpdate(pData+index);
		break;
	case AG_ZONE_CHANGE:
		RecvZoneChange(pData+index);
		break;
	case AG_USER_PARTY:
		//if(m_pParty)
		m_Party.PartyProcess(pData+index);
		break;
	case AG_MAGIC_ATTACK_REQ:
		RecvMagicAttackReq(pData+index);
		break;
	case AG_COMPRESSED_DATA:
		RecvCompressedData(pData+index);
		break;
	case AG_USER_INFO_ALL:
		RecvUserInfoAllData(pData+index);
		break;
	case AG_PARTY_INFO_ALL:
		RecvPartyInfoAllData(pData+index);
		break;
	case AG_CHECK_ALIVE_REQ:
		RecvCheckAlive(pData+index);
		break;
	case AG_HEAL_MAGIC:
		RecvHealMagic(pData+index);
		break;
	case AG_TIME_WEATHER:
		RecvTimeAndWeather(pData+index);
		break;
	case AG_USER_FAIL:
		RecvUserFail(pData+index);
		break;
	case AG_BATTLE_EVENT:
		RecvBattleEvent(pData+index);
		break;
	case AG_NPC_GATE_OPEN:
		RecvGateOpen(pData+index);
		break;
	}
}
bool CGameSocket::HandlePacket(Packet & pkt)
{
	TRACE("CGameSocket::Parsing() - %X (%d), len=%d\n", pkt.GetOpcode(), pkt.GetOpcode(), pkt.size()); 
	switch (pkt.GetOpcode())
	{
	case SERVER_CONNECT:
		RecvServerConnect(pkt);
		break;
	case AG_USER_INFO:
		RecvUserInfo(pkt);
		break;
	case AG_USER_INOUT:
		RecvUserInOut(pkt);
		break;
	case AG_USER_MOVE:
		RecvUserMove(pkt);
		break;
	case AG_USER_MOVEEDGE:
		RecvUserMoveEdge(pkt);
		break;
	case AG_ATTACK_REQ:
		RecvAttackReq(pkt);
		break;
	case AG_USER_LOG_OUT:
		RecvUserLogOut(pkt);
		break;
	case AG_USER_REGENE:
		RecvUserRegene(pkt);
		break;
	case AG_USER_SET_HP:
		RecvUserSetHP(pkt);
		break;
	case AG_USER_UPDATE:
		RecvUserUpdate(pkt);
		break;
	case AG_ZONE_CHANGE:
		RecvZoneChange(pkt);
		break;
	case AG_USER_PARTY:
		m_Party.PartyProcess(pkt);
		break;
	case AG_MAGIC_ATTACK_REQ:
		RecvMagicAttackReq(pkt);
		break;
	case AG_USER_INFO_ALL:
		RecvUserInfoAllData(pkt);
		break;
	case AG_PARTY_INFO_ALL:
		RecvPartyInfoAllData(pkt);
		break;
	case AG_CHECK_ALIVE_REQ:
		RecvCheckAlive(pkt);
		break;
	case AG_HEAL_MAGIC:
		RecvHealMagic(pkt);
		break;
	case AG_TIME_WEATHER:
		RecvTimeAndWeather(pkt);
		break;
	case AG_USER_FAIL:
		RecvUserFail(pkt);
		break;
	case AG_BATTLE_EVENT:
		RecvBattleEvent(pkt);
		break;
	case AG_NPC_GATE_OPEN:
		RecvGateOpen(pkt);
		break;
	case AG_USER_VISIBILITY:
		RecvUserVisibility(pkt);
		break;
	}
	return true;
}