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

📄 gamedataset.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
📖 第 1 页 / 共 3 页
字号:
C3DMotion* CGameDataSet::CreateNew3DMotion(const char* pszFileName)
{
	if (!pszFileName)
		return NULL;

	C3DMotion* pObj	= new C3DMotion;
	if (!pObj)
		return NULL;

	if (!pObj->Create((char*)pszFileName))
	{
		const OBJID idMotionError = 500010;
		::ErrorMsg(g_objGameDataSet.GetStr(idMotionError), pszFileName);

		SAFE_DELETE(pObj);
		return NULL;
	}

	return pObj;
}

//--------------------------------------------------------------
C3DTexture* CGameDataSet::CreateNew3DTexture(OBJID id)
{
	if (id == ID_NONE)
		return NULL;

	map<OBJID, string>::iterator iter = m_mapResTexture.find(id);
	if (iter == m_mapResTexture.end())
	{
		const OBJID idTextureError = 500011;
		::ErrorMsg(g_objGameDataSet.GetStr(idTextureError), id);
		return NULL;
	}

	const char* pszFileName = iter->second.c_str();
	MYASSERT (pszFileName);

	C3DTexture* pTexture = new C3DTexture;
	if (!pTexture)
		return NULL;

	if (!pTexture->Create(pszFileName))
	{
		SAFE_DELETE(pTexture);
		const OBJID idTextureError = 500012;
		::ErrorOut(g_objGameDataSet.GetStr(idTextureError), pszFileName);
		return NULL;
	}

	return pTexture;
}

//--------------------------------------------------------------
C3DEffect* CGameDataSet::CreateNew3DEffect(OBJID id)
{
	if (id == ID_NONE)
		return NULL;

	map<OBJID, string>::iterator iter = m_mapResEffectObj.find(id);
	if (iter == m_mapResEffectObj.end())
	{
		const OBJID idEffect = 500013;
		::ErrorMsg(g_objGameDataSet.GetStr(idEffect), id);
		return NULL;
	}

	char szFileName[_MAX_PATH] = "";
	strcpy(szFileName, iter->second.c_str());

	C3DEffect* pEffect = new C3DEffect;
	if (!pEffect)
		return NULL;

	if (!pEffect->Load(szFileName))
	{
		::ErrorMsg("Error: CreateNew3DEffect(%s) 失败. ", szFileName);

		SAFE_DELETE(pEffect);
		return NULL;
	}
		
	return pEffect;	
}

