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

📄 synworldmanager.cpp

📁 魔域源代码需要的可以学习一下真么这么麻烦啊
💻 CPP
字号:
// SynManager.cpp: implementation of the CSynWorldManager class.
//
//////////////////////////////////////////////////////////////////////

#define	_WINSOCKAPI_		// 阻止加载winsock.h
#include "MessagePort.h"
#include "windows.h"
#include "define.h"
#include "MessageBoard.h"
#include "SynWorldShell.h"
#include "SynWorldManager.h"
#include "WorldKernel.h"

MYHEAP_IMPLEMENTATION(CSynWorldManager,s_heap)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CSynWorldManager::CSynWorldManager()
{
	m_setSyn = CSynWorldSet::CreateNew(true);
	m_obj.m_pOwner	= this;
	m_pDefault		= NULL;	
}

//////////////////////////////////////////////////////////////////////
CSynWorldManager::~CSynWorldManager()
{
	SAFE_RELEASE (m_setSyn);

	SAFE_RELEASE (m_pDefault);
}

//////////////////////////////////////////////////////////////////////
bool CSynWorldManager::Create(IDatabase* pDb)
{
	char szSQL[1024];
	sprintf(szSQL, "SELECT * FROM %s", _TBL_SYNDICATE);
	IRecordset* pRes = pDb->CreateNewRecordset(szSQL, false);
	CHECKF(pRes);

	for(int i = 0; i < pRes->RecordCount(); i++)
	{
		CSyndicateWorld* pSyn = CSyndicateWorld::CreateNew();
		IF_OK(pSyn)
		{
			if(pSyn->Create(pRes))
				m_setSyn->AddObj(pSyn);
			else
				pSyn->ReleaseByOwner();
		}
		pRes->MoveNext();
	}
	pRes->Release();

	sprintf(szSQL, "SELECT * FROM %s WHERE id=0 LIMIT 1", _TBL_SYNDICATE);
	m_pDefault	= pDb->CreateNewRecordset(szSQL, false);
	CHECKF(m_pDefault);

	return true;
}

//////////////////////////////////////////////////////////////////////
OBJID CSynWorldManager::CreateSyndicate(const CreateSyndicateInfo* pInfo)
{
	CSyndicateWorld* pSyn = CSyndicateWorld::CreateNew();
	IF_OK(pSyn)
	{
		IF_OK(pSyn->Create(m_pDefault, pInfo, false))		// false: not save
		{
			m_setSyn->AddObj(pSyn);

			SQLBUF	szSQL;
			sprintf(szSQL, "恭喜 %s 创建%s成功。 宗旨是:", pInfo->szLeader, pInfo->szName);
//			UserManager()->BroadcastMapGroupMsg(szSQL);
//			UserManager()->BroadcastMapGroupMsg(pInfo->szTenet);
			return pInfo->idSyn;
		}
		else
			pSyn->ReleaseByOwner();
	}

	return ID_NONE;
}

//////////////////////////////////////////////////////////////////////
bool CSynWorldManager::DestroySyndicate(OBJID idSyn, OBJID idTarget)
{
	CSyndicateWorld* pSyn = QuerySyndicate(idSyn);
	if(pSyn)
	{
		SQLBUF	szSQL;
		sprintf(szSQL, "帮派 %s 解散了。", pSyn->GetStr(SYNDATA_NAME));
//		UserManager()->BroadcastMapGroupMsg(szSQL);

		m_setSyn->DelObj(idSyn);
	}
	return true;
}

//////////////////////////////////////////////////////////////////////
bool CSynWorldManager::CombineSyndicate(OBJID idSyn, OBJID idTarget)
{
	CSyndicateWorld* pSyn = QuerySyndicate(idSyn);
	if(pSyn)
	{
//		SQLBUF	szSQL;
//		sprintf(szSQL, "帮派 %s 合并了。", pSyn->GetStr(SYNDATA_NAME));
//		UserManager()->BroadcastMapGroupMsg(szSQL);

		// combine member
		CSyndicateWorld* pTarget = QuerySyndicate(idTarget);
		if(pTarget)
			pTarget->CombineMemberList(pSyn->QueryMemberList());

		m_setSyn->DelObj(idSyn);
	}
	return true;
}

//////////////////////////////////////////////////////////////////////
OBJID CSynWorldManager::XSynMngModify::CreateSyndicate(const CreateSyndicateInfo* pInfo)
{
	OBJID	ret = ID_NONE;
	CSyndicateWorld* pSyn = CSyndicateWorld::CreateNew();
	IF_OK(pSyn)
	{
		IF_OK(pSyn->Create(This()->m_pDefault, pInfo, false))		// true: save know
		{
			This()->m_setSyn->AddObj(pSyn);

			SQLBUF	szSQL;
			sprintf(szSQL, "[%s]创建帮派[%s]. 宗旨:...", pInfo->szLeader, pInfo->szName);
			LOGMSG(szSQL);
			LOGMSG(pInfo->szTenet);
			ret = pInfo->idSyn;
		}
		else
			pSyn->ReleaseByOwner();
	}

	if(ret)
	{
		// broadcast
		GameWorld()->QuerySynMessage()->CreateSyndicate(pInfo);
	}
	return ret;
}

//////////////////////////////////////////////////////////////////////
bool CSynWorldManager::XSynMngModify::DestroySyndicate(OBJID idSyn, OBJID idTarget)
{
	bool	ret = false;
	CSyndicateWorld* pSyn = This()->QuerySyndicate(idSyn);
	if(pSyn)
	{
		This()->m_setSyn->DelObj(idSyn);

		ret = true;
	}

	if(ret)
	{
		// broadcast
		GameWorld()->QuerySynMessage()->DestroySyndicate(idSyn, idTarget);
	}
	return ret;
}

//////////////////////////////////////////////////////////////////////
bool CSynWorldManager::XSynMngModify::CombineSyndicate(OBJID idSyn, OBJID idTarget)
{
	bool	ret = false;
	CSyndicateWorld* pSyn = This()->QuerySyndicate(idSyn);
	if(pSyn)
	{
		// combine member
		CSyndicateWorld* pTarget = This()->QuerySyndicate(idTarget);
		if(pTarget)
			pTarget->CombineMemberList(pSyn->QueryMemberList());

		This()->m_setSyn->DelObj(idSyn);

		ret = true;
	}

	if(ret)
	{
		// broadcast
		GameWorld()->QuerySynMessage()->CombineSyndicate(idSyn, idTarget);
	}
	return ret;
}









int CSynWorldManager::GetSynAmount()
{
	return this->m_setSyn->GetAmount();
}

CSyndicateWorld* CSynWorldManager::GetSynByIndex(int nIndex)
{
	return m_setSyn->GetObjByIndex(nIndex);
}

⌨️ 快捷键说明

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