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

📄 anifilemanager.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
字号:
//--------------------------------------------------------------------------------------
// File Name: AniFileManager.cpp
// Create by: Huang Yuhang
// Create on: 2003/9/24 11:25
//--------------------------------------------------------------------------------------
#pragma warning(disable:4786)
#include "AniFileManager.h"
#include "AniFile.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CAniFileManager::CAniFileManager()
{

}

CAniFileManager::~CAniFileManager()
{
	this->Clear();
}

//--------------------------------------------------------------------------------------
unsigned long	CAniFileManager::Ani2Dai(const char* pszAniFileName, const char* pszDaiFileName, unsigned long& uLastErrorLine)
{
	if(!pszAniFileName && !pszDaiFileName)
		return CODE_EXTERIOR_ERROR;
	uLastErrorLine = 0;
	CAniFile objAniFile;
	unsigned long uCode;
	uCode = objAniFile.LoadAniByOrder(pszAniFileName);
	if(uCode != SUCCESS)
	{
		uLastErrorLine = objAniFile.GetLastErrorLine();
		return uCode;
	}

	uCode = objAniFile.SaveAni2Dai(pszDaiFileName);
	if(uCode != SUCCESS)
		uLastErrorLine = objAniFile.GetLastErrorLine();
	return uCode;
}
//--------------------------------------------------------------------------------------
unsigned long	CAniFileManager::Dai2Ani(const char* pszDaiFileName, const char* pszAniFileName, unsigned long& uLastErrorLine)
{
	if(!pszAniFileName && !pszDaiFileName)
		return CODE_EXTERIOR_ERROR;
	uLastErrorLine = 0;
	CAniFile objAniFile;
	unsigned long uCode;
	uCode = objAniFile.LoadDaiByOrder(pszDaiFileName);
	if(uCode != SUCCESS)
	{
		uLastErrorLine = objAniFile.GetLastErrorLine();
		return uCode;
	}

	uCode = objAniFile.SaveDai2Ani(pszAniFileName);
	if(uCode != SUCCESS)
		uLastErrorLine = objAniFile.GetLastErrorLine();
	return uCode;
}
//--------------------------------------------------------------------------------------
unsigned long	CAniFileManager::Load(const char* pszFileName, BOOL bFroceBin)
{
	char szFileNameCopy[_MAX_PATH];
	strcpy(szFileNameCopy, pszFileName);
	if(bFroceBin)
	{
		int nStrlen = strlen(szFileNameCopy);
		szFileNameCopy[nStrlen-3] = 'D';
		szFileNameCopy[nStrlen-2] = 'A';
		szFileNameCopy[nStrlen-1] = 'I';
	}
	if(!pszFileName)	
		return CODE_EXTERIOR_ERROR;

	int nAmount = m_setAniFile.size();
	// assay file name ... 
	char szDir[_MAX_DIR]		=	"";
	char szDrive[_MAX_PATH]		=	"";
	char szFileName[_MAX_FNAME]	=	"";
	char szExt[_MAX_EXT]		=	"";
	_splitpath(szFileNameCopy, szDrive, szDir, szFileName, szExt);
	strupr(szDir);
	strupr(szFileName);

	for(int i = nAmount-1; i >= 0; i --)
	{
		CAniFile* pAniFile = m_setAniFile[i];
		if(pAniFile && pAniFile->CheckFile(szDir, szFileName))
			return IDai::SUCCESS;
	}
	CAniFile* pAniFile = new CAniFile;
	if(!pAniFile)
		return CODE_INTERIOR_ERROR;
	unsigned long uCode = pAniFile->Load(szFileNameCopy);

	if(uCode != IDai::SUCCESS)
	{
		delete(pAniFile);
	}
	else
	{
		m_setAniFile.push_back(pAniFile);
	}
	return uCode;
}
//--------------------------------------------------------------------------------------
void		CAniFileManager::UnLoad(const char* pszFileName)
{
	if(!pszFileName)	
		return;
	int nAmount = m_setAniFile.size();
	// assay file name ... 
	char szDir[_MAX_DIR]		=	"";
	char szDrive[_MAX_PATH]		=	"";
	char szFileName[_MAX_FNAME]	=	"";
	char szExt[_MAX_EXT]		=	"";
	_splitpath(pszFileName, szDrive, szDir, szFileName, szExt);

	for(int i = nAmount-1; i >= 0; i --)
	{
		CAniFile* pAniFile = m_setAniFile[i];
		if(pAniFile && pAniFile->CheckFile(szDir, szFileName))
			delete pAniFile;
		m_setAniFile.erase(m_setAniFile.begin()+i);
	}
	
}
//--------------------------------------------------------------------------------------
void		CAniFileManager::Clear()
{
	int nAmount = m_setAniFile.size();
	for(int i = 0; i < nAmount; i ++)
	{
		CAniFile* pAniFile = m_setAniFile[i];
		if(pAniFile)
			delete pAniFile;
	}
	m_setAniFile.clear();

}
//--------------------------------------------------------------------------------------
unsigned long	CAniFileManager::Locate(const char* pszFileName, const char* pszindex, IFrameSet* pInfoFrame)
{
	if(!pszFileName || !pszindex)
		return IDai::CODE_INTERIOR_ERROR;
	if(!pInfoFrame)
		return IDai::CODE_INTERIOR_ERROR;

	int nAmount = m_setAniFile.size();
	// assay file name ... 
	char szDir[_MAX_DIR]		=	"";
	char szDrive[_MAX_PATH]		=	"";
	char szFileName[_MAX_FNAME]	=	"";
	char szExt[_MAX_EXT]		=	"";
	_splitpath(pszFileName, szDrive, szDir, szFileName, szExt);
	strupr(szDir);
	strupr(szFileName);

	for(int i = nAmount-1; i >= 0; i --)
	{
		CAniFile* pAniFile = m_setAniFile[i];
		if(pAniFile && pAniFile->CheckFile(szDir, szFileName))
		{
			// find
			unsigned long uCode = pAniFile->GetAni(pszindex, pInfoFrame);
			return uCode;
		}
	
	}
	return CODE_INFO_NOTFOUND;
}
//--------------------------------------------------------------------------------------
void CFrameSet::InsertFrame(const char* pszFrame)
{
	if(!pszFrame)
		return;
	int nLength = strlen(pszFrame);
	char* pszNewFrame = new char[nLength+1];
	if(!pszNewFrame)	
		return;
	strcpy(pszNewFrame, pszFrame);
	m_setFrame.push_back(pszNewFrame);
}
//--------------------------------------------------------------------------------------
void CFrameSet::Clear()
{
	int nAmount = m_setFrame.size();
	for(int i = 0; i < nAmount; i ++)
	{
		char* pszFrame = m_setFrame[i];
		if(pszFrame)
			delete[] pszFrame;
	}
	m_setFrame.clear();
}
//--------------------------------------------------------------------------------------
unsigned long	CFrameSet::GetFrameAmount()
{
	return m_setFrame.size();
}
//--------------------------------------------------------------------------------------
char*			CFrameSet::GetFrameByIndex(int nIndex)
{
	int nAmount = m_setFrame.size();
	if(nIndex < 0 && nIndex >= nAmount)
		return NULL;
	return m_setFrame[nIndex];
}
//--------------------------------------------------------------------------------------

⌨️ 快捷键说明

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