亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? map.cpp

?? 韓國英雄王座倒閉后流出來部分源代碼
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
////////////////////////////////////////////////////////////////////////////////////////
//	Map.cpp : implementation file
//
//
//	-	Memory Pool籃 ServerMem Class肺 包訪 內(nèi)靛甫 撈傈矯糯
////////////////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Map.h"
#include "CFightZone.h"

#ifdef DEF_AZIT
	#include "AzitManager.h"
#endif

#include "../MapLoad/ArchiveMap.h"			// Map Data


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


////////////////////////////////////////////////////////////////////////////////////////
//	Global Values or Functions
////////////////////////////////////////////////////////////////////////////////////////
extern _LPCFIGHTZONEMANAGER  g_lpFightzoneManager ;

////////////////////////////////////////////////////////////////////////////////////////
// Construction/Destruction
////////////////////////////////////////////////////////////////////////////////////////
Map::Map()
{


	for(int i =0 ; i < _Module.m_iMaxMapLayer ; ++i )
	{
		_MAP[i] =   new _GAME_MAP_ * [MAX_MAPTILE_SIZE]  ;

		for(int j =0 ; j < MAX_MAPTILE_SIZE ; ++j )
		{
			_MAP[i][j] =   new _GAME_MAP_ [MAX_MAPTILE_SIZE]  ;
		}
	}
	
	for( i =0 ; i < _Module.m_iMaxMapLayer ; ++i )
	{
		for(int j =0 ; j < MAX_MAPTILE_SIZE ; ++j )
		{
			memset(_MAP[i][j] ,0x00,  sizeof( _GAME_MAP_ )   * MAX_MAPTILE_SIZE ) ;
		}
	}

	
	//	memset(_MONSTER_MAP_, 0x00, sizeof(__MONSTER_MAP__)*MAX_MAPLAYER );
	
	memset(MapConfig, 0x00, sizeof(_MapConfig_)*MAX_MAPLAYER );

	memset(&_LOBBY_, 0x00, sizeof(_LOBBY_) );

	memset(&_HIDDENLOBBY_, 0x00, sizeof(_HIDDENLOBBY_) );


	//	--------------------------------------------------------------------------------
	//	Inistialize Handle
	//	--------------------------------------------------------------------------------
	m_nTempHandle		= 0;											
	m_nMaxLayer			= 0;
	m_bHaveFightzone	= false ;

	//	--------------------------------------------------------------------------------
	//	Initialize Critical Section
	//	--------------------------------------------------------------------------------
	::InitializeCriticalSectionAndSpinCount( &m_MapLock	, 2000 );	

	::InitializeCriticalSectionAndSpinCount( &m_DBLock	, 2000 );	
	
	
}


