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 --;
}