Ejemplo n.º 1
0
BOOL CGridSystem::GetGridChangeTime(CObject* pObject,VECTOR3* pStartPos,VECTOR3* pTargetPos,float MoveSpeed,DWORD& dwChangeTime)
{
	CGridTable * pGridTable = GetGridTable(pObject);
	if(pGridTable == NULL)
		return FALSE;
	return pGridTable->GetGridChangeTime(pStartPos,pTargetPos,MoveSpeed,dwChangeTime);
}
Ejemplo n.º 2
0
void CGridSystem::AddObject(CObject* pObject,VECTOR3* pPos)
{
	CGridTable* const pGridTable = GetGridTable(pObject);

	if(0 == pGridTable)
		return;

	pGridTable->AddObject(pObject, pPos);

	// 091026 LUJ, 버퍼 크기에 무관하게 전송할 수 있도록 수정
	MSGBASE* message = 0;
	const DWORD messageLength = pObject->SetAddMsg(
		0,
		TRUE,
		message);
	PACKEDDATA_OBJ->QuickSendExceptObjectSelf(
		pObject,
		message,
		messageLength);
	pGridTable->SendCurrentObjectInfo(
			pObject->GridPos.x,
			pObject->GridPos.z,
			-1,
			-1,
			pObject);
	pObject->SetInitedGrid();
}
Ejemplo n.º 3
0
void CGridSystem::RemoveObject(CObject* pObject)
{
	if(pObject->m_bGridInited == FALSE)
		return;
	
	CGridTable* const pGridTable = GetGridTable(pObject);

	if(0 == pGridTable)
		return;

	MSGBASE* message = 0;
	const DWORD messageLength = pObject->SetRemoveMsg(
		0,
		message);
	PACKEDDATA_OBJ->QuickSendExceptObjectSelf(
		pObject,
		message,
		messageLength);
	pGridTable->RemoveObject(pObject);
	pObject->GridPos.x = WORD( -1 );
	pObject->GridPos.z = WORD( -1 );
	pObject->GridPos.LastX = WORD( -1 );
	pObject->GridPos.LastZ = WORD( -1 );

	pObject->m_bGridInited = FALSE;
}
Ejemplo n.º 4
0
//////////////////////////////////////////////////////////////////////////
/// 06. 08. 2차 보스 - 이영준
/// 유효그리드내 랜덤으로 타겟 설정
CObject* CGridSystem::FindPlayerRandom(CObject* pObject)
{
	CGridTable * pGridTable = GetGridTable(pObject);
	if(pGridTable == NULL)
		return FALSE;

	return pGridTable->FindPlayerRandom(pObject);
}	
Ejemplo n.º 5
0
void CGridSystem::AddGridToPackedData(GridPosition* pGridPosition,CPackedData* pPackedData, CObject* pObject)
{
	CGridTable * pGridTable = GetGridTable(pObject);
	if(pGridTable == NULL)
		return;
	pGridTable->AddGridToPackedData(pGridPosition, pPackedData);
//	m_pGridTable[Level].AddGridToPackedData(GridNumX,GridNumZ,pPackedData);
}
Ejemplo n.º 6
0
void CGridSystem::AddLastGridToPackedDataExceptCurrentGrid(GridPosition* pGridPosition,DWORD ExceptID,CPackedData* pPackedData, CObject* pObject)
{
	CGridTable * pGridTable = GetGridTable(pObject);
	if(pGridTable == NULL)
		return;
	pGridTable->AddLastGridToPackedDataExceptCurrentGrid(pGridPosition,ExceptID,pPackedData);

//	m_pGridTable[Level].AddLastGridToPackedDataExceptCurrentGrid(pGridPosition,ExceptID,pPackedData);
}
Ejemplo n.º 7
0
void CGridSystem::ChangeGrid(CObject* pObject,VECTOR3* pPos)
{	
	if(pObject->GetInited() ==FALSE)
		return;
	if(pObject->GetInitedGrid() == FALSE)
		return;

	CGridTable* pGridTable = GetGridTable(pObject);
	if(pGridTable == NULL)
		return;

	pGridTable->ChangeGrid(pObject, pPos);
}
Ejemplo n.º 8
0
CObject* CGridSystem::FindMonsterInRange(VECTOR3* pPos,float Range, CObject* pObject,BYTE flag)
{
	int firstx = TransToGridCoordinate(pPos->x);
	int firstz = TransToGridCoordinate(pPos->z);

	GridPosition GridPos;
	GridPos.x = WORD( firstx >> GRID_BIT );
	GridPos.z = WORD( firstz >> GRID_BIT );
	CGridTable * pGridTable = GetGridTable(pObject);
	if(pGridTable == NULL)
		return NULL;

	return pGridTable->FindMonsterInRange(pObject,&GridPos, pPos, Range, flag);
}
Ejemplo n.º 9
0
WORD CGridSystem::FindMonsterGroupInRange(DWORD* pFriendsList, VECTOR3* pPos, CObject* pObject)
{
	CGridTable * pGridTable = GetGridTable(pObject);
	if(pGridTable == NULL)
		return 0;

	int firstx = TransToGridCoordinate(pPos->x);
	int firstz = TransToGridCoordinate(pPos->z);

	GridPosition GridPos;
	GridPos.x = WORD( firstx >> GRID_BIT );
	GridPos.z = WORD( firstz >> GRID_BIT );

	return pGridTable->FindMonsterGroupInRange(pFriendsList, pObject,&GridPos, pPos);
}
Ejemplo n.º 10
0
// ======================================================================================================
// Grid reading  ========================================================================================
// ======================================================================================================
char * BlockGridReading(char * pchar, void * context)
{
	char * p_end, * pnext, 
		  * p_eof = pchar+strlen(pchar);

//////////////////////////////////////
//...зачитываем параметры сетки узлов;
	if ( pchar < p_eof) pchar += strlen(TABLESTR);
	if ((p_end = strstr(pchar, TABLESTR)) != NULL || (p_end = p_eof) != NULL) {

////////////////////////////////////////////////////
//...зачитываем число строчек в таблице сетки узлов;
		int  N_group = 0, lenStrSeparator = (int)strlen(STRSEPARATOR);
		if ( ((pnext = strstr(pchar, STRSEPARATOR)) != NULL && (pnext += lenStrSeparator) <= p_end || (pnext = p_end) != NULL) &&
			(sscanf(pchar, "%i", &N_group) == 1 || pnext == p_end)) {
			pchar = pnext;

/////////////////////////////////////////
//...порождаем новую таблицу сетки узлов;
			Table * table = GetGridTable(N_group);
			if (table) {
				SetTable (context, table);
				SetTableIndex(context, 1);

///////////////////////////////////////
//...заполняем таблицу данными с диска;
				int i = 0;
				while (++i <= table->N_group && 
						((pnext = strstr(pchar, STRSEPARATOR)) != NULL && (pnext += lenStrSeparator) <= p_end || (pnext = p_end) != NULL)) {
						SetTableParamsAsString(table, i, pchar, pnext);
						pchar = pnext;
				}
				// pchar -- имя профиля (занести в таблицу ???);
			}
		}
	}
	return(p_end);
}