📄 gamedataset.cpp
字号:
}
else
{
g_dwNmLoad ++;
// set status
pNewDAni->SetStatus(ANISTATUS_INIT);
// keep in deque
m_mapDataAni[pNewDAni->m_idAni] = pNewDAni;
// add to read list
::AddReadDeque(pNewDAni, nExigence);
return NULL;
}
}
//--------------------------------------------------------------
void CGameDataSet::ProcessDataAni ()
{
MAP_DYNAMICANI::iterator iter = m_mapDataAni.begin();
while(iter != m_mapDataAni.end())
{
CDynamicAni* pAni = iter->second;
if(pAni && ::TimeGet() - pAni->GetTimeBorn() >= pAni->GetLife() &&
(ANISTATUS_LOADED == pAni->GetStatus() || ANISTATUS_FAILED == pAni->GetStatus()))
{
SAFE_DELETE(pAni);
MAP_DYNAMICANI::iterator iterCopy = iter;
iterCopy ++;
m_mapDataAni.erase(iter);
iter = iterCopy;
}
else
{
iter ++;
}
}
}
//--------------------------------------------------------------
void CGameDataSet::Destroy3DObj()
{
MAP_3DOBJEX::iterator iter = m_set3DObj.begin();
while(iter != m_set3DObj.end())
{
if(iter->second)
{
SAFE_DELETE(iter->second->p3DObj);
SAFE_DELETE(iter->second->pDefaultMotion);
SAFE_DELETE(iter->second);
}
iter ++;
}
m_set3DObj.clear();
}
//--------------------------------------------------------------
void CGameDataSet::Destroy3DMotion()
{
MAP_3DMOTIONEX::iterator iter = m_set3DMotion.begin();
while(iter != m_set3DMotion.end())
{
if(iter->second)
{
SAFE_DELETE(iter->second->p3DMotion);
SAFE_DELETE(iter->second);
}
iter ++;
}
m_set3DMotion.clear();
}
//--------------------------------------------------------------
void CGameDataSet::Destroy3DWeaponMotion()
{
MAP_3DMOTIONEX::iterator iter = m_set3DWeaponMotion.begin();
while(iter != m_set3DWeaponMotion.end())
{
if(iter->second)
{
SAFE_DELETE(iter->second->p3DMotion);
SAFE_DELETE(iter->second);
}
iter ++;
}
m_set3DWeaponMotion.clear();
}
//--------------------------------------------------------------
void CGameDataSet::Destroy3DMantleMotion()
{
MAP_3DMOTIONEX::iterator iter = m_set3DMantleMotion.begin();
while(iter != m_set3DMantleMotion.end())
{
if(iter->second)
{
SAFE_DELETE(iter->second->p3DMotion);
SAFE_DELETE(iter->second);
}
iter ++;
}
m_set3DMantleMotion.clear();
}
//--------------------------------------------------------------
void CGameDataSet::Destroy3DMountMotion()
{
MAP_3DMOTIONEX::iterator iter = m_set3DMountMotion.begin();
while(iter != m_set3DMountMotion.end())
{
if(iter->second)
{
SAFE_DELETE(iter->second->p3DMotion);
SAFE_DELETE(iter->second);
}
iter ++;
}
m_set3DMountMotion.clear();
}
//--------------------------------------------------------------
void CGameDataSet::Destroy3DTexture()
{
MAP_3DTEXTUREEX::iterator iter = m_set3DTexture.begin();
while(iter != m_set3DTexture.end())
{
if(iter->second)
{
SAFE_DELETE(iter->second->p3DTexture);
SAFE_DELETE(iter->second);
}
iter ++;
}
m_set3DTexture.clear();
}
//--------------------------------------------------------------
void CGameDataSet::Destroy3DEffect()
{
MAP_3DEFFECTEX::iterator iter = m_set3DEffect.begin();
while(iter != m_set3DEffect.end())
{
if(iter->second)
{
SAFE_DELETE(iter->second->p3DEffect);
SAFE_DELETE(iter->second);
}
iter ++;
}
m_set3DEffect.clear();
int nAmount = m_set3DEffect.size();
}
//--------------------------------------------------------------
void CGameDataSet::DestroyDataAni()
{
MAP_DYNAMICANI::iterator iter = m_mapDataAni.begin();
while(iter != m_mapDataAni.end())
{
if(iter->second)
SAFE_DELETE(iter->second);
iter ++;
}
m_mapDataAni.clear();
}
DWORD g_dwMeshTime = 0;
DWORD g_dwMeshLoad = 0;
//--------------------------------------------------------------
C3DObj* CGameDataSet::Get3DObj (OBJID id)
{
MYASSERT (id != ID_NONE);
// search first
MAP_3DOBJEX::iterator iterF = m_set3DObj.find(id);
if(iterF != m_set3DObj.end())
{
C3DObjInfo* pInfo = iterF->second;
if(pInfo)
{
pInfo->timeBirth = ::TimeGet();
return pInfo->p3DObj;
}
}
// create new obj
map<OBJID, string>::iterator iter = m_mapResMesh.find(id);
if (iter == m_mapResMesh.end())
{
const OBJID id3DObjError = 500006;
::ErrorOut(g_objGameDataSet.GetStr(id3DObjError), id);
return NULL;
}
char szFileName[_MAX_PATH] = "";
strcpy(szFileName, iter->second.c_str());
DWORD time0 = ::TimeGet();
C3DObj* p3DObj = new C3DObj;
MYASSERT (p3DObj);
if (!p3DObj->Create(szFileName))
{
SAFE_DELETE(p3DObj);
const OBJID idMeshError = 500007;
::ErrorOut(g_objGameDataSet.GetStr(idMeshError), szFileName);
return NULL;
}
g_dwMeshTime += (::TimeGet()-time0);
g_dwMeshLoad++;
C3DMotion* p3DMotion = this->CreateNew3DMotion(szFileName);
if (!p3DMotion)
{
SAFE_DELETE(p3DObj);
const OBJID idMotionError = 500008;
::ErrorOut(g_objGameDataSet.GetStr(idMotionError), szFileName);
return NULL;
}
// set default motion
p3DObj->SetMotion(p3DMotion);
// 3d obj info
C3DObjInfo* pInfo = new C3DObjInfo;
MYASSERT (pInfo);
pInfo->id = id;
pInfo->p3DObj = p3DObj;
pInfo->pDefaultMotion = p3DMotion;
pInfo->timeBirth = ::TimeGet();
// add to set
m_set3DObj[pInfo->id] = pInfo;
return p3DObj;
}
//--------------------------------------------------------------
C3DObjInfo* CGameDataSet::Get3DObjInfo (OBJID id)
{
MYASSERT (id != ID_NONE);
MAP_3DOBJEX::iterator iter = m_set3DObj.find(id);
if(iter != m_set3DObj.end())
{
C3DObjInfo* pInfo = iter->second;
if(pInfo)
{
pInfo->timeBirth = ::TimeGet();
return pInfo;
}
}
return NULL;
}
//--------------------------------------------------------------
C3DMotion* CGameDataSet::Get3DMantleMotion (OBJID id)
{
if (id == ID_NONE)
return NULL;
MAP_3DMOTIONEX::iterator iter = m_set3DMantleMotion.find(id);
if(m_set3DMantleMotion.end() != iter)
{
C3DMotionInfo* pInfo = iter->second;
if(pInfo)
{
pInfo->timeBirth = ::TimeGet();
return pInfo->p3DMotion;
}
}
// create new
C3DMotion* p3DObj = this->CreateNew3DMantleMotion(id);
if (!p3DObj)
return NULL;
// create motion info
C3DMotionInfo* pInfo = new C3DMotionInfo;
if (!pInfo)
{
SAFE_DELETE(p3DObj);
return NULL;
}
pInfo->id = id;
pInfo->p3DMotion = p3DObj;
pInfo->timeBirth = ::TimeGet();
// add to set
m_set3DMantleMotion[pInfo->id] = pInfo;
return p3DObj;
}
//--------------------------------------------------------------
C3DMotion* CGameDataSet::Get3DMountMotion (OBJID id)
{
if (id == ID_NONE)
return NULL;
MAP_3DMOTIONEX::iterator iter = m_set3DMountMotion.find(id);
if(m_set3DMountMotion.end() != iter)
{
C3DMotionInfo* pInfo = iter->second;
if(pInfo)
{
pInfo->timeBirth = ::TimeGet();
return pInfo->p3DMotion;
}
}
// create new
C3DMotion* p3DObj = this->CreateNew3DMountMotion(id);
if (!p3DObj)
return NULL;
// create motion info
C3DMotionInfo* pInfo = new C3DMotionInfo;
if (!pInfo)
{
SAFE_DELETE(p3DObj);
return NULL;
}
pInfo->id = id;
pInfo->p3DMotion = p3DObj;
pInfo->timeBirth = ::TimeGet();
// add to set
m_set3DMountMotion[pInfo->id] = pInfo;
return p3DObj;
}
//--------------------------------------------------------------
C3DMotion* CGameDataSet::Get3DWeaponMotion (OBJID id)
{
if (id == ID_NONE)
return NULL;
MAP_3DMOTIONEX::iterator iter = m_set3DWeaponMotion.find(id);
if(m_set3DWeaponMotion.end() != iter)
{
C3DMotionInfo* pInfo = iter->second;
if(pInfo)
{
pInfo->timeBirth = ::TimeGet();
return pInfo->p3DMotion;
}
}
// create new
C3DMotion* p3DObj = this->CreateNew3DWeaponMotion(id);
if (!p3DObj)
return NULL;
// create motion info
C3DMotionInfo* pInfo = new C3DMotionInfo;
if (!pInfo)
{
SAFE_DELETE(p3DObj);
return NULL;
}
pInfo->id = id;
pInfo->p3DMotion = p3DObj;
pInfo->timeBirth = ::TimeGet();
// add to set
m_set3DWeaponMotion[pInfo->id] = pInfo;
return p3DObj;
}
//--------------------------------------------------------------
C3DMotion* CGameDataSet::Get3DMotion(OBJID id)
{
if (id == ID_NONE)
return NULL;
MAP_3DMOTIONEX::iterator iter = m_set3DMotion.find(id);
if(m_set3DMotion.end() != iter)
{
C3DMotionInfo* pInfo = iter->second;
if(pInfo)
{
pInfo->timeBirth = ::TimeGet();
return pInfo->p3DMotion;
}
}
// create new
C3DMotion* p3DObj = this->CreateNew3DMotion(id);
if (!p3DObj)
return NULL;
// create motion info
C3DMotionInfo* pInfo = new C3DMotionInfo;
if (!pInfo)
{
SAFE_DELETE(p3DObj);
return NULL;
}
pInfo->id = id;
pInfo->p3DMotion = p3DObj;
pInfo->timeBirth = ::TimeGet();
// add to set
m_set3DMotion[pInfo->id] = pInfo;
return p3DObj;
}
//--------------------------------------------------------------
C3DTexture* CGameDataSet::Get3DTexture(OBJID id)
{
// search first
MAP_3DTEXTUREEX::iterator iter = m_set3DTexture.find(id);
if(iter != m_set3DTexture.end())
{
C3DTextureInfo* pObj = iter->second;
if(pObj)
{
pObj->timeBirth = ::TimeGet();
return pObj->p3DTexture;
}
}
// create new
C3DTexture* p3DObj = this->CreateNew3DTexture(id);
if(!p3DObj)
return NULL;
// add to set
C3DTextureInfo* pInfo = new C3DTextureInfo;
if(!pInfo)
{
SAFE_DELETE(p3DObj);
return NULL;
}
pInfo->id = id;
pInfo->p3DTexture = p3DObj;
pInfo->timeBirth = ::TimeGet();
m_set3DTexture[pInfo->id] = pInfo;
return p3DObj;
}
//--------------------------------------------------------------
C3DEffect* CGameDataSet::Get3DEffect(OBJID id)
{
// search first
MAP_3DEFFECTEX::iterator iter = m_set3DEffect.find(id);
if(iter != m_set3DEffect.end())
{
C3DEffectInfo* pObj = iter->second;
if(pObj)
{
pObj->timeBirth = ::TimeGet();
return pObj->p3DEffect;
}
}
// create new
C3DEffect* p3DObj = this->CreateNew3DEffect(id);
if(!p3DObj)
return NULL;
// add to set
C3DEffectInfo* pInfo = new C3DEffectInfo;
if(!pInfo)
{
SAFE_DELETE(p3DObj);
return NULL;
}
pInfo->id = id;
pInfo->p3DEffect = p3DObj;
pInfo->timeBirth = ::TimeGet();
m_set3DEffect[pInfo->id] = pInfo;
return p3DObj;
}
//--------------------------------------------------------------
C3DMotion* CGameDataSet::CreateNew3DMotion(OBJID id)
{
if (id == ID_NONE)
return NULL;
map<OBJID, string>::iterator iter = m_mapResMotion.find(id);
if (iter == m_mapResMotion.end())
{
/*#ifdef _DEBUG
const OBJID idActionError = 500009;
::ErrorMsg(g_objGameDataSet.GetStr(idActionError), id);
#else*/
const OBJID idActionError = 500009;
::LogMsg(g_objGameDataSet.GetStr(idActionError), id);
//#endif
return NULL;
}
return this->CreateNew3DMotion(iter->second.c_str());
}
//--------------------------------------------------------------
C3DMotion* CGameDataSet::CreateNew3DMountMotion(OBJID id)
{
if (id == ID_NONE)
return NULL;
map<OBJID, string>::iterator iter = m_mapResMountMotion.find(id);
if (iter == m_mapResMountMotion.end())
{
return NULL;
}
return this->CreateNew3DMotion(iter->second.c_str());
}
//--------------------------------------------------------------
C3DMotion* CGameDataSet::CreateNew3DMantleMotion(OBJID id)
{
if (id == ID_NONE)
return NULL;
map<OBJID, string>::iterator iter = m_mapResMantleMotion.find(id);
if (iter == m_mapResMantleMotion.end())
{
//::ErrorMsg("错误:没有发现id[%u]的武器动作!", id);
return NULL;
}
return this->CreateNew3DMotion(iter->second.c_str());
}
//--------------------------------------------------------------
C3DMotion* CGameDataSet::CreateNew3DWeaponMotion(OBJID id)
{
if (id == ID_NONE)
return NULL;
map<OBJID, string>::iterator iter = m_mapResWeaponMotion.find(id);
if (iter == m_mapResWeaponMotion.end())
{
//::ErrorMsg("错误:没有发现id[%u]的武器动作!", id);
return NULL;
}
return this->CreateNew3DMotion(iter->second.c_str());
}
//--------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -