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

📄 itempackage.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
字号:
//--------------------------------------------------------------------------------------
// File Name: ItemPackage.cpp
// Create by: Huang Yuhang
// Create on: 2004/2/24 15:08
//--------------------------------------------------------------------------------------
#pragma warning(disable:4786)
#include "ItemPackage.h"
//--------------------------------------------------------------------------------------
CItemPackage::CItemPackage()
{
	m_setItem.clear();
}
//--------------------------------------------------------------------------------------
CItemPackage::~CItemPackage()
{
	this->Clear(true);
}
//--------------------------------------------------------------------------------------
unsigned long	CItemPackage::Release()
{
	delete(this);
	return 0;
}
//--------------------------------------------------------------------------------------
IItem*	CItemPackage::QueryItemByID(OBJID idItem)
{
	unsigned long uAmount = m_setItem.size();
	for(unsigned long uAccount = 0; uAccount < uAmount; uAccount ++)
	{
		IItem* pItem = m_setItem[uAccount];
		if(pItem->GetID() == idItem)
			return pItem;
	}
	return NULL;
}
//--------------------------------------------------------------------------------------
IItem*	CItemPackage::QueryItemByIndex(unsigned long uIndex)
{
	unsigned long uAmount = m_setItem.size();
	if(uIndex >= uAmount)
		return NULL;
	return m_setItem[uIndex];
}
//--------------------------------------------------------------------------------------
unsigned long CItemPackage::GetItemAmount()
{
	return m_setItem.size();
}
//--------------------------------------------------------------------------------------
BOOL	CItemPackage::AddItem(IItem* pItem)
{
	//不添加空指针 ...
	if(!pItem)
		return false;

	//禁止重复添加 ...
	//包括指针重复和ID重复 ...
	unsigned long uAmount = m_setItem.size();
	for(unsigned long uAccount = 0; uAccount < uAmount; uAccount ++)
	{
		IItem* pOldItem = m_setItem[uAccount];
		if(pOldItem == pItem)
			return false;
		if(pItem->GetID() == pOldItem->GetID())
			return false;
	}
	m_setItem.push_back(pItem);
	return true;
}
//--------------------------------------------------------------------------------------
BOOL	CItemPackage::DeleteItemByID(OBJID idItem, BOOL bDel)
{
	if(idItem == ID_NONE)
		return false;
	unsigned long uAmount = m_setItem.size();
	for(unsigned long uAccount = 0; uAccount < uAmount; uAccount ++)
	{
		IItem* pItem = m_setItem[uAccount];
		if(pItem->GetID() == idItem)
		{
			m_setItem.erase(m_setItem.begin()+uAccount);
			if(bDel)
				pItem->Release();
			return true;
		}
	}
	return false;
}
//--------------------------------------------------------------------------------------
BOOL	CItemPackage::DeleteItemByIndex(unsigned long uIndex, BOOL bDel)
{
	unsigned long uAmount = m_setItem.size();
	if(uIndex > uAmount)
		return false;
	IItem* pItem = m_setItem[uIndex];
	m_setItem.erase(m_setItem.begin()+uIndex);
	if(bDel)
		pItem->Release();
	return true;
}
//--------------------------------------------------------------------------------------
void	CItemPackage::Clear(BOOL bDel)
{
	unsigned long uAmount = m_setItem.size();
	for(unsigned long uAccount = 0; uAccount < uAmount; uAccount ++)
	{
		IItem* pItem = m_setItem[uAccount];
		if(bDel)
			pItem->Release();
	}
	m_setItem.clear();
}
//--------------------------------------------------------------------------------------
IItemPackage*	IItemPackage::CreateNew()
{
	CItemPackage* pItemPackage = new CItemPackage;
	return pItemPackage;
}
//--------------------------------------------------------------------------------------
BOOL	CItemPackage::UpdateItem(IItem* pItem)
{
	//不添加空指针 ...
	if(!pItem)
		return false;

	//禁止指针重复添加 ...
	//ID重复替换
	unsigned long uAmount = m_setItem.size();
	for(unsigned long uAccount = 0; uAccount < uAmount; uAccount ++)
	{
		IItem* pOldItem = m_setItem[uAccount];
		if(pOldItem == pItem)
			return false;
		if(pOldItem->GetID() == pItem->GetID())
		{
			pOldItem->Release();
			m_setItem[uAccount] = pItem;
			return true;
		}
	}
	m_setItem.push_back(pItem);
	return true;	
}
//--------------------------------------------------------------------------------------

⌨️ 快捷键说明

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