www.pudn.com > back.rar > block.cpp


//_________________________________________________________________________________ 
// 
//	Block.cpp 
// 
//	 
// 
// 
// 
// 
// 
//_________________________________________________________________________________ 
// 
#include "Base.H" 
 
#include "Block.H" 
#include "Xblock_Table.h" 
 
#include "item.h" 
 
CBlock:: 
CBlock() 
{ 
 
} 
 
CBlock:: 
~CBlock() 
{ 
} 
 
 
//_________________________________________________________________________________ 
// 
// ŸÀÏÀÇ ±âº» À§Ä¡°ª ¼¼ÆÃÇÔ¼ö 
// pos, ±× pos¿¡ µû¸¥ xblock°ª ¹× cell°ª ¼¼ÆÃ 
//_________________________________________________________________________________ 
// 
void 
CBlock:: 
Block_Init( DWORD tile_no, int map_size ) 
{ 
	 
	m_tile.m_pos = tile_no; 
	int xxx = (tile_no % Line[map_size]) / Range; 
	int yyy = (tile_no / Line[map_size]) / Range; 
 
	m_tile.m_xblock = yyy * XBlock_Line[map_size] + xxx; 
 
	int x = (tile_no % Line[map_size]) % Range;		// cell³»ÀÇ x °ª 0-63 
	int y = (tile_no / Line[map_size]) % Range;		// cell³»ÀÇ y °ª 0-63 
	if( x >= 31 && x < 64 )		// 64º¸´Ù Å« °ªÀº ³ª¿Ã¼ö ¾ø¾û 
	{ 
		if( y >= 0 && y <= 31 ) 
		{ 
			m_tile.m_cell = 1; 
		} 
 
		else m_tile.m_cell = 3; 
	} 
 
	else 
	{ 
		if( y >= 0 && y <= 31 ) 
		{ 
			m_tile.m_cell = 0; 
		} 
 
		else m_tile.m_cell = 2; 
	} 
 
	for( int i = 0; i < 3; i++ ) 
	{ 
		m_user_unique[i] = -1; 
		m_NPC_index[i] = -1; 
	} 
} 
 
 
 
 
//_________________________________________________________________________________ 
// 
// ÇØ´ç ºí·°À¸·Î À̵¿ÇÒ¼ö ÀÖ³ª? 
// 
// true : yes                false : no 
//_________________________________________________________________________________ 
// 
bool  
CBlock:: 
Can_Move( int floor ) 
{ 
	if( m_tile.m_is_blocked[floor] || m_tile.m_someone_is_in[floor] ) 
		return false; 
 
	// ok..can move 
	return true; 
} 
 
 
 
//_________________________________________________________________________________ 
//	 
//	Set_Block() 
//_________________________________________________________________________________ 
// 
void CBlock::Set_Block( block bl, int floor ) 
{ 
	m_tile.m_item_stack[floor] = bl.m_item_stack; 
 
	m_tile.m_is_blocked[floor] = bl.m_is_blocked;	 
	m_tile.m_someone_is_in[floor] = bl.m_someone_is_in;	 
	m_tile.m_avail_PK[floor] = bl.m_avail_PK; 
	m_tile.m_is_linked[floor] = bl.m_is_linked; 
 
//newwarp 20060501 
	if( bl.m_Warp.m_Map_ID != -1 ) 
	{ 
		int WarpInfo = 0; 
		for( WarpInfo = 0 ; WarpInfo < MAX_WARPINFO ; ++WarpInfo ) 
		{ 
			if( g_WarpZoneInfo[WarpInfo].m_Map_ID == -1 && g_WarpZoneInfo[WarpInfo].m_My_ID == -1 && g_WarpZoneInfo[WarpInfo].m_Map_Warp == -1 ) 
			{ 
				m_tile.m_dwWorparray  = WarpInfo; 
				memcpy( &g_WarpZoneInfo[WarpInfo] , &bl.m_Warp , sizeof(Warp_Info)); 
				break; 
			}			 
		} 
		if( WarpInfo == MAX_WARPINFO ) 
		{ 
			MessageBox(NULL,"Increase MAX_WARPINFO define number : 1024 g_WarpZoneInfo Overflow","ERROR",MB_OK); 
			//¸ÊÁ¤º¸ ¹è¿­ ºÎÁ· MAX_WARPINFO ¸¦ ´Ã·Á¶ó 
		} 
	} 
 
	//m_tile.m_Warp = bl.m_Warp; 
} 
 
//newwarp 20060501 
int		CBlock::Return_Warp_My_ID() const  
{  
	if( m_tile.m_dwWorparray == -1 ) return 0; 
	return g_WarpZoneInfo[m_tile.m_dwWorparray].m_My_ID;  
}				// ¿öÇÁ °ü·Ã 
//newwarp 20060501 
int		CBlock::Return_Warp_To_Map() const  
{ 
	if( m_tile.m_dwWorparray == -1 ) return 0; 
	return g_WarpZoneInfo[m_tile.m_dwWorparray].m_Map_ID;  
 
}			// ¿öÇÁ °ü·Ã 
//newwarp 20060501 
int		CBlock::Return_Warp_To_WarpIndex() const  
{ 
	if( m_tile.m_dwWorparray == -1 ) return 0; 
	return g_WarpZoneInfo[m_tile.m_dwWorparray].m_Map_Warp; 
}	// ¿öÇÁ °ü·Ã 
 
 
 
 
//_________________________________________________________________________________ 
//	 
//	end of Block.cpp 
//_________________________________________________________________________________ 
//