📄 corpse.cpp
字号:
//////////////////////////////////////////////////////////////////////////////// Filename : Corpse.h// Written by : excel96// Description : //////////////////////////////////////////////////////////////////////////////#include "Corpse.h"#include "Zone.h"#include "ItemFactory.h"#include "Inventory.h"#include "ItemUtil.h"#include "RelicUtil.h"#include <stdio.h>//#include "EffectHasBloodBible.h"#include "Gpackets/GCAddEffect.h"// ItemUtil.h俊 捞芭 颗扁绊 瘤况档 等促.extern void saveItemInCorpse(Item* pItem, Corpse* pCorpse) throw (Error);//////////////////////////////////////////////////////////////////////////////// class Corpse member methods//////////////////////////////////////////////////////////////////////////////Corpse::Corpse() throw(){ __BEGIN_TRY m_TreasureCount = 0; m_X = m_Y = 0; m_pZone = NULL; m_Level = 0; m_Exp = 0; __END_CATCH}Corpse::~Corpse() throw(){ __BEGIN_TRY while (!m_Treasures.empty()) { Item* pItem = m_Treasures.front(); SAFE_DELETE(pItem); m_Treasures.pop_front(); } __END_CATCH}Item* Corpse::getTreasure() throw(){ __BEGIN_TRY if (!m_Treasures.empty()) { Item* pItem = m_Treasures.front(); Assert(pItem!=NULL); // 己窜俊辑 己辑啊 狐廉唱哎锭 捞棋飘甫 波霖促. deleteFlagEffect( this, pItem ); deleteRelicEffect( this, pItem ); m_Treasures.pop_front(); m_TreasureCount--; return pItem; } return NULL; __END_CATCH}void Corpse::addTreasure(Item* pItem) throw(){ __BEGIN_TRY Assert(pItem != NULL); if (isRelicItem(pItem)) { saveItemInCorpse(pItem, this); addHasRelicEffect(m_pZone, this, pItem); } else if ( pItem->isFlagItem() ) { saveItemInCorpse(pItem, this); } else if ( pItem->getItemClass() == Item::ITEM_CLASS_SWEEPER ) { saveItemInCorpse(pItem, this); } m_Treasures.push_back(pItem); m_TreasureCount++; __END_CATCH}Item* Corpse::getTreasure( ObjectID_t objectID ) const throw(){ __BEGIN_TRY list<Item*>::const_iterator itr = m_Treasures.begin(); for ( ; itr != m_Treasures.end() ; itr++ ) { if ( (*itr)->getObjectID() == objectID ) return *itr; } return NULL; __END_CATCH}Item* Corpse::popTreasure( ObjectID_t objectID ) throw(){ __BEGIN_TRY list<Item*>::iterator itr = m_Treasures.begin(); for ( ; itr != m_Treasures.end() ; itr++ ) { if ( (*itr)->getObjectID() == objectID ) { Item* pItem = *itr; m_Treasures.erase(itr); m_Treasures.push_front( pItem ); return getTreasure(); } } return NULL; __END_CATCH}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -