📄 zoneitemposition.cpp
字号:
///////////////////////////////////////////////////////////////////// ZoneItemPosition 努贰胶 备泅///////////////////////////////////////////////////////////////////#include "Assert.h"#include "Item.h"#include "Corpse.h"#include "Zone.h"#include "Tile.h"#include "ZoneGroup.h"#include "ZoneUtil.h"#include "Utility.h"#include "StringStream.h"#include "Effect.h"#include "Gpackets/GCDeleteObject.h"#include "Gpackets/GCAddEffectToTile.h"#include "ZoneItemPosition.h"Item* ZoneItemPosition::getItem_LOCKED( bool isDel ) throw(Error){ __BEGIN_TRY Zone* pZone = getZone(); if ( pZone == NULL ) { filelog( "ItemError.log", "ZoneItemPosition:getItem() : ZoneID啊 肋给登菌嚼聪促."); return NULL; } Item* pItem = getItemFromZone( pZone ); if ( pItem == NULL ) return NULL; if ( isDel ) deleteItemFromZone( pZone, pItem ); if ( pItem->getItemClass() == Item::ITEM_CLASS_BLOOD_BIBLE || pItem->getItemClass() == Item::ITEM_CLASS_CASTLE_SYMBOL ) { GCAddEffectToTile gcAddEffectToTile; gcAddEffectToTile.setEffectID( Effect::EFFECT_CLASS_WARP_BLOOD_BIBLE_FROM_TILE ); gcAddEffectToTile.setXY( m_ZoneX, m_ZoneY ); pZone->broadcastPacket( m_ZoneX, m_ZoneY, &gcAddEffectToTile ); } return pItem; __END_CATCH}Item* ZoneItemPosition::getItem( bool isDel ) throw(Error){ __BEGIN_TRY Zone* pZone = getZone(); if ( pZone == NULL ) { filelog( "ItemError.log", "ZoneItemPosition:getItem() : ZoneID啊 肋给登菌嚼聪促."); return NULL; } Item* pItem = NULL; __ENTER_CRITICAL_SECTION((*pZone)) pItem = getItemFromZone( pZone ); if ( pItem == NULL ) { pZone->unlock(); return NULL; } if ( isDel ) { deleteItemFromZone( pZone, pItem ); } if ( pItem->getItemClass() == Item::ITEM_CLASS_BLOOD_BIBLE || pItem->getItemClass() == Item::ITEM_CLASS_CASTLE_SYMBOL ) { GCAddEffectToTile gcAddEffectToTile; gcAddEffectToTile.setEffectID( Effect::EFFECT_CLASS_WARP_BLOOD_BIBLE_FROM_TILE ); gcAddEffectToTile.setXY( m_ZoneX, m_ZoneY ); pZone->broadcastPacket( m_ZoneX, m_ZoneY, &gcAddEffectToTile ); } __LEAVE_CRITICAL_SECTION((*pZone)) return pItem; __END_CATCH}Item* ZoneItemPosition::popItem( bool bLock ) throw(Error){ __BEGIN_TRY if ( bLock ) return getItem( true ); return getItem_LOCKED( true ); __END_CATCH}Item* ZoneItemPosition::getItemFromZone( Zone* pZone ) throw (Error){ __BEGIN_TRY VSRect rect( 0, 0, pZone->getWidth() - 1, pZone->getHeight() - 1 ); if( !rect.ptInRect( m_ZoneX, m_ZoneY ) ) { filelog( "ItemError.log", "ZoneItemPosition:getItem() : 酒捞袍 谅钎啊 肋给登菌嚼聪促." ); return NULL; } Tile& tile = pZone->getTile( m_ZoneX, m_ZoneY ); if( !tile.hasItem() ) { filelog( "ItemError.log", "ZoneItemPosition:getItem() : 酒捞袍捞 绝嚼聪促." ); return NULL; } return tile.getItem(); __END_CATCH}void ZoneItemPosition::deleteItemFromZone( Zone* pZone, Item* pItem ) throw(Error){ __BEGIN_TRY pZone->deleteItem( pItem, m_ZoneX, m_ZoneY ); GCDeleteObject gcDeleteObject( pItem->getObjectID() ); pZone->broadcastPacket( m_ZoneX, m_ZoneY, &gcDeleteObject ); __END_CATCH}string ZoneItemPosition::toString() const throw (Error){ __BEGIN_TRY StringStream msg; msg << "ZoneItemPosition(" << "ZoneID:" << (int)m_ZoneID << ",ZoneX:" << (int)m_ZoneX << ",ZoneY:" << (int)m_ZoneY << ")"; return msg.toString(); __END_CATCH}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -