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

📄 msgannounceinfo.cpp

📁 网络游戏魔域的服务端与客户端完整源代码 包括详细的说明文档与开发日志
💻 CPP
字号:
// MsgAnnounceInfo.cpp: implementation of the CMsgAnnounceInfo class.
//
//////////////////////////////////////////////////////////////////////
#include "AllMsg.h"
#include "MsgAnnounceInfo.h"
#include "mapgroup.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMsgAnnounceInfo::CMsgAnnounceInfo()
{
	Init();
	m_pInfo	=(MSG_Info *)m_bufMsg;

	m_StrPacker.SetBuf(m_pInfo->szBuf, _MAX_MSGSIZE-sizeof(MSG_Info)+1);
}

CMsgAnnounceInfo::~CMsgAnnounceInfo()
{

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

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

	return true;
}
BOOL   CMsgAnnounceInfo::Create(CAnnounceData *pData,int type)
{
	m_pInfo->idAnnounce = pData->GetInt(ANNOUNCEDATA_ID);
	m_pInfo->user_id = pData->GetInt(ANNOUNCEDATA_USER_ID);
	m_pInfo->level = pData->GetInt(ANNOUNCEDATA_LEVEL);        // 发布公告人的等级
	m_pInfo->teacher_level = pData->GetInt(ANNOUNCEDATA_TEACHER_LEVEL);	 // 导师等级
	m_pInfo->profession = pData->GetInt(ANNOUNCEDATA_PROFESSION);
	m_pInfo->usType = type;
	BOOL bSucMake	=true;  	
	bSucMake    &=m_StrPacker.AddString((char*)pData->GetStr(ANNOUNCEDATA_USER_NAME)); // 发布公告人名字
	//bSucMake	&=m_StrPacker.AddString((char*)pData->GetStr(ANNOUNCEDATA_PROFESSION));// 导师职业
	bSucMake	&=m_StrPacker.AddString((char*)pData->GetStr(ANNOUNCEDATA_TITLE));     // 公告标题
	bSucMake	&=m_StrPacker.AddString((char*)pData->GetStr(ANNOUNCEDATA_CONTENT));   // 公告内容
	m_unMsgType	=_MSG_ANNOUNCE_INFO;
	m_unMsgSize	=sizeof(MSG_Info)-1+m_StrPacker.GetSize();

	return true;
}
BOOL CMsgAnnounceInfo::Create(int level,int teacher_level,const char* name,int profession,int type)
{
	m_pInfo->level = level;
	m_pInfo->teacher_level = teacher_level;
	m_pInfo->usType = type;
	m_pInfo->profession = profession;
	BOOL bSucMake = true;
	bSucMake    &=m_StrPacker.AddString((char*)name);
	//bSucMake    &=m_StrPacker.AddString(profession);
	m_unMsgType = _MSG_ANNOUNCE_INFO;
	m_unMsgSize	=sizeof(MSG_Info)-1+m_StrPacker.GetSize();
	return true;
}
void CMsgAnnounceInfo::Process(void* pInfo)
{
	CUserPtr pUser = UserManager()->GetUser(this);
	//CUser* pUser = g_UserManager.GetUser(m_pInfo->user_id);
	switch(m_pInfo->usType)
	{
	case _ANNOUNCE_ISSUE:
		if(Announce()->QueryAnnounceDataByOwner(pUser->GetID()))
		{
			pUser->SendSysMsg(STR_DUPLICATE_ANNOUNCE);
			return ;
		}
		ST_ANNOUNCE_DATA	tAnnounceData;		
		tAnnounceData.level = pUser->GetLev();
		tAnnounceData.user_id = pUser->GetID();
		tAnnounceData.teacherlevel = pUser->GetTutorLevel();
		if(tAnnounceData.teacherlevel < 1)
		{
			pUser->SendSysMsg(STR_LOW_GRADE);
			return ;
		}
/*		switch(pUser->GetProfession())
		{
		case 10:
            strcpy(tAnnounceData.profession,"魔法师");// 魔法师  11,			// 魔法师转职
			break;
		case 20:
            strcpy(tAnnounceData.profession,"战士");// 战士  21,			// 战士转职
			break;
		case 30:
			strcpy(tAnnounceData.profession,"异能者");	// 异能者  31,			// 异能者转职	
			break;
		}*/
		tAnnounceData.profession = pUser->GetProfession();
		sprintf(tAnnounceData.name,"%s",pUser->GetName());

		m_StrPacker.GetString(0, tAnnounceData.title, 32);
		m_StrPacker.GetString(1, tAnnounceData.content, 128);
	/*	if(strlen(tAnnounceData.title) > 32)
		{
			pUser->SendSysMsg("标题过长");
		    return;
		}
		if(strlen(tAnnounceData.content) > 128 )
		{
			pUser->SendSysMsg("公告过长");
			return ;
		}*/
		if(Announce()->CreateNewAnnounce(&tAnnounceData,Database()))
			pUser->SendSysMsg(STR_ANNOUNCE_SUCCEED);
		break;
	case _ANNOUNCE_SLEF_CHECK:
		Announce()->SendAnnounceSelf(RoleManager()->QueryRole(m_pInfo->user_id));
		break;
	case _ANNOUNCE_CHECK:
		Announce()->SendAnnounceInfo(RoleManager()->QueryRole(pUser->GetID()/*m_pInfo->user_id*/),m_pInfo->idAnnounce);
		break;
	case _ANNOUNCE_USER_INFO:
	/*	char nProfession[16];
		switch(pUser->GetProfession())
		{
		case 10:
            strcpy(nProfession,"魔法师");// 魔法师 
			break;
		case 20:
            strcpy(nProfession,"战士");// 战士 
			break;
		case 30:
			strcpy(nProfession,"异能者");	// 异能者
			break;
		}*/
        if(Announce()->QueryAnnounceDataByOwner(pUser->GetID()))
		{
			IF_OK(Create(pUser->GetLev(),pUser->GetTutorLevel(), pUser->GetName(), pUser->GetProfession(),_ANNOUNCE_USER_INFO))
				SendMsg(this);
		}
		else 
			pUser->SendSysMsg(STR_NO_ANNOUNCE);
		break;
	case _ANNOUNCE_CANCEL:
        if(Announce()->DeleteAnnounceByObjID(m_pInfo->idAnnounce))
			pUser->SendSysMsg(STR_DELETE_ANNOUNCE);
		else
			pUser->SendSysMsg(STR_NO_ANNOUNCE);
		break;
	}
}

⌨️ 快捷键说明

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