VOID CActionSystem::QuestLogItem_Update(VOID)
{
	GetMe()->CleanInvalidAction();
	_MISSION_INFO* misInfo = NULL;
	
	//创建新的物品
	for(INT i=0; i < MAX_CHAR_MISSION_NUM; i++)
	{
		const _OWN_MISSION * OwnMission = CUIDataPool::GetMe()->GetMySelfDetailAttrib()->GetMission(i);

		if(!OwnMission)	continue;

		INT scriptId = OwnMission->m_idScript;

		misInfo = &(GetMissionInfo(scriptId));
		if((!misInfo) || (!misInfo->m_bFill)) continue;
		INT max = (INT)misInfo->m_vecQuestRewardItem.size();
		for(INT j=0; j< max; j++)
		{			
			//取得物品
			_MISSION_INFO::QuestRewardItem misItem = misInfo->m_vecQuestRewardItem[j];
			if(		misItem.pItemData->m_nType == MISSION_BONUS_TYPE_ITEM 
				||	misItem.pItemData->m_nType == MISSION_BONUS_TYPE_ITEM_RAND
				||	misItem.pItemData->m_nType == MISSION_BONUS_TYPE_ITEM_RADIO )
			{
				tObject_Item* pItem = misItem.pItemImpl;
				if(!pItem) continue;
				UpdateAction_FromItem(pItem);
			}
		}
	}
	return;
}
Beispiel #2
0
void RemoveMissionInfo(INT nIndex)
{
	const _OWN_MISSION * OwnMission = CUIDataPool::GetMe()->GetMySelfDetailAttrib()->GetMission(nIndex);
	INT scriptId = OwnMission->m_idScript;

	misInfo = &(GetMissionInfo(scriptId));

	for(UINT i=0;i<misInfo->m_vecQuestDemandItem.size();i++)
	{
		if(misInfo->m_vecQuestDemandItem[i].pDemandItem)
			delete misInfo->m_vecQuestDemandItem[i].pDemandItem;
		if(misInfo->m_vecQuestDemandItem[i].pItemImpl)
			CObject_Item::DestroyItem((CObject_Item*)(misInfo->m_vecQuestDemandItem[i].pItemImpl));	
	}
	for(UINT i=0;i<misInfo->m_vecQuestRewardItem.size();i++)
	{
		if(misInfo->m_vecQuestRewardItem[i].pItemData)
			delete misInfo->m_vecQuestRewardItem[i].pItemData;
	}
	misInfo->m_misName = "";
	misInfo->m_misDesc = "";

	MisInfo::iterator it = m_misInfo.find(scriptId);
	if (it != m_misInfo.end())
	{
		m_misInfo.erase(it);
	}
}