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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? map.cpp

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

#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藹 秦力竅綽 版快 坷幅 貿府 
	//	--------------------------------------------------------------------------------


	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)貿府 風憑闌 眠啊 矯糯	  
//	PC/NCP Handle貿府俊 包茄 絆刮 
////////////////////////////////////////////////////////////////////////////////////////
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;

	//	--------------------------------------------------------------------------------
	//	撈悼且 困摹甫 崔曝撈 葛膽肺 秦寸 困摹俊 瀝焊甫 扁廢 矯糯	
	//	--------------------------------------------------------------------------------
	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鱉瘤 貿府 竅瘤 給茄 版快
		if( nLevel > 10 ) return -1;
	}

	return	nLevel;
}



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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美国产高清| 久久99精品国产.久久久久久| 亚洲一区二区综合| 国产一二三精品| 91精品欧美综合在线观看最新| 国产精品午夜电影| 另类人妖一区二区av| 色妹子一区二区| 亚洲欧洲日本在线| 韩国毛片一区二区三区| 在线播放视频一区| 亚洲日本在线天堂| 成人一区二区三区中文字幕| 欧美一区在线视频| 亚洲高清免费观看 | 国产乱对白刺激视频不卡| 91久久免费观看| 国产精品成人在线观看| 国产精品888| 久久久久99精品国产片| 久久av资源网| 欧美白人最猛性xxxxx69交| 午夜婷婷国产麻豆精品| 在线日韩av片| 亚洲男人的天堂网| 99精品国产视频| 国产精品久久久久久久午夜片| 国产成人午夜精品影院观看视频 | 国产乱码精品一区二区三| 日韩视频免费观看高清在线视频| 亚洲国产日韩a在线播放性色| 91麻豆自制传媒国产之光| 国产精品二三区| 一本色道久久综合亚洲aⅴ蜜桃 | 国产精品久久久久桃色tv| 成人一级黄色片| 欧美精彩视频一区二区三区| 成人免费视频视频在线观看免费| 国产精品久久久久久久久久免费看 | 亚洲国产精品天堂| 欧美性猛交xxxx黑人交| 亚洲图片欧美色图| 制服丝袜成人动漫| 久久99国产精品久久99| 久久久噜噜噜久久中文字幕色伊伊| 国产麻豆精品95视频| 国产午夜一区二区三区| 成人av综合在线| 伊人性伊人情综合网| 欧美日韩视频第一区| 美女诱惑一区二区| 国产亚洲成aⅴ人片在线观看| 成人在线一区二区三区| 亚洲男人天堂av网| 欧美丰满高潮xxxx喷水动漫| 国产在线视视频有精品| 中文字幕一区二区三中文字幕| 色呦呦日韩精品| 日韩av午夜在线观看| 久久日韩精品一区二区五区| 成人av电影在线观看| 亚洲电影激情视频网站| 久久久久成人黄色影片| 色婷婷国产精品| 老司机精品视频在线| 国产精品免费久久| 欧美裸体bbwbbwbbw| 国产一级精品在线| 亚洲国产精品自拍| 久久综合九色综合久久久精品综合 | 51精品秘密在线观看| 韩国成人在线视频| 亚洲色图视频免费播放| 日韩一区二区三区电影在线观看 | 亚洲第一精品在线| 欧美激情在线免费观看| 666欧美在线视频| 99免费精品在线| 狠狠色狠狠色综合系列| 亚洲另类一区二区| 精品99999| 欧美日韩精品一区二区| 国产成人精品影院| 美女国产一区二区| 一区二区三区影院| 欧美激情在线观看视频免费| 欧美一级搡bbbb搡bbbb| 色呦呦日韩精品| 成人精品视频一区二区三区| 久久精品国产第一区二区三区| 亚洲一区在线观看视频| 亚洲国产精品av| 欧美mv日韩mv国产网站app| 欧美日韩一级视频| 91美女片黄在线| 成人三级在线视频| 国产精品一二三四五| 精品一区二区免费在线观看| 香蕉影视欧美成人| 亚洲在线观看免费| 一区二区三区国产豹纹内裤在线| 久久中文字幕电影| 欧美xxx久久| 日韩一区二区三区视频在线| 欧美日本在线一区| 在线观看欧美黄色| 在线视频欧美区| 色婷婷综合激情| 色久综合一二码| 91蝌蚪国产九色| 91在线精品一区二区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 99国产麻豆精品| 粉嫩高潮美女一区二区三区| 国产一区二区在线影院| 激情综合色丁香一区二区| 美女在线观看视频一区二区| 蜜臀91精品一区二区三区| 日本女人一区二区三区| 日本不卡一区二区| 九色综合狠狠综合久久| 另类欧美日韩国产在线| 韩国精品久久久| 国v精品久久久网| caoporm超碰国产精品| 色综合天天性综合| 91久久精品一区二区三| 欧美性淫爽ww久久久久无| 欧美揉bbbbb揉bbbbb| 7777精品伊人久久久大香线蕉超级流畅 | 久久中文字幕电影| 国产欧美日韩在线看| 国产精品美女久久久久av爽李琼| 国产精品毛片久久久久久久| 成人免费在线播放视频| 亚洲综合在线电影| 日本三级亚洲精品| 国产东北露脸精品视频| 91在线一区二区三区| 欧美日韩另类一区| 精品国产自在久精品国产| 中文字幕精品在线不卡| 亚洲一区欧美一区| 狠狠色丁香婷综合久久| 91啪在线观看| 日韩欧美一区二区在线视频| 久久久亚洲欧洲日产国码αv| 中文字幕一区二区三区在线不卡| 午夜视频在线观看一区| 国产成人免费视频网站高清观看视频| 91麻豆国产自产在线观看| 欧美一级午夜免费电影| 国产精品嫩草影院av蜜臀| 亚洲国产中文字幕在线视频综合| 精品一区二区日韩| 欧美在线你懂得| 国产午夜精品一区二区三区视频 | 久久先锋影音av| 亚洲精品videosex极品| 麻豆精品一区二区av白丝在线| 国产成人精品免费在线| 欧美精品在欧美一区二区少妇| 日本一区二区三区国色天香 | 日韩欧美激情一区| 亚洲美女免费在线| 国产精品乡下勾搭老头1| 欧美性受xxxx黑人xyx| 国产日产欧美一区| 日韩av一级片| 91黄视频在线| 国产精品嫩草99a| 麻豆免费精品视频| 在线视频综合导航| 国产精品天天摸av网| 久久99在线观看| 制服丝袜日韩国产| 亚洲一区二区三区影院| 色综合天天综合网天天看片| 国产日韩欧美激情| 美女爽到高潮91| 欧美日韩三级一区| 亚洲国产成人av好男人在线观看| 成人在线视频首页| 久久精品日韩一区二区三区| 日韩精品一级二级 | 日韩成人一区二区三区在线观看| 91首页免费视频| 国产欧美日韩精品a在线观看| 欧美aaaaa成人免费观看视频| 色婷婷综合久久久中文一区二区 | 成人免费毛片app| 久久久不卡影院| 久久99久久精品| 日韩三级高清在线| 亚洲另类色综合网站| 欧美性大战久久久久久久蜜臀| 亚洲激情在线激情| zzijzzij亚洲日本少妇熟睡| 欧美国产综合一区二区| 国产sm精品调教视频网站|