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

📄 simplequest.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
//--------------------------------------------------------------------------------// SimpleQuest.cpp//--------------------------------------------------------------------------------#include "SimpleQuest.h"#include "Creature.h"#include "QuestPriceReward.h"#include "QuestPricePenalty.h"#include "Assert.h"#include "DB.h"//--------------------------------------------------------------------------------//--------------------------------------------------------------------------------SimpleQuest::SimpleQuest()	throw (Error): m_pOwner(NULL), m_AvailableSecond(0), m_pReward(NULL), m_pPenalty(NULL){	//m_Deadline.tv_sec = m_Deadline.tv_usec = 0;	setDeadline(99999999);}SimpleQuest::~SimpleQuest()	throw (Error){	__BEGIN_TRY	if (m_pReward!=NULL)	SAFE_DELETE(m_pReward);	if (m_pPenalty!=NULL)	SAFE_DELETE(m_pPenalty);	__END_CATCH}//--------------------------------------------------------------------------------// setDeadline//--------------------------------------------------------------------------------void SimpleQuest::setDeadline (Turn_t delay) 	throw (){    __BEGIN_TRY	// 泅犁 矫埃阑 螟沥茄促.	getCurrentTime(m_Deadline);	// 单靛扼牢阑 搬沥茄促.	// 捞锭, delay 绰 0.1 檬啊 1 捞促.	m_Deadline.tv_sec += delay / 10;	m_Deadline.tv_usec += (delay % 10)* 100000;	__END_CATCH}// 巢篮 duration(1/10檬 窜困)Duration_t SimpleQuest::getRemainDuration() const	throw(){	__BEGIN_TRY	Timeval currentTime;	getCurrentTime(currentTime);	return (m_Deadline.tv_sec  - currentTime.tv_sec)* 10 +			(m_Deadline.tv_usec - currentTime.tv_usec) / 100000;	__END_CATCH}//--------------------------------------------------------------------------------// destroy//--------------------------------------------------------------------------------voidSimpleQuest::destroy() 	throw(Error){	__BEGIN_TRY	Assert(m_pOwner!=NULL);	Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		cout << "DELETE FROM SimpleQuest WHERE OwnerID = '" << m_pOwner->getName().c_str() << "'" << endl;		pStmt->executeQuery(			"DELETE FROM SimpleQuest WHERE OwnerID = '%s'", 				m_pOwner->getName().c_str()); 		/*		if (pStmt->getAffectedRowCount()==0)		{			SAFE_DELETE(pStmt);			return false;		}		*/		SAFE_DELETE(pStmt);	}	END_DB(pStmt)	__END_CATCH}//--------------------------------------------------------------------------------// checkFail//--------------------------------------------------------------------------------bool		SimpleQuest::checkFail() 	throw (Error){	__BEGIN_TRY	Timeval currentTime;	getCurrentTime(currentTime);	return currentTime >= m_Deadline;		__END_CATCH}//--------------------------------------------------------------------------------// heartbeat//--------------------------------------------------------------------------------void		SimpleQuest::heartbeat()	throw (Error){	__BEGIN_TRY	if (m_State==STATE_ACTIVE)	{		processActive();	}	__END_CATCH}//--------------------------------------------------------------------------------// process Active//--------------------------------------------------------------------------------void		SimpleQuest::processActive() 	throw (Error){	__BEGIN_TRY	if (checkFail())	{		processFail();	}	__END_CATCH}//--------------------------------------------------------------------------------// process Fail//--------------------------------------------------------------------------------voidSimpleQuest::processFail()	throw (Error){	__BEGIN_TRY	givePenalty();	destroy();	setState( STATE_END );	__END_CATCH}//--------------------------------------------------------------------------------// take//--------------------------------------------------------------------------------void		SimpleQuest::take(Creature* pCreature, bool bNewQuest) 	throw (Error){	__BEGIN_TRY	setOwner( pCreature );		// 贸澜 罐篮 涅胶飘牢 版快父.. 矫埃 汲沥苞 DB积己阑 茄促		if (bNewQuest)	{		getCurrentTime(m_Deadline);		m_Deadline.tv_sec += m_AvailableSecond;			create();	}	setState( STATE_ACTIVE );	__END_CATCH}//--------------------------------------------------------------------------------// give Reward//--------------------------------------------------------------------------------void		SimpleQuest::giveReward() 	throw (Error){	__BEGIN_TRY	if (m_pReward!=NULL && m_pOwner!=NULL)	{		m_pReward->affect( m_pOwner );	}	__END_CATCH}//--------------------------------------------------------------------------------// give Penalty//--------------------------------------------------------------------------------void		SimpleQuest::givePenalty() 	throw (Error){	__BEGIN_TRY	if (m_pPenalty!=NULL && m_pOwner!=NULL)	{		m_pPenalty->affect( m_pOwner );	}	__END_CATCH}//--------------------------------------------------------------------------------// add Reward//--------------------------------------------------------------------------------void				SimpleQuest::addReward(QuestPrice* pQuestPrice) 	throw (Error){	__BEGIN_TRY	Assert(pQuestPrice!=NULL);	m_pReward = pQuestPrice;	__END_CATCH}//--------------------------------------------------------------------------------// add Penalty//--------------------------------------------------------------------------------void				SimpleQuest::addPenalty(QuestPrice* pQuestPrice) 	throw (Error){	__BEGIN_TRY	Assert(pQuestPrice!=NULL);		m_pPenalty = pQuestPrice;	__END_CATCH}//void        SimpleQuest::addReward(const string& text) 	throw (Error){	__BEGIN_TRY	QuestPrice* pQuestPrice = new QuestPriceReward;	pQuestPrice->setPrice( text );	addReward( pQuestPrice );	__END_CATCH}void        SimpleQuest::addPenalty(const string& text) 	throw (Error){	__BEGIN_TRY	QuestPrice* pQuestPrice = new QuestPricePenalty;	pQuestPrice->setPrice( text );	addPenalty( pQuestPrice );	__END_CATCH}stringSimpleQuest::getRewardToString() const 	throw (Error){	__BEGIN_TRY	if (m_pReward==NULL)		return "";	return m_pReward->toString();	__END_CATCH}string      SimpleQuest::getPenaltyToString() const 	throw (Error){	__BEGIN_TRY	if (m_pReward==NULL)		return "";	return m_pPenalty->toString();	__END_CATCH}

⌨️ 快捷键说明

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