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

📄 inventory.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 3 页
字号:
////////////////////////////////////////////////////////////// 酒捞袍阑 舅酒辑 歹茄促.////////////////////////////////////////////////////////////bool Inventory::addItem(Item* pItem)	throw(InventoryFullException , Error){	__BEGIN_TRY	Assert (pItem != NULL);	_TPOINT pt;	if (getEmptySlot(pItem, pt))	{		addItem(pt.x, pt.y, pItem);		return true;	}	return false;	__END_CATCH}////////////////////////////////////////////////////////////// 酒捞袍阑 舅酒辑 歹茄促.////////////////////////////////////////////////////////////bool Inventory::addItem(Item* pItem, TPOINT& rpt)	throw(InventoryFullException , Error){	__BEGIN_TRY	Assert (pItem != NULL);	_TPOINT pt;	if (getEmptySlot(pItem, pt))	{		rpt.x = pt.x;		rpt.y = pt.y;		addItem(pt.x, pt.y, pItem);		return true;	}	rpt.x = 255;	rpt.y = 255;	return false;	__END_CATCH}////////////////////////////////////////////////////////////// 酒捞袍阑 持阑 荐 乐绰 后 磊府甫 茫绰促.////////////////////////////////////////////////////////////bool Inventory::getEmptySlot(VolumeWidth_t ItemWidth, VolumeHeight_t ItemHeight, _TPOINT& p)	throw(){	__BEGIN_TRY	int x, y;	int i, j;	//---------------------------------------------------------	// grid狼 葛电(x,y)俊 pItem阑 眠啊且 荐 乐绰瘤 八荤秦夯促.	//---------------------------------------------------------	int yLimit = m_Height - ItemHeight;	int xLimit = m_Width  - ItemWidth;	int yPlusHeight, xPlusWidth;	for (x = 0; x <= xLimit; x++)	{		xPlusWidth = x + ItemWidth;		for (y = 0; y <= yLimit; y++)		{           			yPlusHeight = y + ItemHeight;			//---------------------------------------------------------			// (x,y)俊 持阑 荐 乐绰瘤 眉农..			//---------------------------------------------------------			bool bPlace = true;			for (i = y; bPlace && i < yPlusHeight; i++)			{				for (j = x; bPlace && j < xPlusWidth; j++)				{					//---------------------------------------------------------					// 捞固 促弗 Item捞 乐绰 grid啊 窍唱扼档 乐促搁 眠啊且 荐 绝促.					//---------------------------------------------------------					Item* pItem = m_pInventorySlot[j][i].getItem();					if (pItem != NULL)					{						bPlace = false;						// 促澜俊 眉农且 巴...				//		y = i + pItem->getVolumeHeight() - 1;						break;					}				}			}			//---------------------------------------------------------			// (x,y)俊 持阑 荐 乐绰 版快			//---------------------------------------------------------			if (bPlace)			{				p.x = x; 				p.y = y;				//cout << (int)x << ", " << (int)y << " ]" << endl;				return true;			}		}	}	return false;	__END_CATCH}////////////////////////////////////////////////////////////// 瘤沥等 酒捞袍阑 茫酒辑 瘤款促.////////////////////////////////////////////////////////////void Inventory::deleteItem(ObjectID_t ObjectID)	throw(Error){	__BEGIN_TRY	__BEGIN_DEBUG	Item*        pTargetItem = NULL;	CoordInven_t x           = 0;	CoordInven_t y           = 0;	pTargetItem = findItemOID(ObjectID, x, y);	if (pTargetItem != NULL)	{		deleteItem(x, y);	}	else Assert(false);	__END_DEBUG	__END_CATCH}////////////////////////////////////////////////////////////// 瘤沥等 困摹俊辑 酒捞袍阑 瘤款促.// *** 林狼 *** // 1x1 酒捞袍捞 酒匆 版快, 谅螟 惑窜狼 谅钎甫 瘤沥秦林瘤// 臼栏搁 阐嘛茄 搬苞啊 惯积且 荐 乐促.////////////////////////////////////////////////////////////void Inventory::deleteItem(CoordInven_t X, CoordInven_t Y)	throw(Error){	__BEGIN_TRY	__BEGIN_DEBUG	if (X < m_Width && Y < m_Height)	{		Item* pItem = m_pInventorySlot[X][Y].getItem();		//Assert(pItem != NULL);		if (pItem != NULL)		{			// get Volume's Size Width, Height			VolumeWidth_t  ItemWidth  = pItem->getVolumeWidth();			VolumeHeight_t ItemHeight = pItem->getVolumeHeight();			Assert(ItemWidth != 0);			Assert(ItemHeight != 0);			for (int x = X; x < X + ItemWidth ; x++) 			{				for (int y = Y; y < Y + ItemHeight ; y++) 				{					InventorySlot& slot = getInventorySlot(x, y);					//if (slot.getItem()==pItem)					{						slot.deleteItem();					}					/*					// 促弗 巩力看促. - -;					// Restore俊辑 轨颇捞绢 酒捞袍 剧颊 公扁甫 窍唱 眉农甫 救秦辑 弊犯促.					// by sigi. 2002.8.29 广					else					{						// 牢亥配府俊 购啊 捞惑茄 泅惑捞 乐促绊 焊咯瘤骨肺						// 老窜 促款 泅惑阑 阜扁 困秦辑..						// 傈眉甫 八祸秦辑 酒捞袍阑 瘤款促.						// by sigi. 2002.8.29						filelog("inventoryDeleteBug.txt", "deleteItem(%d, %d): class=%d, type=%d, volume(%d, %d), Wrong Item. (%d, %d) ",								(int)X, (int)Y, (int)pItem->getItemClass(), (int)pItem->getItemType(), (int)ItemWidth, (int)ItemHeight, (int)x, (int)y);						// 傈眉 八祸秦辑 pItem阑 瘤款促.						for (int a=0; a<m_Width; a++)						{							for (int b=0; b<m_Height; b++)							{								InventorySlot& tempSlot = getInventorySlot(a, b);								if (tempSlot.getItem()==pItem)								{									slot.deleteItem();									filelog("inventoryDeleteBug.txt", 											"delete another position(%d, %d)",											a, b);								}							}						}					}					*/				}			}			m_TotalWeight -= (pItem->getWeight()* pItem->getNum());			m_TotalNum    -= pItem->getNum();		}		else		{		}	}	__END_DEBUG	__END_CATCH}//////////////////////////////////////////////////////////////////////////////////// FIND METHODS//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// X, Y肺何磐 酒捞袍狼 农扁父怒狼 浇儿阑 八荤窍咯,// 粮犁窍绰 酒捞袍捞 乐栏搁 弊 器牢磐甫 府畔茄促.////////////////////////////////////////////////////////////Item* Inventory::searchItem(CoordInven_t X, CoordInven_t Y, Item* pItem, TPOINT & pt)	throw(){	__BEGIN_TRY	// get Volume's Size Width, Height	VolumeWidth_t  ItemWidth  = pItem->getVolumeWidth();	VolumeHeight_t ItemHeight = pItem->getVolumeHeight();	if ((X + ItemWidth <= m_Width) && (Y + ItemHeight <= m_Height)) 	{		for (int x = X; x < (X + ItemWidth); x++) 		{			for (int y = Y; y < (Y + ItemHeight); y++) 			{				if (hasItem(x, y)) 				{					pt.x = x;					pt.y = y;					return m_pInventorySlot[x][y].getItem();				}			}		}	}	return NULL;	__END_CATCH}////////////////////////////////////////////////////////////// 瘤沥等 酒捞袍阑 茫酒辑 器牢磐甫 府畔茄促.////////////////////////////////////////////////////////////Item* Inventory::getItemWithItemID (ItemID_t itemID)	throw (Error){	__BEGIN_TRY	CoordInven_t x, y;		return findItemIID(itemID, x, y);	__END_CATCH}////////////////////////////////////////////////////////////// 瘤沥等 骇飘甫 茫酒辑 器牢磐甫 府畔茄促.////////////////////////////////////////////////////////////Item* Inventory::getBeltWithItemID(ItemID_t itemID)	throw (Error){	__BEGIN_TRY	CoordInven_t x, y;	return findItemIID(itemID, Item::ITEM_CLASS_BELT, x, y);	__END_CATCH}////////////////////////////////////////////////////////////// 瘤沥等 酒捞袍阑 茫酒辑 器牢磐甫 府畔茄促.////////////////////////////////////////////////////////////Item* Inventory::getItemWithObjectID(ObjectID_t objectID)	throw (Error){	__BEGIN_TRY	CoordInven_t x, y;	return findItemOID(objectID, x, y);	__END_CATCH}////////////////////////////////////////////////////////////// 瘤沥等 酒捞袍阑 茫酒辑 器牢磐甫 府畔茄促.// 捞客 窃膊 弊 酒捞袍狼 谅螟 惑窜 谅钎档 鞍捞 焊郴霖促.////////////////////////////////////////////////////////////Item* Inventory::findItemOID(ObjectID_t id, CoordInven_t& X, CoordInven_t& Y)	throw(){	__BEGIN_TRY	for (int j=0; j<m_Height; j++)	{		for (int i=0; i<m_Width; i++)		{			InventorySlot& slot  = getInventorySlot(i, j);			Item*          pItem = slot.getItem();			if (pItem != NULL && pItem->getObjectID() == id)			{				X = i;				Y = j;				return pItem;			}		}	}		return NULL;	__END_CATCH}////////////////////////////////////////////////////////////// 瘤沥等 酒捞袍阑 茫酒辑 器牢磐甫 府畔茄促.// 捞客 窃膊 弊 酒捞袍狼 谅螟 惑窜 谅钎档 鞍捞 焊郴霖促.////////////////////////////////////////////////////////////Item* Inventory::findItemIID(ItemID_t id, CoordInven_t& X, CoordInven_t& Y)	throw(){	__BEGIN_TRY	for (int y=0; y<m_Height; y++)	{		for (int x=0; x<m_Width; x++)		{			InventorySlot& slot  = getInventorySlot(x, y);			Item*          pItem = slot.getItem();			if (pItem != NULL && pItem->getItemID() == id)			{				X = x;				Y = y;				return pItem;			}		}	}		return NULL;	__END_CATCH}////////////////////////////////////////////////////////////// 瘤沥等 id客 努贰胶肺 酒捞袍阑 茫酒辑 器牢磐甫 府畔茄促.// 捞客 窃膊 弊 酒捞袍狼 谅螟 惑窜 谅钎档 鞍捞 焊郴霖促.////////////////////////////////////////////////////////////Item* Inventory::findItemOID(ObjectID_t id, Item::ItemClass IClass, CoordInven_t& X, CoordInven_t& Y)	throw(){	__BEGIN_TRY	for (int j=0; j<m_Height; j++)	{		for (int i=0; i<m_Width; i++)		{			InventorySlot& slot  = getInventorySlot(i, j);			Item*          pItem = slot.getItem();			if (pItem != NULL && 				pItem->getItemClass() == IClass && pItem->getObjectID() == id)			{				X = i;				Y = j;				return pItem;			}		}	}		return NULL;	__END_CATCH}////////////////////////////////////////////////////////////// 瘤沥等 id客 努贰胶肺 酒捞袍阑 茫酒辑 器牢磐甫 府畔茄促.// 捞客 窃膊 弊 酒捞袍狼 谅螟 惑窜 谅钎档 鞍捞 焊郴霖促.////////////////////////////////////////////////////////////Item* Inventory::findItemIID(ItemID_t id, Item::ItemClass IClass, CoordInven_t& X, CoordInven_t& Y)	throw(){	__BEGIN_TRY	for (int y=0; y<m_Height; y++)	{		for (int x=0; x<m_Width; x++)		{			InventorySlot& slot  = getInventorySlot(x, y);			Item*          pItem = slot.getItem();			if (pItem != NULL && 				pItem->getItemClass() == IClass && pItem->getItemID() == id)			{				X = x;				Y = y;				return pItem;			}		}	}		return NULL;	__END_CATCH}/////////////////////////////////////////////////////////////////////////////////////// findItem//    : ItemClass//  Desctiption: 秦寸 牢亥配府俊 漂沥 Item Class狼 酒捞袍捞 粮犁窍绰 啊 眉农茄促.//               饭绢 付胶磐甫 磷看阑 版快 唱鸥唱绰 酒捞袍阑 背券窍扁 困秦辑 //               捞 荤恩捞 啊瘤绊 乐绰 漂沥 Item Class狼 酒捞袍阑 馆券茄促.////  2002.09.04 厘全芒 /////////////////////////////////////////////////////////////////////////////////////Item* Inventory::findItem(Item::ItemClass IClass, ItemType_t itemType)//, CoordInven_t& X, CoordInven_t& Y)	throw(){	__BEGIN_TRY	for (int y=0; y<m_Height; y++)	{		for (int x=0; x<m_Width; x++)		{			InventorySlot& slot  = getInventorySlot(x, y);			Item*          pItem = slot.getItem();			if (pItem != NULL && 				pItem->getItemClass() == IClass 				&& (itemType==0xFFFF || pItem->getItemType() == itemType))			{				//X = x;				//Y = y;				return pItem;			}		}	}		return NULL;	__END_CATCH}Item* Inventory::findItem(Item::ItemClass IClass, ItemType_t itemType, CoordInven_t& X, CoordInven_t& Y)	throw(){	__BEGIN_TRY	for (int y=0; y<m_Height; y++)	{		for (int x=0; x<m_Width; x++)		{			InventorySlot& slot  = getInventorySlot(x, y);			Item*          pItem = slot.getItem();

⌨️ 快捷键说明

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