www.pudn.com > notWow.rar > NPCMgr.cpp


#include "NPCMgr.h" 
 
#include "ModelMgr.h" 
extern ModelsManager g_MdlMgr; 
extern TexturesManager g_TexMgr; 
 
void NPCsManager::Init() 
{ 
	Free(); 
} 
 
void NPCsManager::Free() 
{ 
	m_NPCs.clear(); 
	m_nNPCs = 0; 
	m_MinPos = 0; 
} 
 
NPCID NPCsManager::AddNPC(const char* ModelName,MODELTYPE Type,ScriptID sid) 
{ 
	Char NPC; 
	NPC.m_ModelID = g_MdlMgr.AddModel(ModelName,Type); 
	NPC.m_ObjectID = 0; 
	NPC.m_ScriptID = sid; 
	ModelID id = m_MinPos; 
	if(id == m_NPCs.size()) 
	{ 
		m_MinPos ++; 
		m_NPCs.push_back(NPC); 
	} 
	else 
	{ 
		m_NPCs[id] = NPC; 
		short i = id + 1; 
		while(i < m_NPCs.size()) 
		{ 
			if(m_NPCs[i].m_ObjectID == -1) 
			{				 
				break; 
			} 
		} 
		m_MinPos = i; 
	} 
	m_nNPCs ++; 
	return id; 
} 
 
void NPCsManager::Delete(NPCID id) 
{ 
	if(id < 0 || id >= m_NPCs.size()) 
		return ; 
	if(m_NPCs[id].m_ObjectID == -1) 
		return ; 
	 
	g_TexMgr.Delete(m_NPCs[id].m_TexturesID[0]); 
	g_TexMgr.Delete(m_NPCs[id].m_TexturesID[1]); 
	g_TexMgr.Delete(m_NPCs[id].m_TexturesID[2]); 
	g_TexMgr.Delete(m_NPCs[id].m_TexturesID[3]); 
	g_TexMgr.Delete(m_NPCs[id].m_TexturesID[4]); 
	g_TexMgr.Delete(m_NPCs[id].m_TexturesID[5]); 
	g_MdlMgr.Delete(m_NPCs[id].m_ModelID); 
	m_NPCs[id].m_ObjectID = -1; 
 
	if(id < m_MinPos) 
		m_MinPos = id; 
	m_nNPCs --; 
}