animate.cpp

来自「国外网游源码....除工具源码缺少之外,其余程序都全...至于,什么游戏,因为国」· C++ 代码 · 共 135 行

CPP
135
字号
#include "StdAfx.h"
#include "Animate.h"

CMCAnimate::CMCAnimate(LPDIRECT3DDEVICE9 pd3dDevice, CDrawEx *pDrawEx)
:m_pDrawEx(pDrawEx) 
{
	m_pd3dDevice = pd3dDevice;
	m_dwCurrentTime = 0;
	m_dwLastTime = 0;

	m_iAnimateCnt = 0;
}


CMCAnimate::~CMCAnimate()
{
	Clear();
}
HRESULT CMCAnimate::LoadAnimate(char* FileName)
{
	char m_strTemp[43];
	int m_iTempImageCount = 0;
	char Expand[4];
	
	int lll = strlen(FileName);
	
	memcpy(Expand, &FileName[lll-3], 4);
	
	if(!strcmp(Expand, "mca"))
	{
		//=======================================================================
		char* m_strCode = "<Mirage Creator's Games><固扼陵农府俊捞磐>";
		unsigned int length = 0;			//png颇老狼 荤捞令甫 舅扁 困茄 函荐捞促.
		
		char* TotalName = "";
		char* TotalSaveName = "";
		
		// PNG 颇老 菊俊 内靛 笼绢持扁 内靛绰 => <Mirage Creator's Games><固扼陵农府俊捞磐> = 42BYTE + Width[4byte] + Height[4byte]
		// m_strCode = "<Mirage Creator's Games><固扼陵农府俊捞磐>";
		FILE *fp;
		
		fp = fopen(FileName,"rb");

		if( fp == NULL )
		{
			char strMsg[128]={NULL,};
			sprintf(&strMsg[0],"[Failed] %s 颇老捞 绝澜",FileName);
			OutputDebugString(&strMsg[0]);
			return E_FAIL;
		}

		fread(&m_strTemp, 1, 42, fp);
		fread(&m_iTempImageCount, 1, sizeof(int), fp);

		for(int i = 0; i < m_iTempImageCount; i++)
		{
			int TempDataSize = 0;
			SPRITE_TEXTURE *TempSprite = new SPRITE_TEXTURE;

			fread(&TempSprite->m_iWidth, 1, sizeof(int), fp);
			fread(&TempSprite->m_iHeight, 1, sizeof(int), fp);
			fread(&TempDataSize, 1, sizeof(unsigned int), fp);
			
			BYTE *pData2 = new BYTE[TempDataSize];
			fread((BYTE*)pData2, sizeof(BYTE), TempDataSize, fp);
			if(FAILED( D3DXCreateTextureFromFileInMemoryEx(m_pd3dDevice,pData2,length-50,
				D3DX_DEFAULT,D3DX_DEFAULT,D3DX_DEFAULT,0,
				D3DFMT_UNKNOWN,MEMORY_POOL,
				D3DX_FILTER_TRIANGLE|D3DX_FILTER_MIRROR,
				D3DX_FILTER_TRIANGLE|D3DX_FILTER_MIRROR,D3DCOLOR_ARGB(255,255,0,255), 
				NULL, NULL, &(TempSprite->pTex))))
			{
				OutputDebugString("[角菩] 咆胶贸 肺爹 角菩");
				return E_FAIL;
			}
			delete []pData2;

			m_plistSprite.push_back(TempSprite);
		}
	
		fclose(fp);
		//=================================== metaljack 眠啊.
	}
	else
	{
		MessageBox(g_pApp->GetWindowHandle()," *.mca 颇老捞 绝促.", "Error", MB_OK);
	}

	m_iImageCnt = m_iTempImageCount;
	return S_OK;
}

void CMCAnimate::Clear()
{
	std::list<SPRITE_TEXTURE *>::iterator iter;
	for(iter = m_plistSprite.begin(); iter != m_plistSprite.end() ; iter++)
	{	
		SPRITE_TEXTURE *pItem = (*iter);
		SAFE_RELEASE(pItem->pTex);
	}
	m_plistSprite.clear();
}

void CMCAnimate::Draw_Animate(int X, int Y, int Width, int Height,bool Start, int fps, int Alpha, bool loop)
{
	if(Start == true)
	{
		list <SPRITE_TEXTURE *>::iterator iter;
		int i = 0;
		// 弊妨霖促.
		m_dwCurrentTime = timeGetTime();
		if(m_dwCurrentTime - m_dwLastTime > (1000 / fps))
		{
			m_dwCurrentTime = timeGetTime();
			m_dwLastTime = timeGetTime();
			
			m_iAnimateCnt++;

			if(m_iImageCnt == m_iAnimateCnt - 1)
			{
				m_iAnimateCnt = 1;
			}
		}
	
		for(iter = m_plistSprite.begin(); iter != m_plistSprite.end(); iter++, i++)
		{
			SPRITE_TEXTURE *pItem = (*iter);
			
			if(i == m_iAnimateCnt-1)
			{
				m_pDrawEx->DrawSpriteEx(*pItem, X, Y, Alpha, Width, Height);
			}
		}
	}
}

⌨️ 快捷键说明

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