Map::~Map()
{


	//	--------------------------------------------------------------------------------
	//	Socket 瀝焊甫 Memory俊輯 昏力 矯糯
	//
	//	- SOCKET秦力矯 肋給等 Handle藹 秦力竅綽 版快 坷幅 貿(mào)府 
	//	--------------------------------------------------------------------------------


	LIST_VOIDPTR::iterator itEnd = m_PoolSocket.End() ;
	for (LIST_VOIDPTR::iterator it = m_PoolSocket.Begin(); it != itEnd; ++it)
	{		
		_SOCKET_FD	*pSocket	= (_SOCKET_FD *)*it;

		if( pSocket )
		{
			if( pSocket->dwMagicNum == MAGIC_NUM )
			{
				::DeleteCriticalSection( &pSocket->SendCS	);

				//	DUKE KIM  酒貳 扼牢俊輯 輛豐 矯 Memory 坷幅 慣積
				SAFE_DELETE<PlayerInfo> (&pSocket->pPlayer) ;
				
				SAFE_DELETE<_SOCKET_FD> (&pSocket) ;
			}
		}
	}

	m_PoolSocket.Clear();

#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("m_PoolParty stop Start") ;
#endif


	//	--------------------------------------------------------------------------------
	//	Party 瀝焊甫 Memory俊輯 昏力 矯糯
	//	--------------------------------------------------------------------------------

	MAP_VOIDPTR::iterator it_mapEnd = m_MapParty.End() ;
	for (MAP_VOIDPTR::iterator it_map = m_MapParty.Begin(); it_map != it_mapEnd ; ++it_map)
	{
		CParty * lpParty = (CParty *) it_map->second;
	
		SAFE_DELETE<CParty> (&lpParty) ;
	}
	m_MapParty.Clear() ;

	itEnd = m_PoolParty.End() ;
	for (it = m_PoolParty.Begin(); it != itEnd ; ++it)
	{
		CParty *pParty = (CParty *)*it;
		

		SAFE_DELETE<CParty> (&pParty) ;
	}

	m_PoolParty.Clear() ;


#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("m_PoolGuild stop Start") ;
#endif
	

	it_mapEnd = m_MapGuild.End() ;
	for (it_map = m_MapGuild.Begin(); it_map != it_mapEnd ; ++it_map)
	{
		_LPGUILD pGuild = (_LPGUILD) it_map->second;
	
		SAFE_DELETE<_CGUILD> (&pGuild) ;
	}
	m_MapGuild.Clear() ;

	//	--------------------------------------------------------------------------------
	// NOTENOTE: 辨靛 瀝焊甫 Memory俊輯 昏力竊 
	//	--------------------------------------------------------------------------------
	itEnd = m_PoolGuild.End() ;
	for (it = m_PoolGuild.Begin(); it != itEnd ; ++it)
	{
		_LPGUILD pGuild = (_LPGUILD) *it;
		

		SAFE_DELETE<_CGUILD> (&pGuild) ;
	}

	m_PoolGuild.Clear() ;



#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("m_MapItem stop Start") ;
#endif

	//	--------------------------------------------------------------------------------
	//	Delete Item 
	//	--------------------------------------------------------------------------------	
	for (it_map = m_MapItem.Begin(); it_map !=  m_MapItem.End(); it_map++)
	{	
		CItem	*pItem = (CItem *)it_map->second;
		
		SAFE_DELETE<CItem> (&pItem) ;
	}

	m_MapItem.Clear();

#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("m_MapItem stop end") ;
#endif
	

#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("m_PoolItem stop Start") ;
#endif
	//	--------------------------------------------------------------------------------
	//	Item 瀝焊甫 Memory俊輯 昏力 矯糯
	//	--------------------------------------------------------------------------------
	itEnd = m_PoolItem.End() ;
	for (it = m_PoolItem.Begin(); it != itEnd; ++it)
	{	
		CItem *pItem = (CItem *)*it;			

		SAFE_DELETE<CItem> (&pItem) ;
	}	
	
	m_PoolItem.Clear();

#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("m_MapNPC stop Start") ;
#endif

	for(int i = 0 ; i < m_nMaxLayer; ++i )
	{
		//	--------------------------------------------------------------------------------
		// Delete Map NPC
		//	--------------------------------------------------------------------------------	
		MAP_VOIDPTR::iterator it_mapEnd = m_MapNPC[i]->End() ;
		for (MAP_VOIDPTR::iterator it_map = m_MapNPC[i]->Begin(); it_map != it_mapEnd; ++it_map)
		{
			NPC *lpNpc = (NPC *)it_map->second;

			if(!lpNpc->IsDead() )
				lpNpc->EnchantAllStop() ;

			SAFE_DELETE<NPC> (&lpNpc) ;
		}
		
		m_MapNPC[i]->Clear();

		SAFE_DELETE<SafeMap> (&m_MapNPC[i]) ;
	}

	//	--------------------------------------------------------------------------------
	//	NPC Setting瀝焊甫 昏力 矯糯
	//	--------------------------------------------------------------------------------
#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("m_LocationNPC stop Start") ;
#endif
	
	itEnd = m_LocationNPC.End() ;
	for (  it = m_LocationNPC.Begin(); it != itEnd; ++it)
	{
		_NPC_	*pNPC = (_NPC_ *)*it;					//	殿廢等 檬扁 NPC瀝焊甫 掘瀾 			
		
		SAFE_DELETE< _NPC_> (&pNPC) ;
	}

	m_LocationNPC.Clear() ;

#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("m_PoolSocket stop Start") ;
#endif



#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("m_PoolSkill stop Start") ;
#endif
	//	--------------------------------------------------------------------------------
	//	Skill 瀝焊甫 Memory俊輯 昏力 矯糯
	//	--------------------------------------------------------------------------------
	itEnd = m_PoolSkill.End() ;
	for (it = m_PoolSkill.Begin(); it != itEnd; ++it)
	{
		CEnchant *pEnchant = (CEnchant *)*it;			


		SAFE_DELETE<CEnchant> (&pEnchant) ;
	}

	m_PoolSkill.Clear();

	//	--------------------------------------------------------------------------------
	// Delete Critical Section 	
	//	--------------------------------------------------------------------------------
#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("DeleteCriticalSection start ") ;
#endif	
	::DeleteCriticalSection( &m_MapLock			);
	::DeleteCriticalSection( &m_DBLock			);

	
	
#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("DeleteCriticalSection end") ;
#endif

	m_MapAccountID.Clear();
	m_MapPlayerID.Clear();
	m_MapPlayerHandle.Clear();
	
//#ifdef DEF_LOGOUT_TO_WORLD
//	m_MapTempPlayerID.Clear();			//  烙矯 歷厘儈 AccountID
//#endif

	for( i =0 ; i < _Module.m_iMaxMapLayer ; ++i )
	{
		for(int j =0 ; j < MAX_MAPTILE_SIZE ; ++j )
		{
			SAFE_DELETE<_GAME_MAP_ >(&_MAP[i][j]) ;
		}
	}

	for(i =0 ; i < _Module.m_iMaxMapLayer ; ++i )
	{
		SAFE_DELETE<_GAME_MAP_ *>(&_MAP[i]) ;
	}


#ifdef DEF_SERVERDOWNDELAYTRACE
	ErrorMsg("MapClear end") ;
#endif

}


////////////////////////////////////////////////////////////////////////////////////////
//	AOI Array俊 秦寸 困摹肺 撈悼 矯糯
//
//	NPC(Monster)貿(mào)府 風(fēng)憑闌 眠啊 矯糯	  
//	PC/NCP Handle貿(mào)府俊 包茄 絆刮 
////////////////////////////////////////////////////////////////////////////////////////
int Map::AOI_PlayerMove( _LPSOCKET_FD pSocketFD, _POINT &pPoint )
{
	if( pSocketFD == NULL						)	return -1;
	if( pSocketFD->dwMagicNum != MAGIC_NUM		)	return -1;

	if( !pSocketFD->pPlayer						)	return -1;

	if(	pSocketFD->PlayerStatus == CONNECT_CLOSE)	return -1;

	//	--------------------------------------------------------------------------------
	//	秦寸 甘狼 瀝焊甫 掘瀾
	//	--------------------------------------------------------------------------------
	BYTE	nMapLayer =	pSocketFD->pPlayer->m_nMapLayer;
	if( nMapLayer >= m_nMaxLayer )	return -1;

	int		nMaxX	=	MapConfig[nMapLayer].nMaxX;
	int		nMaxY	=	MapConfig[nMapLayer].nMaxY;

	//	--------------------------------------------------------------------------------
	//	撈悼且 困摹甫 崔曝?fù)?葛膽肺 秦寸 困摹俊 瀝焊甫 扁廢 矯糯	
	//	--------------------------------------------------------------------------------
	int nLevel	= 0, i, j;
		
	int	nXFrom	= 0, nXTo =	0;
	int nYFrom	= 0, nYTo =	0;
	
	_POINT	Point;


	Point.x = (WORD)(pPoint.x/100);
	Point.y	= (WORD)(pPoint.y/100);	

	//	--------------------------------------------------------------------------------
	//	NOTENOTE: 彌利拳 累訣闌 竊 
	//	--------------------------------------------------------------------------------
	while( 1 )
	{
		nXFrom	= Point.x  - 	nLevel;
		nXTo	= Point.x  + 	nLevel;
	
		nYFrom	= Point.y  - 	nLevel;
		nYTo	= Point.y  + 	nLevel;

		nXFrom	=	MAX( nXFrom		,	0		);
		nXTo	=	MIN( nXTo		,	nMaxX	);

		nYFrom	=	MAX( nYFrom		,	0		);
		nYTo	=	MIN( nYTo		,	nMaxY	);

		for( i = nXFrom; i <= nXTo; i ++ )
		{
			for( j = nYFrom; j <= nYTo; j ++ )
			{	

				if( !(_MAP[nMapLayer][i][j].nCheckBit & CHK_MOVE)	)	continue;	//	撈悼 閡啊 瘤開牢 版快
				if( _MAP[nMapLayer][i][j].dwHandle	)	continue;	//	PC/NPC啊 秦寸 Cell俊 糧犁 竅瘤 臼綽 版快

				EnterCriticalSection( &m_MapLock );			

					AOI_PlayerFastDelete( pSocketFD->pPlayer);
					
					_MAP[nMapLayer][i][j].dwHandle	=	pSocketFD->pPlayer->m_dwHandle;

					_MAP[nMapLayer][i][j].pObject	=	pSocketFD;
					_MAP[nMapLayer][i][j].nType		=	(BYTE)MAP_PC;		//	PC

				LeaveCriticalSection( &m_MapLock );

				//	--------------------------------------------------------------------
				//	秦寸 AOI藹闌 歷厘 矯糯 
				//	--------------------------------------------------------------------
				pSocketFD->pPlayer->m_Tile.x = i;
				pSocketFD->pPlayer->m_Tile.y = j;

				//	--------------------------------------------------------------------
				//	秦寸 AOI俊 諜 NPC/PC啊 糧犁竅綽 版快 
				//	困摹 焊瀝 累訣籃 Title狼 吝埃俊 困摹 竅促廢 父惦 
				//		-> 拋膠飄 饒 困摹 釬矯啊 撈惑茄 版快 薦瀝 累訣
				//	--------------------------------------------------------------------
				if( nLevel >  0 )			 
				{
					pSocketFD->pPlayer->_PLAYERINFO.wX	=	pSocketFD->pPlayer->m_Tile.x * 100 + 50;
					pSocketFD->pPlayer->_PLAYERINFO.wY	=	pSocketFD->pPlayer->m_Tile.y * 100 + 50;
				}
				else
				{
					//	泅 困摹俊 糧犁 竅綽 版快 
					pSocketFD->pPlayer->_PLAYERINFO.wX	=	pPoint.x;
					pSocketFD->pPlayer->_PLAYERINFO.wY	=	pPoint.y;
				}

				return nLevel;	// LOOP狐廉 唱坷扁 				
				
			}
		}

		nLevel ++;

		// 漂瀝 Level鱉瘤 貿(mào)府 竅瘤 給茄 版快
		if( nLevel > 10 ) return -1;
	}

	return	nLevel;
}



////////////////////////////////////////////////////////////////////////////////////////
//	框流老薦 絕綽瘤 咯何 魄傈
//
//	- 框流 老薦 樂綽瘤 咯何 魄瀝 (Tile 犬牢)
//	- 框流老薦 樂綽 困摹咯何 犬牢 (救傈 瘤開撈 酒囪 版快)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区免费在线播放| 在线不卡a资源高清| 国产精品毛片大码女人| 粉嫩蜜臀av国产精品网站| 国产精品国产馆在线真实露脸| 成人毛片老司机大片| 一区二区三区小说| 欧美一级理论性理论a| 国产一区高清在线| 日韩一区在线播放| 久久久夜色精品亚洲| av毛片久久久久**hd| 午夜影院久久久| 亚洲精品一区二区三区香蕉| 成人网男人的天堂| 亚洲一区二区三区影院| 精品欧美乱码久久久久久| 99综合影院在线| 日韩在线播放一区二区| 国产欧美精品一区二区色综合朱莉| 色综合久久88色综合天天免费| 亚洲成人动漫一区| 欧美激情艳妇裸体舞| 欧美日韩国产小视频在线观看| 九九九精品视频| 亚洲四区在线观看| 91精品中文字幕一区二区三区| 国产成人在线免费观看| 亚洲成在人线在线播放| 久久亚洲欧美国产精品乐播| 日本韩国一区二区三区| 激情成人综合网| 亚洲制服丝袜av| 国产欧美日韩精品在线| 欧美久久久久中文字幕| 成人动漫视频在线| 久久精品国产亚洲a| 亚洲一区在线视频| 国产视频视频一区| 欧美一级二级三级乱码| 91视频91自| 国产成人免费视频一区| 日本少妇一区二区| 曰韩精品一区二区| 国产精品毛片无遮挡高清| 日韩欧美不卡在线观看视频| 色婷婷香蕉在线一区二区| 国产精品一区二区久久不卡| 午夜视频在线观看一区| 亚洲裸体xxx| 国产欧美精品一区二区色综合| 日韩欧美国产精品| 欧美日韩高清不卡| 欧美亚洲自拍偷拍| 91免费观看视频| 成人高清视频在线观看| 国产一区福利在线| 国产真实乱偷精品视频免| 亚洲成av人片在线观看| 亚洲妇女屁股眼交7| 亚洲综合色自拍一区| 亚洲另类在线视频| 中文字幕一区二区三区视频| 欧美激情资源网| 国产亚洲欧洲997久久综合| 欧美电影免费观看高清完整版在| 欧美美女黄视频| 91.麻豆视频| 欧美军同video69gay| 欧美日韩在线播放三区| 在线一区二区视频| 在线观看亚洲精品| 欧美亚洲丝袜传媒另类| 中文乱码免费一区二区| 国产亚洲污的网站| 国产精品美女视频| 国产精品三级av| 成人欧美一区二区三区| 亚洲视频在线一区| 亚洲男人电影天堂| 亚洲国产毛片aaaaa无费看| 一区二区三区在线影院| 亚洲综合另类小说| 午夜精品久久久| 久久精品国产亚洲高清剧情介绍 | ㊣最新国产の精品bt伙计久久| 久久影院视频免费| 国产精品三级电影| 亚洲精品大片www| 午夜精品视频一区| 久久99蜜桃精品| 国产精品自产自拍| 成人美女视频在线观看18| 91美女精品福利| 欧美日韩国产免费一区二区| 日韩一级成人av| 国产亚洲综合在线| 亚洲码国产岛国毛片在线| 亚洲bt欧美bt精品| 国产一区二区精品久久99| 9久草视频在线视频精品| 欧美日韩免费电影| 久久久影院官网| 伊人性伊人情综合网| 日韩成人免费看| 国产精品伊人色| 欧美综合一区二区三区| 日韩亚洲欧美成人一区| 亚洲国产高清aⅴ视频| 一区二区成人在线观看| 国产一区美女在线| 欧洲色大大久久| 国产在线不卡视频| 国产一区二区免费在线| 国产精品99久久久久久似苏梦涵 | 欧美影院一区二区三区| 欧美一区在线视频| 精品国产一区二区三区不卡| 国产色产综合色产在线视频 | 日本成人中文字幕在线视频| 国产一区二区三区在线观看免费| 色综合久久久久综合| 欧美一区二区黄色| 亚洲日本一区二区| 激情综合网av| 欧美亚洲综合另类| 亚洲国产精品99久久久久久久久| 日韩电影一区二区三区| 91麻豆国产自产在线观看| 精品国产网站在线观看| 亚洲影院在线观看| 成人国产一区二区三区精品| 日韩一级二级三级| 亚洲超碰精品一区二区| 99久久99久久久精品齐齐 | 国产日韩欧美a| 免费观看30秒视频久久| 色狠狠色狠狠综合| 国产精品久久一级| 国产精品1区2区| 欧美电视剧在线观看完整版| 亚洲成人免费观看| 色婷婷激情综合| 国产精品视频你懂的| 国产主播一区二区| 日韩精品一区二区三区视频在线观看| 亚洲一区二区三区在线| 色狠狠桃花综合| 亚洲视频一区二区免费在线观看| 国产经典欧美精品| 精品国产乱码久久久久久蜜臀| 日韩精品一二三| 欧美日韩成人在线| 亚洲成人精品一区| 欧美四级电影在线观看| 一区二区欧美精品| 91国产成人在线| 亚洲激情av在线| 色呦呦国产精品| 一区2区3区在线看| 日本道色综合久久| 亚洲一区二区在线免费观看视频| 在线精品视频一区二区| 悠悠色在线精品| 欧美亚洲一区二区在线| 亚洲尤物视频在线| 欧美另类z0zxhd电影| 丝袜国产日韩另类美女| 日韩一区国产二区欧美三区| 麻豆成人久久精品二区三区小说| 日韩欧美一区二区在线视频| 蜜桃视频免费观看一区| 精品久久久影院| 国产精品123区| 中文成人综合网| 99精品国产一区二区三区不卡| 亚洲色图视频免费播放| 欧美性感一类影片在线播放| 亚洲va韩国va欧美va| 欧美一二三区在线| 国产精品一卡二卡| 国产精品婷婷午夜在线观看| 99re这里只有精品首页| 亚洲自拍都市欧美小说| 91精品国产欧美日韩| 国产乱码字幕精品高清av| 国产欧美精品一区二区色综合朱莉| a亚洲天堂av| 午夜精品一区二区三区免费视频| 91麻豆精品国产91久久久久久久久 | 日本一区二区三区国色天香| 99精品欧美一区二区三区综合在线| 一片黄亚洲嫩模| 欧美videofree性高清杂交| 国产精品性做久久久久久| 亚洲视频一区二区免费在线观看| 欧美日韩视频不卡| 狠狠色2019综合网| 亚洲欧洲国产日本综合| 欧美福利一区二区|