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 + -
显示快捷键?