//--------------------------------------------------------------
void CGameDataSet::Process3DObjSet(void)
{
	MAP_3DOBJEX::iterator iter = m_set3DObj.begin();
	while(iter != m_set3DObj.end())
	{
		C3DObjInfo* pInfo = iter->second;
		if(!pInfo || ::TimeGet() - pInfo->timeBirth > _3DOBJ_DEADLINE)
		{
			if(pInfo)
			{
				SAFE_DELETE(pInfo->p3DObj);
				SAFE_DELETE(pInfo->pDefaultMotion);
				SAFE_DELETE(pInfo);
			}

			MAP_3DOBJEX::iterator iterCopy = iter;
			iterCopy ++;
			m_set3DObj.erase(iter);
			iter = iterCopy;
		}
		else
		{
			iter ++;
		}
	}
}
//--------------------------------------------------------------
void CGameDataSet::Process3DMotionSet(void)
{
	MAP_3DMOTIONEX::iterator iter = m_set3DMotion.begin();
	while(iter != m_set3DMotion.end())
	{
		C3DMotionInfo* pInfo = iter->second;
		if(!pInfo || ::TimeGet() - pInfo->timeBirth > m_dw3DMotionLife)
		{
			if(pInfo)
			{
				SAFE_DELETE(pInfo->p3DMotion);
				SAFE_DELETE(pInfo);
			}
			
			MAP_3DMOTIONEX::iterator iterCopy = iter;
			iterCopy ++;
			m_set3DMotion.erase(iter);
			iter = iterCopy;
		}
		else
		{
			iter ++;
		}
	}
}
//--------------------------------------------------------------
void CGameDataSet::Process3DWeaponMotionSet(void)
{
	MAP_3DMOTIONEX::iterator iter = m_set3DWeaponMotion.begin();
	while(iter != m_set3DWeaponMotion.end())
	{
		C3DMotionInfo* pInfo = iter->second;
		if(!pInfo || ::TimeGet() - pInfo->timeBirth > m_dw3DMotionLife)
		{
			if(pInfo)
			{
				SAFE_DELETE(pInfo->p3DMotion);
				SAFE_DELETE(pInfo);
			}
			
			MAP_3DMOTIONEX::iterator iterCopy = iter;
			iterCopy ++;
			m_set3DWeaponMotion.erase(iter);
			iter = iterCopy;
		}
		else
		{
			iter ++;
		}
	}
}
//--------------------------------------------------------------
void		CGameDataSet::Process3DMountMotionSet	(void)
{
	MAP_3DMOTIONEX::iterator iter = m_set3DMountMotion.begin();
	while(iter != m_set3DMountMotion.end())
	{
		C3DMotionInfo* pInfo = iter->second;
		if(!pInfo || ::TimeGet() - pInfo->timeBirth > m_dw3DMotionLife)
		{
			if(pInfo)
			{
				SAFE_DELETE(pInfo->p3DMotion);
				SAFE_DELETE(pInfo);
			}
			
			MAP_3DMOTIONEX::iterator iterCopy = iter;
			iterCopy ++;
			m_set3DMountMotion.erase(iter);
			iter = iterCopy;
		}
		else
		{
			iter ++;
		}
	}
}
//--------------------------------------------------------------
void		CGameDataSet::Process3DMantalMotionSet	(void)
{
	MAP_3DMOTIONEX::iterator iter = m_set3DMantleMotion.begin();
	while(iter != m_set3DMantleMotion.end())
	{
		C3DMotionInfo* pInfo = iter->second;
		if(!pInfo || ::TimeGet() - pInfo->timeBirth > m_dw3DMotionLife)
		{
			if(pInfo)
			{
				SAFE_DELETE(pInfo->p3DMotion);
				SAFE_DELETE(pInfo);
			}
			
			MAP_3DMOTIONEX::iterator iterCopy = iter;
			iterCopy ++;
			m_set3DMantleMotion.erase(iter);
			iter = iterCopy;
		}
		else
		{
			iter ++;
		}
	}
}
//--------------------------------------------------------------
void CGameDataSet::Process3DTextureSet(void)
{
	MAP_3DTEXTUREEX::iterator iter = m_set3DTexture.begin();
	while(iter != m_set3DTexture.end())
	{
		C3DTextureInfo* pInfo = iter->second;
		if(!pInfo || ::TimeGet() - pInfo->timeBirth > m_dw3DTextureLife)
		{
			if(pInfo)
			{
				SAFE_DELETE(pInfo->p3DTexture);
				SAFE_DELETE(pInfo);
			}
			
			MAP_3DTEXTUREEX::iterator iterCopy = iter;
			iterCopy ++;
			m_set3DTexture.erase(iter);
			iter = iterCopy;
		}
		else
		{
			iter ++;
		}
	}

}
//--------------------------------------------------------------
void CGameDataSet::Process3DEffectSet(void)
{
	MAP_3DEFFECTEX::iterator iter = m_set3DEffect.begin();
	while(iter != m_set3DEffect.end())
	{
		C3DEffectInfo* pInfo = iter->second;
		if(!pInfo || ::TimeGet() - pInfo->timeBirth > m_dw3DEffectLife)
		{
			if(pInfo)
			{
				SAFE_DELETE(pInfo->p3DEffect);
				SAFE_DELETE(pInfo);
			}
			
			MAP_3DEFFECTEX::iterator iterCopy = iter;
			iterCopy ++;
			m_set3DEffect.erase(iter);
			iter = iterCopy;
		}
		else
		{
			iter ++;
		}
	}
}
//--------------------------------------------------------------
OBJID CGameDataSet::Get3DTextureID(C3DTexture* pTexture)
{
/*
	int nAmount = m_set3DTexture.size();
	for(int i = 0; i < nAmount; i++)
	{
		C3DTextureInfo* pInfo = m_set3DTexture[i];
		if(pInfo->p3DTexture == pTexture)
			return pInfo->id;
	}*/

	return ID_NONE;
}
//--------------------------------------------------------------
CAni* CGameDataSet::GetItemMinIcon(OBJID idItemType, int nExigence)
{
	if(idItemType == ID_NONE)
	{
		return NULL;
	}
	else
	{
		char szAniFile[] = "ani/ItemMinIcon.Ani";
		char szTitle[64];
		sprintf(szTitle, "Item%d", idItemType);
		CAni* pAni = g_objGameDataSet.GetDataAni(szAniFile, szTitle, nExigence);
		if (!pAni)
		{
			pAni = g_objGameDataSet.GetDataAni(szAniFile, "ItemDefault", nExigence);
		}
		
		return pAni;
	}
}
//--------------------------------------------------------------
CAni* CGameDataSet::GetPlayerFaceIcon(int nFace, int nLook, int nExigence)
{
	char szAniFile[] = "ani/PlayerFace.Ani";
	char szTitle[64];
	int nRealFace = 10000*(nFace+1) + nLook;
	sprintf(szTitle, "Face%d", nRealFace);
	return g_objGameDataSet.GetDataAni(szAniFile, szTitle, nExigence);
}
//--------------------------------------------------------------
CAni* CGameDataSet::GetPetFaceIcon(int nFace, int nExigence)
{
	char szAniFile[] = "ani/PetFace.Ani";
	char szTitle[64];
	sprintf(szTitle, "Face%d", nFace);
	return g_objGameDataSet.GetDataAni(szAniFile, szTitle, nExigence);	
}
//--------------------------------------------------------------
CAni* CGameDataSet::GetNpcFaceIcon(int nFace, int nExigence)
{
	char szAniFile[] = "ani/NpcFace.Ani";
	char szTitle[64];
	sprintf(szTitle, "Face%d", nFace);
	return g_objGameDataSet.GetDataAni(szAniFile, szTitle, nExigence);
}
//--------------------------------------------------------------
void CGameDataSet::GetObjAmount(DWORD& dw3DObj, DWORD& dw3DMotion, DWORD& dw3DWMotion, DWORD& dwTexture, DWORD& dw3DEffect, DWORD& dwDataAni)
{
	dw3DObj = m_set3DObj.size();
	dw3DMotion = m_set3DMotion.size();
	dw3DWMotion = m_set3DWeaponMotion.size();
	dwTexture = m_set3DTexture.size();
	dw3DEffect = m_set3DEffect.size();
	dwDataAni = m_mapDataAni.size();
}
//--------------------------------------------------------------
const char* CGameDataSet::GetSound(OBJID idSound)
{
	map<OBJID, string>::iterator iter = m_mapSound.find(idSound);
	if(iter != m_mapSound.end())
		return iter->second.c_str();
	return NULL;
}
//--------------------------------------------------------------
CAni* CGameDataSet::GetMedal(int nMedal, int nExigence)
{
	char szAniFile[] = "ani/Medal.Ani";
	char szTitle[64];
	sprintf(szTitle, "Medal%d", nMedal);
	return g_objGameDataSet.GetDataAni(szAniFile, szTitle, nExigence);
}
//--------------------------------------------------------------
void CGameDataSet::InitDnp(void)
{

/*
	const char szDisperseFile[] = "ini/DisperseFile.ini";
	char szLine[512];
	FILE* fp = fopen(szDisperseFile, "r");
	if(!fp)
		return;
	while(true)
	{
		if(EOF == fscanf(fp, "%s\n", szLine))
			break;
		else 
			::Common_AddDnpDisperseFile(szLine);
	}
	fclose(fp);*/



	const char szDnpFile[] = "ini/dnpFile.ini";
	char szLine[512];
	FILE* 	fp = fopen(szDnpFile, "r");
	if(!fp)
		return;
	while(true)
	{
		if(EOF == fscanf(fp, "%s\n", szLine))
			break;
		else
			::MyDnpFileOpen(szLine);
	}
}
//--------------------------------------------------------------
CAni*	CGameDataSet::GetEmblemIcon(int nIndex, int nExigence)
{
	char szAniFile[] = "ani/Emblem.Ani";
	char szTitle[64];
	sprintf(szTitle, "Emblem%d", nIndex);
	return g_objGameDataSet.GetDataAni(szAniFile, szTitle, nExigence);
}
//--------------------------------------------------------------
void	CGameDataSet::CreateItemEffectInfo()
{
	char szIniFile[] = "ini/itemeffect.ini";
	FILE* fp = fopen(szIniFile, "r");
	if(fp)
	{
		char szLine[1024];
		while(fgets(szLine, 1023, fp))
		{
			OBJID id;
			char szEffect0[256];
			char szEffect1[256];
			char szEffect2[256];
			char szWaveFile[_MAX_PATH];
			if(5 == sscanf(szLine, "%u %s %s %s %s\n", &id, szEffect0, szEffect1, szEffect2,
					szWaveFile))
			{
				ItemEffectInfo Info;
				Info.strItemUseEffect = szEffect0;
				Info.strMapItemEffect = szEffect1;
				Info.strItemBgEffect = szEffect2;
				Info.strItemDropSound = szWaveFile;
				m_mapItemEffectInfo[id] = Info;
			}
		}
		fclose(fp);
	}
}
//--------------------------------------------------------------
void	CGameDataSet::DestroyItemEffectInfo()
{
	m_mapItemEffectInfo.clear();		
}
//--------------------------------------------------------------
ItemEffectInfo*		CGameDataSet::GetItemEffectInfo(OBJID id)
{
	std :: map<OBJID, ItemEffectInfo>::iterator iter = m_mapItemEffectInfo.find(id);
	if(iter != m_mapItemEffectInfo.end())
	{
		return &iter->second;
	}
	return NULL;
}
//--------------------------------------------------------------
void CGameDataSet::CreateEmotionInfo ()
{
	char szIniFile[] = "ini/EmotionIco.ini";
	char szLine[1024];
	FILE* fp = fopen(szIniFile, "r");
	if (fp)
	{
		while(fgets(szLine, 1023, fp))
		{
			int nIndex = 0;
			char szShutCut[128];
			if(2 == sscanf(szLine, "%d %s\n",&nIndex, szShutCut))
			{
				string str = szShutCut;
				m_setEmotion.push_back (str);
			}
		}
		fclose(fp);
	}
}
//--------------------------------------------------------------
int CGameDataSet::GetEmotionAmount ()
{
	return m_setEmotion.size ();
}
//--------------------------------------------------------------
const char* CGameDataSet::GetEmotionShutCut (int nIndex)
{
	int nAmount = m_setEmotion.size ();
	if (nIndex >= nAmount || nIndex < 0)
		return NULL;
	else
		return m_setEmotion[nIndex].c_str();		
}
//--------------------------------------------------------------
CAni*	CGameDataSet::GetEmotionIcon(int nIndex, int nExigence)
{
	char szAniFile[] = "ani/EmotionIco.Ani";
	char szTitle[64];
	sprintf(szTitle, "ICON%d", nIndex);
	return g_objGameDataSet.GetDataAni(szAniFile, szTitle, nExigence);	
}
//--------------------------------------------------------------

void CGameDataSet::ShowInfoBack(int x, int y, int nWidth, int nHeight)
{
	CAni* BackAni = g_objGameDataSet.GetDataAni ( "ani/control.ani",
		"InfoBack",
		EXIGENCE_IMMEDIATE ) ;
	
	RECT rect1 = { 2,2,30,30 } ;
	
	RECT rect2 = { 0,0,2,2 } ;
	RECT rect3 = { 30,0,32,2 } ;
	RECT rect4 = { 0,30,2,32 } ;
	RECT rect5 = { 30,30,32,32 } ;
	
	RECT rect6 = { 2,0,30,2 } ;
	RECT rect7 = { 0,2,2,30 } ;
	
	
	if (BackAni != NULL)
	{
		BackAni->ShowEx( 0,	x,y,
			&rect1,	nWidth, nHeight);
		
		BackAni->ShowEx( 0,	x,y,
			&rect6, nWidth, 2);
		BackAni->ShowEx( 0,	x,y + nHeight,
			&rect6,	nWidth, 2);
		
		BackAni->ShowEx( 0,	x,y,
			&rect7,	2, nHeight);
		BackAni->ShowEx( 0,	x + nWidth,y,
			&rect7,	2, nHeight);		
		
		BackAni->ShowEx( 0,	x,y,
			&rect2,	2, 2);
		BackAni->ShowEx( 0,	x + nWidth - 2 ,y ,
			&rect3,	2, 2);
		BackAni->ShowEx( 0,	x,y + nHeight - 2,
			&rect4,	2, 2);
		BackAni->ShowEx( 0,	x + nWidth - 2,y + nHeight -2,
			&rect5,	2, 2);
	}
}

//--------------------------------------------------------------
const char* CGameDataSet::GetVersionInfo(void)
{
#ifdef _ENGLISH_VERSION
	return "English";
	
#else
	return this->GetStr(10426);
	
#endif
	
}

⌨️ 快捷键说明

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