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

📄 conditionfactorymanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////// Filename    : ConditionFactoryManager.cpp // Written By  : // Description :////////////////////////////////////////////////////////////////////////////////#include "Assert.h"#include "ConditionFactoryManager.h"#include "StringStream.h"#include "ConditionAnsweredBy.h"#include "ConditionAtFirst.h"#include "ConditionTalkedBy.h"#include "ConditionAnsweredBy.h"#include "ConditionIdle.h"#include "ConditionEveryTime.h"#include "ConditionFlagOn.h"#include "ConditionFlagOff.h"#include "ConditionAttrComp.h"#include "ConditionRaceComp.h"#include "ConditionSameClan.h"#include "ConditionPayPlay.h"#include "ConditionEnterMasterLair.h"#include "ConditionEnterCastle.h"#include "ConditionEnterHolyLand.h"#include "ConditionEnterCastleDungeon.h"#include "ConditionHasQuest.h"#include "ConditionHasInvenSpace.h"#include "ConditionCanEnterPayZone.h"#include "ConditionCanEnterBeginnerZone.h"#include "ConditionCanWarpGate.h"#include "ConditionCanEnterLevelWarZone.h"#include "ConditionCanPetQuest.h"#include "ConditionCanEnterEventZone.h"////////////////////////////////////////////////////////////////////////////////// constructor////////////////////////////////////////////////////////////////////////////////ConditionFactoryManager::ConditionFactoryManager () 	throw (): m_Factories(NULL) , m_Size(Condition::CONDITION_MAX){	__BEGIN_TRY	Assert(m_Size > 0);		// 牧叼记蒲配府硅凯阑 积己茄促.	m_Factories = new ConditionFactory*[ m_Size ];		// 蒲配府俊 措茄 器牢磐甸阑 NULL 肺 檬扁拳茄促.	for (int i = 0 ; i < m_Size ; i ++) 		m_Factories[i] = NULL;				__END_CATCH}	////////////////////////////////////////////////////////////////////////////////// destructor////////////////////////////////////////////////////////////////////////////////ConditionFactoryManager::~ConditionFactoryManager () 	throw (){	__BEGIN_TRY			Assert(m_Factories != NULL);	// 阿阿狼 牧叼记蒲配府甸阑 昏力茄促.	for (int i = 0 ; i < m_Size ; i ++) {		if (m_Factories[i] != NULL) {			delete m_Factories[i];			m_Factories[i] = NULL;		}	}		// 牧叼记蒲配府硅凯阑 昏力茄促.	delete [] m_Factories;	m_Factories = NULL;				__END_CATCH}////////////////////////////////////////////////////////////////////////////////// 沥狼等 葛电 牧叼记蒲配府甸阑 咯扁俊 眠啊茄促.////////////////////////////////////////////////////////////////////////////////void ConditionFactoryManager::init ()	 throw (Error){	__BEGIN_TRY			addFactory(new ConditionAtFirstFactory());	addFactory(new ConditionTalkedByFactory());	addFactory(new ConditionIdleFactory());	addFactory(new ConditionEveryTimeFactory());	addFactory(new ConditionAnsweredByFactory());	addFactory(new ConditionFlagOnFactory());	addFactory(new ConditionFlagOffFactory());	addFactory(new ConditionAttrCompFactory());	addFactory(new ConditionRaceCompFactory());	addFactory(new ConditionSameClanFactory());	addFactory(new ConditionPayPlayFactory());	addFactory(new ConditionEnterMasterLairFactory());	addFactory(new ConditionEnterCastleFactory());	addFactory(new ConditionEnterHolyLandFactory());	addFactory(new ConditionEnterCastleDungeonFactory());	addFactory(new ConditionHasQuestFactory());	addFactory(new ConditionHasInvenSpaceFactory());	addFactory(new ConditionCanEnterPayZoneFactory());	addFactory(new ConditionCanEnterBeginnerZoneFactory());	addFactory(new ConditionCanWarpGateFactory());	addFactory(new ConditionCanEnterLevelWarZoneFactory());	addFactory(new ConditionCanPetQuestFactory());	addFactory(new ConditionCanEnterEventZoneFactory());		__END_CATCH}////////////////////////////////////////////////////////////////////////////////// add condition factory to factories array////////////////////////////////////////////////////////////////////////////////void ConditionFactoryManager::addFactory (ConditionFactory * pFactory) 	 throw (Error){	__BEGIN_TRY			Assert(pFactory != NULL);	if (m_Factories[ pFactory->getConditionType() ] != NULL) 	{		StringStream msg;		msg << "duplicate condition factories, " << pFactory->getConditionName() ;		cout << msg.toString() << endl;		throw Error(msg.toString());	}		// 牧叼记蒲配府甫 殿废茄促.	m_Factories[ pFactory->getConditionType() ] = pFactory;				__END_CATCH}	////////////////////////////////////////////////////////////////////////////////// create condition object with condition type////////////////////////////////////////////////////////////////////////////////Condition * ConditionFactoryManager::createCondition (ConditionType_t conditionType) const   throw (Error){	__BEGIN_TRY	if (conditionType >= m_Size || m_Factories[conditionType] == NULL) 	{		StringStream msg;		msg << "condition factory [" << conditionType << "] not exist.";		cout << msg.toString() << endl;		throw Error(msg.toString());	}	return m_Factories[conditionType]->createCondition();				__END_CATCH}////////////////////////////////////////////////////////////////////////////////// get condition name with condition type////////////////////////////////////////////////////////////////////////////////string ConditionFactoryManager::getConditionName (ConditionType_t conditionType) const   throw (Error){	__BEGIN_TRY	// 牧叼记 鸥涝捞 裹困甫 逞绢级栏肺 牢秦辑 Seg.Fault 啊 惯积窍瘤 臼档废.	// 捞繁 荤侩磊绰 寸厘 漏扼具 茄促.	if (conditionType >= m_Size || m_Factories[conditionType] == NULL) 	{		StringStream msg;		msg << "invalid condition type (" << conditionType << ")";		cout << msg.toString() << endl;		throw Error(msg.toString());	}	return m_Factories[conditionType]->getConditionName();				__END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////ConditionType_t ConditionFactoryManager::getConditionType (const string & conditionname) const	throw (Error){	__BEGIN_TRY#ifdef __OUTPUT_INIT__	cout << "Condition[" << conditionname << "]...";#endif	for (int i = 0 ; i < m_Size ; i ++)	{		if (m_Factories[i] != NULL)		{			if (m_Factories[i]->getConditionName() == conditionname)			{				return i;			}		}	}	string msg = "no such condition type : " + conditionname;	cout << msg << endl;	throw Error(msg);	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////string ConditionFactoryManager::toString () const	throw (){	__BEGIN_TRY	StringStream msg;	msg << "ConditionFactoryManager(\n";	for (int i = 0 ; i < m_Size ; i ++)	{		msg << "ConditionFactories[" << i << "] == ";		msg << (m_Factories[i] == NULL ? "NULL" : m_Factories[i]->getConditionName()) ;		msg << "\n";	}	msg << ")";	return msg.toString();	__END_CATCH}// global variable declarationConditionFactoryManager * g_pConditionFactoryManager = NULL;

⌨️ 快捷键说明

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