Example #1
0
//updates a group member's client pointer when they zone in
//if the group was in the zone allready
bool Group::UpdatePlayer(Mob* update){

	VerifyGroup();

	uint32 i=0;
	if(update->IsClient()) {
		//update their player profile
		PlayerProfile_Struct &pp = update->CastToClient()->GetPP();
		for (i = 0; i < MAX_GROUP_MEMBERS; i++) {
			if(membername[i][0] == '\0')
				memset(pp.groupMembers[i], 0, 64);
			else
				strn0cpy(pp.groupMembers[i], membername[i], 64);
		}
	}

	for (i = 0; i < MAX_GROUP_MEMBERS; i++)
	{
		if (!strcasecmp(membername[i],update->GetName()))
		{
			members[i] = update;
			members[i]->SetGrouped(true);
			return true;
		}
	}
	return false;
}
Example #2
0
LPCFGELEMENTINFO CCfgFile::FindElement( HGROUP hGroup, LPCTSTR pName )
{_STTEX();
	// Find the NULL group
	if ( hGroup == NULL )
	{	hGroup = VerifyGroup( NULL );
		if ( hGroup == NULL ) return FALSE;
	} // end if

	LPCFGELEMENTINFO	pcei = NULL;
	while ( ( pcei = GetNextElement( hGroup, pcei ) ) != NULL )
		if ( !strcmpi( pName, pcei->name ) )
			return pcei;

	return NULL;
}
Example #3
0
BOOL CCfgFile::RemoveGroup(HGROUP node)
{_STTEX();
	// Find the NULL group
	if ( node == NULL )
	{	node = VerifyGroup( NULL );
		if ( node == NULL ) return FALSE;
	} // end if

	// Remove this node from the list
	if ( node->pPrev != NULL ) node->pPrev->pNext = node->pNext;
	if ( node->pNext != NULL ) node->pNext->pPrev = node->pPrev;
	if ( m_pHead == node ) m_pHead = node->pNext;			
	if ( m_pTail == node ) m_pTail = node->pPrev;		
	
	// Delete this node
	DeleteElements( node );
	delete node;

	// Decrement the count
	if ( m_dwSize ) m_dwSize--;

	return TRUE;
}
Example #4
0
BOOL CCfgFile::RemoveElement( HGROUP hGroup, LPCFGELEMENTINFO node)
{_STTEX();
	// Find the NULL group
	if ( hGroup == NULL )
	{	hGroup = VerifyGroup( NULL );
		if ( hGroup == NULL ) return FALSE;
	} // end if

	if ( node == NULL ) return FALSE;

	// Remove this node from the list
	if ( node->pPrev != NULL ) node->pPrev->pNext = node->pNext;
	if ( node->pNext != NULL ) node->pNext->pPrev = node->pPrev;
	if ( hGroup->head == node ) hGroup->head = node->pNext;			
	if ( hGroup->tail == node ) hGroup->tail = node->pPrev;		
	
	// Delete this node
	delete node;

	// Decrement the count
	if ( m_dwSize ) m_dwSize--;

	return TRUE;
}
Example #5
0
BOOL CCfgFile::AddElement( HGROUP hGroup, LPCTSTR name, DWORD type, DWORD size, LPVOID value )
{_STTEX();
	BOOL	bNew = FALSE;
	LPCFGELEMENTINFO node = FindElement( hGroup, name );

	// Find the NULL group
	if ( hGroup == NULL )
	{	hGroup = VerifyGroup( NULL );
		if ( hGroup == NULL ) hGroup = AddGroup( NULL );
		if ( hGroup == NULL ) return FALSE;
	} // end if

	// Does it already exist
	if ( node == NULL ) 
	{	bNew = TRUE;
		node = new CFGELEMENTINFO;
		if ( node == NULL ) return FALSE;
	} // end if

	// Lose previous memory
	else if ( node->size != 0 && node->value != NULL ) 
		delete[] node->value;

	// Save element name
	if ( name != NULL ) { strcpy_sz( node->name, name ); }
	else *node->name = NULL;

	// Save type and size information
	node->type = type;
	node->size = size;

	// Just store value if size is zero
	if ( size == 0 ) node->value = value;

	// Allocate memory if needed
	else
	{
		// Allocate memory for user information
		node->value = new BYTE[ size + 1 ];

		// Punt if no memory
		if ( node->value == NULL ) { delete node; return FALSE; }

		// Copy user data
		if ( value != NULL ) memcpy( node->value, value, size );
		else { ZeroMemory( node->value, size ); }

		// NULL terminate data
		( (LPBYTE)node->value )[ size ] = 0;

	} // end else

	// Don't add if not new
	if ( !bNew ) return TRUE;

	// Add this node to the list
	node->pNext = NULL;
	node->pPrev = hGroup->tail;
	if ( hGroup->tail == NULL ) hGroup->head = node;
	else hGroup->tail->pNext = node;
	hGroup->tail = node;
	hGroup->size++;	

	return TRUE;
}
bool Group::BelongsToGroup(const std::wstring& group) const
{
	return (m_Groups.find(VerifyGroup(group)) != m_Groups.end());
}