📄 questboard.cpp
字号:
//--------------------------------------------------------------------------------// QuestBoard.cpp//--------------------------------------------------------------------------------#include "Quest.h"#include "QuestUtil.h"#include "QuestBoard.h"#include "QuestFactoryManager.h"#include "Gpackets/GCNPCAskDynamic.h"#include "Script.h"#include "Assert.h"//--------------------------------------------------------------------------------// constructor//--------------------------------------------------------------------------------QuestBoard::QuestBoard(): m_pNPC(NULL){ __BEGIN_TRY __END_CATCH}//--------------------------------------------------------------------------------// destructor//--------------------------------------------------------------------------------QuestBoard::~QuestBoard(){ __BEGIN_TRY release(); __END_CATCH}//--------------------------------------------------------------------------------// init//--------------------------------------------------------------------------------void QuestBoard::init(int num) throw (Error){ __BEGIN_TRY regenerate(num); __END_CATCH}//--------------------------------------------------------------------------------// release//--------------------------------------------------------------------------------void QuestBoard::release() throw (Error){ __BEGIN_TRY QUESTS::iterator itr = m_Quests.begin(); while (itr!=m_Quests.end()) { Quest* pQuest = itr->second; SAFE_DELETE(pQuest); itr ++; } m_Quests.clear(); __END_CATCH}//--------------------------------------------------------------------------------// regenerate//--------------------------------------------------------------------------------void QuestBoard::regenerate(int num) throw (Error){ __BEGIN_TRY release(); QuestCreateInfo qcInfo; for (int i=0; i<num; i++) { int level = 10 + i*20 + rand()%10; // 10~99 qcInfo.setLevel( level ); Quest* pQuest = QuestFactoryManager::getInstance()->create(Quest::QUEST_MONSTER_KILL, &qcInfo); Assert(pQuest!=NULL); if (!add( pQuest )) { SAFE_DELETE(pQuest); } else { //cout << "[QuestBoard] add: " << pQuest->toString().c_str() << endl; } } __END_CATCH}//--------------------------------------------------------------------------------// add( pQuest )//--------------------------------------------------------------------------------// questID甫 眠啊茄促.// ID啊 duplicate牢 版快绰 return false//--------------------------------------------------------------------------------bool QuestBoard::add(Quest* pQuest) throw (Error){ __BEGIN_TRY QuestID_t qid = pQuest->getQuestID(); QUESTS::const_iterator itr = m_Quests.find( qid ); if (itr!=m_Quests.end()) { return false; } m_Quests[qid] = pQuest; __END_CATCH return true;}//--------------------------------------------------------------------------------// remove( questID )//--------------------------------------------------------------------------------// questID狼 Quest*甫 茫酒辑 return茄促.// 绝栏搁 NULL//--------------------------------------------------------------------------------Quest* QuestBoard::remove(QuestID_t qid) throw (Error){ __BEGIN_TRY QUESTS::iterator itr = m_Quests.find( qid ); if (itr!=m_Quests.end()) { Quest* pQuest = itr->second; m_Quests.erase( itr ); return pQuest; } __END_CATCH return NULL;}//--------------------------------------------------------------------------------// makeNPCAskPacket( GCNPCAskDynamic& )//--------------------------------------------------------------------------------// QuestBoard俊 甸绢乐绰 葛电 Quest甸狼 郴侩阑 GCNPCAskDynamic packet栏肺 父电促.//--------------------------------------------------------------------------------void QuestBoard::setScript(Script* pScript) const throw (Error){ __BEGIN_TRY pScript->clearContents(); QUESTS::const_iterator itr = m_Quests.begin(); while (itr!=m_Quests.end()) { Quest* pQuest = itr->second; DWORD code = pQuest->getQuestID(); pScript->addContent( pQuest->toString(), code ); itr++; } __END_CATCH}//--------------------------------------------------------------------------------// makeNPCAskPacket( GCNPCAskDynamic& )//--------------------------------------------------------------------------------// QuestBoard俊 甸绢乐绰 葛电 Quest甸狼 郴侩阑 GCNPCAskDynamic packet栏肺 父电促.//--------------------------------------------------------------------------------/*void QuestBoard::makeNPCAskPacket(GCNPCAskDynamic& gcNPCAskDynamic) const throw (Error){ __BEGIN_TRY //gcNPCAskDynamic.setObjectID(pCreature1->getObjectID()); //gcNPCAskDynamic.setScriptID(10000); gcNPCAskDynamic.setSubject(pScript->getSubject(0)); for (uint c=0; c<pScript->getContentCount(); c++) { gcNPCAskDynamic.addContent(pScript->getContent(c)); } __END_CATCH}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -