effecttransportitem.cpp

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 196 行

CPP
196
字号
//----------------------------------------------------------------------//// Filename    : EffectTransportItem.cpp// Written by  : Reiot////----------------------------------------------------------------------// include files#include "Assert.h"#include "EffectTransportItem.h"#include "Gpackets/GCDeleteObject.h"#include "Tile.h"#include "Zone.h"#include "Item.h"#include "ZoneUtil.h"//----------------------------------------------------------------------// constructor//----------------------------------------------------------------------EffectTransportItem::EffectTransportItem (Zone* pZone , ZoneCoord_t sx, ZoneCoord_t sy, Zone* pTargetZone, ZoneCoord_t x , ZoneCoord_t y , Item* pItem , Turn_t delay) 	throw (Error): Effect(pZone,x,y,pItem,delay) {	__BEGIN_TRY	Assert(getZone() != NULL);	Assert(getTarget() != NULL);	Assert(pTargetZone != NULL);	//m_ObjectID = pItem->getObjectID();	m_ObjectID = pItem->getObjectID();	// pTargetZone, x, y	// m_pZone, m_StartX, m_StartY	m_pTargetZone = pTargetZone;		m_StartX = sx;						m_StartY = sy;	// 辑滚 傈侩 Effect捞促. by sigi. 2002.11.14	m_bBroadcastingEffect = false;	__END_CATCH}//----------------------------------------------------------------------// destructor//----------------------------------------------------------------------EffectTransportItem::~EffectTransportItem () 	throw (Error){	__BEGIN_TRY	unaffect(m_pZone , m_X , m_Y , m_pTarget);	__END_CATCH}			//----------------------------------------------------------------------// affect to target// 捞 捞棋飘绰 鸥老俊 辆加登瘤 臼栏骨肺, affect()绰 龋免登瘤 臼绰促.// 恐衬窍搁, target篮 积己磊俊辑 瘤沥登哥, 酒公繁 老档 窍瘤 臼扁 锭巩捞促.//----------------------------------------------------------------------void EffectTransportItem::affect (Zone* pZone , ZoneCoord_t x , ZoneCoord_t y , Object* pTarget)	throw (Error){	__BEGIN_TRY//	throw UnsupportedError();		__END_CATCH}//----------------------------------------------------------------------// remove effect from target//----------------------------------------------------------------------void EffectTransportItem::unaffect (Zone* pZone , ZoneCoord_t x , ZoneCoord_t y , Object* pTarget)	throw (Error){	__BEGIN_TRY	//cout << "EffectTransportItem unaffect(pZone,x,y,pTarget)" << endl;	// pTargetZone, x, y	// m_pZone, m_StartX, m_StartY	// 棵官弗 谅钎捞绢具 茄促.	if (isValidZoneCoord(pZone, m_StartX, m_StartY))	{		//Assert(isValidZoneCoord(pZone, m_StartX, m_StartY));		// TempItem 函荐甫 棱绰促.		Item* pTempItem = NULL;		// 咯扁辑绰 瘤沥 酒捞袍捞 绝阑 荐 乐栏哥, 肚 促弗 酒捞袍捞 初咯 乐阑 荐档 乐促.		// 捞 版快绰 坷府瘤澄 酒捞袍苞 瘤陛 泅犁 官蹿俊 乐绰 酒捞袍阑 厚背窍咯 昏力秦具 茄促.		// 绝阑 版快绰 公矫窍搁 等促.		Tile & tile = pZone->getTile(m_StartX, m_StartY);		if (tile.hasItem()) 		{			pTempItem = tile.getItem();			if (pTempItem != NULL) {				// ObjectID啊 鞍促绰 富篮 鞍篮 酒捞袍捞鄂 富捞促.				//if (pTempItem->getObjectID() == m_ObjectID) {				if (pTempItem->getObjectID() == m_ObjectID) {					pZone->deleteItem(pTempItem , m_StartX, m_StartY);					// 酒捞袍捞 荤扼脸促绰 菩哦阑 朝赴促.					GCDeleteObject gcDeleteObject;					gcDeleteObject.setObjectID(m_ObjectID);					pZone->broadcastPacket(m_StartX, m_StartY , &gcDeleteObject);					// 促弗 粮俊 眠啊茄促.					// Multi-thread捞骨肺.. 炼缴炼缴..					// 鞍篮 ZoneGroup捞搁 傲 持绰促.					if (pZone->getZoneGroup()==m_pTargetZone->getZoneGroup())					//if (pZone==m_pTargetZone)					{						//cout << "Zone->addItem" << endl;						m_pTargetZone->addItem(pTempItem, x, y);					}					else					{						//cout << "Zone->addItemDelayed" << endl;						m_pTargetZone->addItemDelayed(pTempItem, x, y);					}					//cout << "addItemDelayed OK" << endl;				}			}		}	}	else	{		filelog("motorBug.txt", "ZoneID=%d, x=%d, y=%d", (int)pZone->getZoneID(), (int)m_StartX, (int)m_StartY);	}	pTarget = NULL;	__END_CATCH}//----------------------------------------------------------------------// unaffect()//----------------------------------------------------------------------void EffectTransportItem::unaffect ()	throw (Error){	__BEGIN_TRY	//cout << "EffectTransportItem unaffect" << endl;	__END_CATCH}//----------------------------------------------------------------------// unaffect()//----------------------------------------------------------------------void EffectTransportItem::unaffect (Creature* pCreature)	throw (Error){	__BEGIN_TRY	__END_CATCH}//----------------------------------------------------------------------// get debug string//----------------------------------------------------------------------string EffectTransportItem::toString () const 	throw (){	StringStream msg;	msg << "EffectTransportItem("			<< "ZoneID:" << (int)m_pZone->getZoneID()			<< "TargetZoneID:" << (int)m_pTargetZone->getZoneID()			<< ",X:"     << (int)getX()			<< ",Y:"     << (int)getY();	if (m_pTarget) msg << ",Target:" << m_pTarget->toString();	else           msg << ",Target:NULL";	msg << ",Deadline:" << (int)m_Deadline.tv_sec 			<< "." << (int)m_Deadline.tv_usec;	msg << ")";	return msg.toString();}

⌨️ 快捷键说明

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