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

📄 msgsyndicate.cpp

📁 魔域的源代码
💻 CPP
字号:
// MsgBetOutside.cpp: implementation of the CMsgAtk class.
// 仙剑修,2002.1.8
//////////////////////////////////////////////////////////////////////
#include "AllMsg.h"
#include "basefunc.h"
#include "NpcWorld.h"
#include "SynManager.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMsgSyndicate::CMsgSyndicate()
{
	Init();
	m_pInfo	=(MSG_Info *)m_bufMsg;
}

CMsgSyndicate::~CMsgSyndicate()
{
}

//////////////////////////////////////////////////////////////////////
BOOL	CMsgSyndicate::Create(unsigned short usAction, OBJID idTarget)
{
	// check param
	if(usAction == 0 || idTarget == ID_NONE)
	{
		ASSERT(!"CMsgSyndicate::Create()");
		return false;
	}

	// init
	this->Init();

	// fill info now
	m_unMsgSize	=sizeof(MSG_Info);
	m_unMsgType	=_MSG_SYNDICATE;

	m_pInfo->usAction	=usAction;
	m_pInfo->idTarget	=idTarget;

	return true;
}

BOOL	CMsgSyndicate::Create		(char* pMsgBuf, DWORD dwSize)
{
	if (!CNetMsg::Create(pMsgBuf, dwSize))
		return false;

	if(_MSG_SYNDICATE != this->GetType())
		return false;

	return true;
}

void	CMsgSyndicate::Process		(CGameSocket* pSocket)
{
	OBJID idSyn = GetNpcID();		// npc id is syn id.
	CHECK(idSyn != ID_NONE);
	CSyndicate* pSyn = SynManager()->QuerySyndicate(idSyn);
	if(m_pInfo->usAction == NPCMSG_CREATE_SYN)
	{
		CHECK(!pSyn);
	}
	else if(!( m_pInfo->usAction == SET_WHITE_SYN || m_pInfo->usAction == SET_BLACK_SYN ))
	{
		CHECK(pSyn);
	}

	switch(m_pInfo->usAction)
	{
	////////////////////////////////////////////////////////////////////////////////////////////////
	case	SET_ALLY:
		{
			pSyn->QueryAllySet()->push_back(m_pInfo->idTarget);
		}
		break;
	////////////////////////////////////////////////////////////////////////////////////////////////
	case	CLEAR_ALLY:
		{
			for(int i = 0; i < pSyn->QueryAllySet()->size(); i++)
			{
				if(pSyn->QueryAllySet()->at(i) == m_pInfo->idTarget)
				{
					pSyn->QueryAllySet()->erase(pSyn->QueryAllySet()->begin() + i);
					break;		// mast out for
				}
			}
		}
		break;
	////////////////////////////////////////////////////////////////////////////////////////////////
	case	SET_ANTAGONIZE:
		{
			pSyn->QueryEnemySet()->push_back(m_pInfo->idTarget);
		}
		break;
	////////////////////////////////////////////////////////////////////////////////////////////////
	case	CLEAR_ANTAGONIZE:
		{
			for(int i = 0; i < pSyn->QueryEnemySet()->size(); i++)
			{
				if(pSyn->QueryEnemySet()->at(i) == m_pInfo->idTarget)
				{
					pSyn->QueryEnemySet()->erase(pSyn->QueryEnemySet()->begin() + i);
					break;		// mast out for
				}
			}
		}
		break;
	////////////////////////////////////////////////////////////////////////////////////////////////
	case	NPCMSG_CREATE_SYN:
		{
			CSyndicate* pSyn = CSyndicate::CreateNew();
			IF_OK(pSyn)
			{
				IF_OK(pSyn->Create(idSyn, m_pInfo->idTarget))
					SynManager()->QuerySynSet()->AddObj(pSyn);
				else
					pSyn->ReleaseByOwner();
			}
		}
		break;
	////////////////////////////////////////////////////////////////////////////////////////////////
	case	NPCMSG_DESTROY_SYN:
		{
			SynManager()->QuerySynSet()->DelObj(idSyn);
		}
		break;
	default:
		return;
	}
}

⌨️ 快捷键说明

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