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

📄 pkzoneinfomanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
#include "DB.h"#include "StringStream.h"#include "Zone.h"#include "ZoneUtil.h"#include "PKZoneInfoManager.h"PKZoneInfoManager* g_pPKZoneInfoManager = NULL;string PKZoneInfo::toString()	throw(Error){	__BEGIN_TRY	StringStream msg;	msg << "PKZoneInfo("		<< "ZoneID: " << getZoneID()		<< ",isFree: " << ((isFree())?("true"):("false"))		<< ",Race: " << getRace()		<< ",EnterPosition( " << getEnterX() << ", " << getEnterY() << ") "		<< ",PCLimit: " << getPCLimit() << ")";	return msg.toString();	__END_CATCH}void PKZoneInfoManager::load()	throw(Error){	__BEGIN_TRY	Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		Result* pResult = pStmt->executeQuery( "SELECT ZoneID, Race, EnterX, EnterY, ResurrectX, ResurrectY, PCLimit FROM PKZoneInfo");		// UPDATE牢 版快绰 Result* 措脚俊.. pStmt->getAffectedRowCount()		while (pResult->next()) 		{			int count = 0;			ZoneID_t	zoneID 	= pResult->getInt( ++count );			int			race	= pResult->getInt( ++count );			ZoneCoord_t	X		= pResult->getInt( ++count );			ZoneCoord_t	Y		= pResult->getInt( ++count );			ZoneCoord_t	rX		= pResult->getInt( ++count );			ZoneCoord_t	rY		= pResult->getInt( ++count );			int			pcLimit	= pResult->getInt( ++count );			PKZoneInfo* pPKZoneInfo = new PKZoneInfo( zoneID, X, Y, rX, rY, race, pcLimit );			addPKZoneInfo( pPKZoneInfo );		}		SAFE_DELETE(pStmt);	}	END_DB(pStmt)	__END_CATCH}void PKZoneInfoManager::addPKZoneInfo( PKZoneInfo* pPKZoneInfo )	throw(Error){	__BEGIN_TRY	PKZoneInfoMap::iterator itr = m_PKZoneInfos.find( pPKZoneInfo->getZoneID() );	if ( itr != m_PKZoneInfos.end() ) throw Error("Duplicated PK Zone ID");	m_PKZoneInfos[ pPKZoneInfo->getZoneID() ] = pPKZoneInfo;		Zone* pZone = getZoneByZoneID( pPKZoneInfo->getZoneID() );	if ( pZone != NULL )	{//		pZone->stopTime();//		pZone->setTimeband( 2 );//		pZone->resetDarkLightInfo();	}	cout << "[" << pPKZoneInfo->getZoneID() << "]" << pPKZoneInfo->toString().c_str() << endl;	__END_CATCH}PKZoneInfo*	PKZoneInfoManager::getPKZoneInfo( ZoneID_t	zoneID ) const	throw(Error){	__BEGIN_TRY	PKZoneInfoMap::const_iterator itr = m_PKZoneInfos.find( zoneID );	if ( itr == m_PKZoneInfos.end() ) return NULL;	return itr->second;	__END_CATCH}bool PKZoneInfoManager::isPKZone( ZoneID_t zoneID ) const	throw(Error){	__BEGIN_TRY	PKZoneInfoMap::const_iterator itr = m_PKZoneInfos.find( zoneID );	return itr != m_PKZoneInfos.end();	__END_CATCH}bool PKZoneInfoManager::enterPKZone( ZoneID_t zoneID )	throw(Error){	__BEGIN_TRY	PKZoneInfo* pPKZoneInfo = getPKZoneInfo( zoneID );	if ( pPKZoneInfo == NULL ) return true;	bool ret = false;	__ENTER_CRITICAL_SECTION( (*pPKZoneInfo) )	ret = pPKZoneInfo->enterZone();	__LEAVE_CRITICAL_SECTION( (*pPKZoneInfo) )	return ret;	__END_CATCH}bool PKZoneInfoManager::leavePKZone( ZoneID_t zoneID )	throw(Error){	__BEGIN_TRY	PKZoneInfo* pPKZoneInfo = getPKZoneInfo( zoneID );	if ( pPKZoneInfo == NULL ) return true;	bool ret = false;	__ENTER_CRITICAL_SECTION( (*pPKZoneInfo) )	ret = pPKZoneInfo->leaveZone();	__LEAVE_CRITICAL_SECTION( (*pPKZoneInfo) )	return ret;	__END_CATCH}	bool PKZoneInfoManager::canEnterPKZone( ZoneID_t zoneID )	throw(Error){	__BEGIN_TRY	PKZoneInfo* pPKZoneInfo = getPKZoneInfo( zoneID );	if ( pPKZoneInfo == NULL ) return true;	bool ret = false;	__ENTER_CRITICAL_SECTION( (*pPKZoneInfo) )	ret = pPKZoneInfo->canEnter();	__LEAVE_CRITICAL_SECTION( (*pPKZoneInfo) )	return ret;	__END_CATCH}bool PKZoneInfoManager::getResurrectPosition( ZoneID_t zoneID, ZONE_COORD& zoneCoord ) const	throw(Error){	__BEGIN_TRY	PKZoneInfo* pPKZoneInfo = getPKZoneInfo( zoneID );	if ( pPKZoneInfo == NULL ) return false;		zoneCoord.set( zoneID, pPKZoneInfo->getResurrectX(), pPKZoneInfo->getResurrectY() );	return true;	__END_CATCH}

⌨️ 快捷键说明

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