📄 objectgroup.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 + -