⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objectgroup.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 CPP
字号:
#include "StdAfx.h"
#include "GroupParser.h"
#include "ObjectGroup.h"


ObjectGroup::ObjectGroup()
{
	m_dw64GroupKey			= 0;
	m_dwLeaderObjKey		= 0;
	m_dwNumberOfObjects		= 0;
}

ObjectGroup::~ObjectGroup()
{
}

VOID ObjectGroup::Init( BASE_GROUPINFO* pGroupInfo, DWORD64 dw64GroupKey )
{
	m_pBaseGroupInfo = pGroupInfo;
	m_dw64GroupKey = dw64GroupKey;

	m_dwLeaderObjKey = 0;
	m_dwNumberOfObjects		= 0;
}

BOOL ObjectGroup::AddObject( eOBJECT_TYPE eObjectType, Object* pObject, DWORD dwObjectCode )
{
	// 弊缝俊 家加登绰 磊拜夸扒阑 八荤茄促.
	if( ( eObjectType & NPC_OBJECT ) == NPC_OBJECT )
	{
		if( !IsNPCQualified( dwObjectCode ) )
		{
			return FALSE;
		}
	}

	// 府胶飘俊 眠啊
	BOOL bSuccess = Add( pObject );

	// Leader牢瘤 眉农
	if( m_pBaseGroupInfo->dwLeaderCode == dwObjectCode )
	{
		m_dwLeaderObjKey = pObject->GetObjectKey();
	}

	// Count甫 蜡瘤窍扁 困茄 甘俊 眠啊
	OBJECT_COUNT_MAP_ITER it = m_mapObjectCount.find( dwObjectCode );
	if ( it != m_mapObjectCount.end() )
	{
		++(it->second);
	}
	else
	{
		m_mapObjectCount.insert( OBJECT_COUNT_MAP_PAIR(dwObjectCode, 1) );
	}

	++m_dwNumberOfObjects;

	return bSuccess;
}

BOOL ObjectGroup::RemoveObject( const DWORD dwObjKey, DWORD dwObjectCode )
{
	// 府歹扼搁 府歹虐 檬扁拳
	if( m_dwLeaderObjKey == dwObjKey )
	{
		m_dwLeaderObjKey = 0;
	}

	// 府胶飘俊辑 昏力
	Object *pObject = Remove( dwObjKey );

	// Count 皑家
	OBJECT_COUNT_MAP_ITER it = m_mapObjectCount.find( dwObjectCode );

	if( it != m_mapObjectCount.end() )
	{
		--(it->second);
	}

	--m_dwNumberOfObjects;

	if( pObject )
		return TRUE;
	else
		return FALSE;
}

BOOL ObjectGroup::IsNPCQualified( DWORD dwObjectCode )
{
	// BaseGroupInfo俊 秦寸窍绰 NPC捞绊, 泅犁 箭磊啊 Max 蔼阑 逞瘤 臼阑 版快俊父 眠啊茄促.
	OBJECT_COUNT_MAP_ITER it;
	for( int i = 0; i < MAX_FOLLOWER_NUM; ++i )
	{
		// Leader牢瘤 眉农
		if( m_pBaseGroupInfo->dwLeaderCode == dwObjectCode )
		{
			if( m_dwLeaderObjKey )
				return FALSE;
			else
				return TRUE;
		}

		// BaseGroupInfo俊 秦寸窍绰 NPC牢瘤 眉农茄促.
		if( m_pBaseGroupInfo->FollowerInfo[i].dwMonCode != dwObjectCode )
			continue;

		it = m_mapObjectCount.find( dwObjectCode );

		// Max 蔼阑 檬苞窍瘤 臼绰瘤 眉农茄促.
		if( it != m_mapObjectCount.end() )
		{
			if( it->second < m_pBaseGroupInfo->FollowerInfo[i].wNum )
				return TRUE;
			else
				return FALSE;
		}
		else
		{
			// 贸澜栏肺 眠啊茄促.
			return TRUE;
		}
	}

	return FALSE;
}













⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -