📄 inventory.cpp
字号:
if (pItem != NULL && pItem->getItemClass() == IClass && (itemType==0xFFFF || pItem->getItemType() == itemType)) { X = x; Y = y; return pItem; } } } // X = -1;// Y = -1; return NULL; __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// ITEM MANIPULATION RELATED METHODS//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 瘤沥等 困摹狼 酒捞袍 器牢磐甫 府畔茄促.////////////////////////////////////////////////////////////Item* Inventory::getItem(CoordInven_t X, CoordInven_t Y) const throw(){ __BEGIN_TRY InventorySlot& slot = getInventorySlot(X, Y); return slot.getItem(); __END_CATCH}////////////////////////////////////////////////////////////// 瘤沥等 困摹俊 酒捞袍 器牢磐甫 技泼秦霖促.////////////////////////////////////////////////////////////void Inventory::setItem(CoordInven_t X, CoordInven_t Y, Item* pItem) throw(){ __BEGIN_TRY InventorySlot& slot = getInventorySlot(X, Y); slot.addItem(pItem); __END_CATCH}////////////////////////////////////////////////////////////////////////////////// // PACKING RELATED METHODS// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 牢亥配府俊辑 酒捞袍 器牢磐 葛滴甫 力芭茄促.// 角力肺 酒捞袍 按眉甫 瘤快瘤绰 臼绰促.////////////////////////////////////////////////////////////void Inventory::clear() throw (){ __BEGIN_TRY // 牢亥配府 傈眉甫 罗宽 八祸窍搁辑... for (int y=0; y<m_Height; y++) { for (int x=0; x<m_Width; x++) { InventorySlot& slot = getInventorySlot(x, y); slot.deleteItem(); } } m_TotalNum = 0; m_TotalWeight = 0; __END_CATCH}////////////////////////////////////////////////////////////// 牢亥配府俊 甸绢乐绰 酒捞袍阑 府胶飘肺 父甸绢辑 府畔茄促.////////////////////////////////////////////////////////////list<Item*> Inventory::getList() const throw(){ __BEGIN_TRY list<Item*> itemList; for (int x=0; x<m_Width; x++) { for (int y=0; y<m_Height;y++) { InventorySlot& slot = getInventorySlot(x, y); Item* pItem = slot.getItem(); bool bAdd = true; // 酒捞袍捞 乐促搁 酒捞袍 府胶飘俊 // 捞固 甸绢啊 乐瘤绰 臼篮瘤 眉农甫 秦具 茄促. if (pItem != NULL) { // 府胶飘俊 鞍篮 仇捞 乐绰瘤 眉农甫 茄促. list<Item*>::iterator itr = itemList.begin(); for (; itr != itemList.end(); itr++) { if (*itr == pItem) { bAdd = false; break; } } // 府胶飘俊 度鞍篮 酒捞袍捞 绝菌促搁 府胶飘俊促啊 歹茄促. if (bAdd) { itemList.push_back(pItem); y += pItem->getVolumeHeight() - 1; continue; } } } } return itemList; __END_CATCH}////////////////////////////////////////////////////////////// 牢亥配府 救俊 甸绢 乐绰 2x2 酒捞袍狼 肮荐甫 府畔茄促.////////////////////////////////////////////////////////////int Inventory::calc2x2Item(void) const throw(){ __BEGIN_TRY int rValue = 0; list<Item*> itemList = getList(); list<Item*>::const_iterator itr = itemList.begin(); for (; itr != itemList.end(); itr++) { Item* pItem = (*itr); if (pItem->getVolumeWidth() == 2 && pItem->getVolumeHeight() == 2) rValue += 1; } return rValue; __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// MISC METHODS//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void Inventory::save(const string& owner) throw(){ __BEGIN_TRY list<Item*> itemList; for (int x=0; x<m_Width; x++) { for (int y=0; y<m_Height;y++) { InventorySlot& slot = getInventorySlot(x, y); Item* pItem = slot.getItem(); bool bAdd = true; // 酒捞袍捞 乐促搁 酒捞袍 府胶飘俊 // 捞固 甸绢啊 乐瘤绰 臼篮瘤 眉农甫 秦具 茄促. if (pItem != NULL) { // 府胶飘俊 鞍篮 仇捞 乐绰瘤 眉农甫 茄促. list<Item*>::iterator itr = itemList.begin(); for (; itr != itemList.end(); itr++) { if (*itr == pItem) { bAdd = false; break; } } // 府胶飘俊 度鞍篮 酒捞袍捞 绝菌促搁 府胶飘俊促啊 歹茄促. // 骇飘老 版快俊绰 Belt::save俊辑 救俊 甸绢乐绰 酒捞袍鳖瘤 // 历厘窍聪鳖, 捌沥且 鞘夸绝促. if (bAdd) { pItem->save(owner, STORAGE_INVENTORY, 0, x, y); itemList.push_back(pItem); //y += pItem->getVolumeHeight() - 1; } } } } __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////string Inventory::toString () const throw (){ __BEGIN_TRY StringStream msg; msg << "Inventory(" << "\n"; msg << "Owner:" << m_Owner << "\n"; 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) { msg << pItem->getNum(); } } msg << "\n"; } msg << "\n"; msg << ")"; return msg.toString(); __END_CATCH}///////////////////////////////////////////////////////////////////////////// XMAS 捞亥飘甫 困秦辑 父电 祸彬喊 捞亥飘 喊 箭磊 内靛捞促.// 2002斥 绢赴捞朝俊 捞 内靛甫 弊措肺 荤侩窍扁 困秦辑 // 林籍阑 秦力窍绊 荤侩窍看促. // 窜 鞍篮 捞亥飘啊 拌加秦辑 惯积且 荐 乐扁 锭巩俊,// EVENT CODE狼 捞抚阑 XMAS啊 酒聪扼 STAR_EVENT_CODE肺 官操绰 巴阑 绊妨秦具// 且 巴捞促.// // 2002.5.2 厘全芒(changaya@metrotech.co.kr//////////////////////////////////////////////////////////////////////////////#ifdef __XMAS_EVENT_CODE__// 牢亥配府甫 八祸窍搁辑 祸彬喊肺 捞亥飘 喊 箭磊甫 庆酒赴促.bool Inventory::hasEnoughStar(const XMAS_STAR& star) throw (Error){ __BEGIN_TRY //cout << "鞘夸茄 喊狼 箭磊 : " << star.amount << endl; int amount[STAR_COLOR_MAX]; memset(amount, 0, sizeof(int)*STAR_COLOR_MAX); for (int i=0; i<STAR_COLOR_MAX; i++) amount[i] = 0; 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() == Item::ITEM_CLASS_EVENT_STAR) { int ItemNum = pItem->getNum(); //cout << pItem->getItemType() << " " << ItemNum << endl; switch (pItem->getItemType()) { case 0: amount[STAR_COLOR_BLACK] += ItemNum; break; case 1: amount[STAR_COLOR_RED] += ItemNum; break; case 2: amount[STAR_COLOR_BLUE] += ItemNum; break; case 3: amount[STAR_COLOR_GREEN] += ItemNum; break; case 4: amount[STAR_COLOR_CYAN] += ItemNum; break; case 5: amount[STAR_COLOR_WHITE] += ItemNum; break; case 6: amount[STAR_COLOR_PINK] += ItemNum; break; default: Assert(false); break; } } } } //cout << star.color << endl; //cout << "啊瘤绊 乐绰 傍狼 箭磊: " << amount[star.color] << endl; if (amount[star.color] >= star.amount) return true; return false; __END_CATCH}//#endif//#ifdef __XMAS_EVENT_CODE__void Inventory::decreaseStar(const XMAS_STAR& star) throw (Error){ __BEGIN_TRY // 临咯具 且 剧阑 扁撅秦 敌促. int amount = star.amount; 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() == Item::ITEM_CLASS_EVENT_STAR) { ItemType_t IType = pItem->getItemType(); cout << IType << " " << star.color << endl; if ((IType == 0 && star.color == STAR_COLOR_BLACK) || (IType == 1 && star.color == STAR_COLOR_RED) || (IType == 2 && star.color == STAR_COLOR_BLUE) || (IType == 3 && star.color == STAR_COLOR_GREEN) || (IType == 4 && star.color == STAR_COLOR_CYAN) || (IType == 5 && star.color == STAR_COLOR_WHITE) || (IType == 6 && star.color == STAR_COLOR_PINK)) { int ItemNum = pItem->getNum(); // 酒捞袍狼 胶琶 箭磊啊 临咯具 且 剧焊促 累芭唱 鞍促搁, // 酒捞袍阑 昏力秦具 茄促. if (ItemNum <= amount) { m_TotalWeight -= (pItem->getWeight() * ItemNum); m_TotalNum -= ItemNum; // 酒捞袍捞 昏力等父怒 瘤况具 且 剧档 临咯拎具 茄促. amount = amount - ItemNum; // 酒捞袍阑 昏力秦霖促. deleteItem(x, y); pItem->destroy(); SAFE_DELETE(pItem); } else { m_TotalWeight -= (pItem->getWeight() * amount); m_TotalNum -= amount; pItem->setNum(ItemNum - amount); pItem->save(m_Owner, STORAGE_INVENTORY, 0, x, y); // 酒捞袍捞 昏力等父怒 瘤况具 且 剧档 临咯拎具 茄促. amount = 0; } // 临咯具 且 剧捞 0捞 登菌促搁 府畔茄促. if (amount == 0) return; } } } } // 沥惑利牢 贸府 鉴辑扼搁 捞 镑鳖瘤 坷搁 救 等促. Assert(false); __END_CATCH}//#endif///*//#ifdef __XMAS_EVENT_CODE__bool Inventory::hasRedGiftBox(void) throw (Error){ __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() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() == 1) { return true; // 急拱 惑磊狼 农扁啊 2x2捞扁 锭巩俊, // x甫 窍唱 歹 歹秦霖促. x += 1; } } } return false; __END_CATCH}//#endif//*////*//#ifdef __XMAS_EVENT_CODE__bool Inventory::hasGreenGiftBox(void) throw (Error){ __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() == Item::ITEM_CLASS_EVENT_GIFT_BOX && pItem->getItemType() == 0) { return true; // 急拱 惑磊狼 农扁啊 2x2捞扁 锭巩俊, // x甫 窍唱 歹 歹秦霖促. x += 1; } } } return false; __END_CATCH}//#endif//*/void Inventory::clearQuestItem(list<Item*>& iList) throw(Error){ { list<Item*> ItemList; int height = getHeight(); int width = getWidth(); for (int j=0; j<height; j++) { for (int i=0; i<width; i++) { Item* pItem = getItem(i, j); if (pItem != NULL) { // 眉农等 酒捞袍狼 府胶飘俊辑 泅犁 酒捞袍阑 茫绰促. list<Item*>::iterator itr = find(ItemList.begin(), ItemList.end(), pItem); if (itr == ItemList.end()) { i += pItem->getVolumeWidth() - 1; if ( pItem->isQuestItem() ) { deleteItem( pItem->getObjectID() ); iList.push_back(pItem); } else { // 府胶飘俊 酒捞袍捞 绝栏搁 // 鞍篮 酒捞袍阑 滴锅 眉农窍瘤 臼扁 困秦辑 // 府胶飘俊促啊 酒捞袍阑 笼绢持绰促. ItemList.push_back(pItem); } } } } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -