📄 questgroup.cpp
字号:
// QuestGroup.cpp: implementation of the CQuestGroup class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "QuestGroup.h"
#include "QuestManager.h"
#include "Quest.h"
#include "Player.h"
#include "ItemManager.h"
#include "MapDBMsgParser.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
BOOL CheckQuestProbability(DWORD dwProbability)
{
if( dwProbability == 0 )
return FALSE;
if( dwProbability != MAX_QUEST_PROBABILITY )
{
int nFlag = rand()%MAX_QUEST_PROBABILITY;
if( nFlag >= dwProbability )
return FALSE;
}
return TRUE;
}
CQuestGroup::CQuestGroup()
{
m_pPlayer = NULL;
m_QuestTable.Initialize( MAX_QUEST );
m_QuestItemTable.Initialize( MAX_QUESTITEM );
memset( m_QuestEvent, 0, sizeof(GQUESTEVENT)*MAX_QUESTEVENT_PLYER );
m_dwQuestEventNum = 0;
}
CQuestGroup::CQuestGroup( PLAYERTYPE* pPlayer )
{
m_pPlayer = pPlayer;
m_QuestTable.Initialize( MAX_QUEST );
m_QuestItemTable.Initialize( MAX_QUESTITEM );
memset( m_QuestEvent, 0, sizeof(GQUESTEVENT)*MAX_QUESTEVENT_PLYER );
m_dwQuestEventNum = 0;
}
CQuestGroup::~CQuestGroup()
{
Release();
}
void CQuestGroup::Initialize( PLAYERTYPE* pPlayer )
{
m_pPlayer = pPlayer;
m_QuestTable.Initialize( MAX_QUEST );
m_QuestItemTable.Initialize( MAX_QUESTITEM );
memset( m_QuestEvent, 0, sizeof(GQUESTEVENT)*MAX_QUESTEVENT_PLYER );
m_dwQuestEventNum = 0;
}
void CQuestGroup::Release()
{
CQuest* pQuest = NULL;
m_QuestTable.SetPositionHead();
while( pQuest = m_QuestTable.GetData() )
{
delete pQuest;
pQuest = NULL;
}
m_QuestTable.RemoveAll();
QUESTITEM* pQuestItem = NULL;
m_QuestItemTable.SetPositionHead();
while( pQuestItem = m_QuestItemTable.GetData() )
{
delete pQuestItem;
pQuestItem = NULL;
}
m_QuestItemTable.RemoveAll();
}
void CQuestGroup::CreateQuest( DWORD dwQuestIdx, CQuestInfo* pQuestInfo )
{
CQuest* pQuest = m_QuestTable.GetData( dwQuestIdx );
if( pQuest == NULL )
{
pQuest = new CQuest( m_pPlayer, pQuestInfo );
m_QuestTable.Add( pQuest, dwQuestIdx );
}
}
void CQuestGroup::SetMainQuestData( DWORD dwQuestIdx, DWORD dwSubQuestFlag, DWORD dwData, DWORD dwTime )
{
CQuest* pQuest = m_QuestTable.GetData( dwQuestIdx );
if( pQuest )
pQuest->SetMainQuestData( dwSubQuestFlag, dwData, dwTime );
}
void CQuestGroup::SetSubQuestData( DWORD dwQuestIdx, DWORD dwSubQuestIdx, DWORD dwData, DWORD dwTime )
{
CQuest* pQuest = m_QuestTable.GetData( dwQuestIdx );
if( pQuest )
pQuest->SetSubQuestData( dwSubQuestIdx, dwData, dwTime );
}
void CQuestGroup::SetQuestItem( DWORD dwQuestIdx, DWORD dwItemIdx, DWORD dwItemNum )
{
QUESTITEM* pQuestItem = NULL;
// AOⅴAAo E㈢AICI∑i AO8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -