亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ani.cpp

?? 網絡游戲魔域源代碼 測試可以完整變異
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "basefunc.H"
#include "nd_bitmap.H"
#include "ani.H"

// static 
HANDLE	CAni::s_hHeap	=NULL;
UINT	CAni::s_uNumAllocsInHeap	=0;
CAniFileSet CAni::s_setAniFile;
IDai* CAni::s_pDai = IDai::CreateNew();
IFrameSet* CAni::s_pFrameSet = IFrameSet::CreateNew();
CRITICAL_SECTION	sAniCritical;
//--------------------------------------------------------------
DWORD Str2ID( const char* str )
{
	int i;
	unsigned int v;
	static unsigned m[70];
	strncpy((char *)m,str,256);
	for (i=0;i<256/4 && m[i];i++) ;
	m[i++]=0x9BE74448,m[i++]=0x66F42C48;
	v=0xF4FA8928;

	__asm {
		mov esi,0x37A8470E		;x0=0x37A8470E
		mov edi,0x7758B42B		;y0=0x7758B42B
		xor ecx,ecx
_loop:
		mov ebx,0x267B0B11		;w=0x267B0B11
		rol v,1
		lea eax,m
		xor ebx,v

		mov eax,[eax+ecx*4]
		mov edx,ebx
		xor esi,eax
		xor edi,eax

		add edx,edi
		or edx,0x2040801		;a=0x2040801
		and edx,0xBFEF7FDF		;c=0xBFEF7FDF

		mov eax,esi
		mul edx
		adc eax,edx
		mov edx,ebx
		adc eax,0

		add edx,esi
		or edx,0x804021			;b=0x804021
		and edx,0x7DFEFBFF		;d=0x7DFEFBFF

		mov esi,eax
		mov eax,edi
		mul edx

		add edx,edx
		adc eax,edx
		jnc _skip
		add eax,2
_skip:
		inc ecx;
		mov edi,eax
		cmp ecx,i
		jnz _loop
		xor esi,edi
		mov v,esi
	}
	return v;
}

//--------------------------------------------------------------
void * CAni::operator new(size_t size)
{
	// got heap?
	if (!s_hHeap)
	{
		s_hHeap	=::HeapCreate(0, 0, 0);
		if (!s_hHeap)
			return NULL;
	}
	// alloc mem for new obj
	void* p	=::HeapAlloc(s_hHeap, HEAP_ZERO_MEMORY, size);
	if (p)
	{
		s_uNumAllocsInHeap++;
	}

	return p;
}

//--------------------------------------------------------------
void CAni::operator delete(void* p)
{
	// check param
	if (!s_hHeap || s_uNumAllocsInHeap <= 0)
		return;

	// free it...
	if (::HeapFree(s_hHeap, 0, p))
	{
		s_uNumAllocsInHeap--;
	}

	// time to destroy heap?
	if (s_uNumAllocsInHeap <= 0)
	{
		if (::HeapDestroy(s_hHeap))
			s_hHeap	=NULL;
	}
}

//--------------------------------------------------------------
BOOL CAni::IsValidPt(void* p)
{
	if (!s_hHeap || !p)
		return false;

	if ((DWORD)p < 0x00010000 || (DWORD)p >= 0x7FFEFFFF)	// user address range from 1M--2G-64k
		return false;

	if (::IsBadCodePtr((FARPROC)p))
		return false;

	return ::HeapValidate(s_hHeap, 0, p);
}

//--------------------------------------------------------------
void CAni::Init(void)
{
	m_nStatus	=ANISTATUS_INIT;
	m_bHalf		=false;
	m_iFrameAmount	=0;
	for(int i=0;i<_MAX_FRAME;i++)
	{
		m_pbmpFrame[i]	=NULL;
	}

	return;
}

//#define USE_ENCRYPTANI
#ifdef USE_ENCRYPTANI

//--------------------------------------------------------------
BOOL CAni::Create(const char* pszDataFile, const char* pszIndex, BOOL bHalf,DWORD dwLoadWay)
{
	if (!pszDataFile || !pszIndex)
		return false;

	if (m_nStatus == ANISTATUS_LOADED)
		Destroy();
	
	m_bHalf = bHalf;
	FILE *fp= fopen(pszDataFile,"rb");
	if (!fp)	{	
		m_nStatus	=ANISTATUS_FAILED;
		return false;
	}
	
	WORD wFileFlag = 0;
	fread(&wFileFlag,sizeof(WORD),1,fp);

	WORD ANIFILE_FLAG  =  0x8888; 
	if(wFileFlag != ANIFILE_FLAG)
		return false;

	int nTotal = 0;
	fread(&nTotal,sizeof(int),1,fp);

	typedef struct CSection{
		DWORD dwID;
		int   nFrame;
		int   nOffSet;
	}Section;

	Section* pTitle = (Section*)calloc(sizeof(Section),nTotal);
	if (!pTitle)
		return false;

	fread(pTitle,sizeof(Section),nTotal,fp);

	// search the titile 
	DWORD dwIDSearch = String2ID( pszIndex );
	int i = 0, nfind = -1;
	Section* pTitleFind = NULL;
	for (i=0; i<nTotal; i++)
	{
		pTitleFind = pTitle + i;
		if (pTitleFind->dwID == dwIDSearch)
		{
			nfind = i;
			break;
		}
	}

	if(nfind == -1)
	{
		m_nStatus	=ANISTATUS_FAILED;
		fclose(fp);
		return false;
	}
	else	
		pTitleFind = pTitle+nfind;
	

	fseek(fp, 256*pTitleFind->nOffSet, SEEK_CUR);
	m_iFrameAmount	= pTitleFind->nFrame%_MAX_FRAME;
	// get frame file name & load it...
	for( i=0; i<m_iFrameAmount; i ++)
	{
	 	
		char szFrame[MAX_PATH];	 
		if(!feof(fp))
			fread(szFrame,256,1,fp);	

		m_pbmpFrame[i]	=new CMyBitmap;
		assert(m_pbmpFrame[i]);
		if((i != 0)&&(i%2 == 0)&&m_bHalf)
		{
			m_pbmpFrame[i] = m_pbmpFrame[i-1];
		}
		else
		if (!m_pbmpFrame[i]->Load(szFrame,dwLoadWay))	// frame load error
		{
			for(int j=0; j<i+1; j++)
			{
				if (m_pbmpFrame[j])
					delete m_pbmpFrame[j];
				
				m_pbmpFrame[j]	=NULL;
			}			
			fclose(fp);			
			m_iFrameAmount	=0;
			m_nStatus	=ANISTATUS_FAILED;		
			return false;
		}
	}

	fclose(fp);
	m_nStatus	=ANISTATUS_LOADED;
	return true;
}

//--------------------------------------------------------------
#else
//--------------------------------------------------------------
BOOL CAni::Create(const char* pszDataFile, const char* pszIndex, BOOL bHalf,DWORD dwLoadWay)
{
	// param check
	::EnterCriticalSection(&sAniCritical);
	if (!pszDataFile || !pszIndex)
		return false;

	// release mem if data have loaded.
	if (m_nStatus == ANISTATUS_LOADED)
		Destroy();
	
	m_bHalf = bHalf;
	
	if(s_pDai->Locate(pszDataFile, pszIndex, CAni::s_pFrameSet) == IDai::SUCCESS)
	{
		BOOL bReturn = this->Create(CAni::s_pFrameSet);
		::LeaveCriticalSection(&sAniCritical);
		return bReturn;
	}
	else
	{
		m_nStatus	=ANISTATUS_FAILED;
		::LeaveCriticalSection(&sAniCritical);
		return false;
	}
	::LeaveCriticalSection(&sAniCritical);
	return false;
}
//--------------------------------------------------------------
#endif
//--------------------------------------------------------------
BOOL CAni::Create(AniIndexInfo* pInfo)
{
	if(!pInfo)
	{
		m_nStatus	=ANISTATUS_FAILED;
		return false;
	}
	
	m_iFrameAmount = pInfo->setAniLine.size()-1;

	for(int i=0; i<m_iFrameAmount; i ++)
	{
		char* pszFile = pInfo->setAniLine[i+1];
		
		m_pbmpFrame[i]	=new CMyBitmap;
		assert(m_pbmpFrame[i]);

		if((i != 0)&&(i%2 == 0)&&m_bHalf)
		{
			m_pbmpFrame[i] = m_pbmpFrame[i-1];
		}
		else
		if (!pszFile || !m_pbmpFrame[i]->Load(pszFile))	// frame load error
		{
			for(int j=0; j<i+1; j++)
			{
				if (m_pbmpFrame[j])
					delete m_pbmpFrame[j];
				
				m_pbmpFrame[j]	=NULL;
			}
			
			m_iFrameAmount	=0;
			m_nStatus	=ANISTATUS_FAILED;
			
			//::ErrorOut("Error: %s load failed in CAni::Create().", szFrame);
			return false;
		}
	}
	m_nStatus	=ANISTATUS_LOADED;
	return true;
}

//--------------------------------------------------------------
BOOL	CAni::Create(IFrameSet* pFrameSet)
{
	if(!pFrameSet)
	{
		m_nStatus	=ANISTATUS_FAILED;
		return false;
	}
	
	m_iFrameAmount = pFrameSet->GetFrameAmount();
	
	for(int i=0; i<m_iFrameAmount; i ++)
	{
		char* pszFile = pFrameSet->GetFrameByIndex(i);
		
		m_pbmpFrame[i]	=new CMyBitmap;
		assert(m_pbmpFrame[i]);
		
		if((i != 0)&&(i%2 == 0)&&m_bHalf)
		{
			m_pbmpFrame[i] = m_pbmpFrame[i-1];
		}
		else
			if (!pszFile || !m_pbmpFrame[i]->Load(pszFile))	// frame load error
			{
				for(int j=0; j<i+1; j++)
				{
					if (m_pbmpFrame[j])
						delete m_pbmpFrame[j];
					
					m_pbmpFrame[j]	=NULL;
				}
				
				m_iFrameAmount	=0;
				m_nStatus	=ANISTATUS_FAILED;
				
				//::ErrorOut("Error: %s load failed in CAni::Create().", szFrame);
				return false;
			}
	}
	m_nStatus	=ANISTATUS_LOADED;
	return true;
}
//--------------------------------------------------------------
// return true means is the last frame
BOOL CAni::Show(UINT uFrame, int x, int y, int alpha,DWORD dwShowWay) const
{
	if(m_nStatus != ANISTATUS_LOADED || m_iFrameAmount <= 0)
		return false;

	uFrame	%=m_iFrameAmount;

	m_pbmpFrame[uFrame]->Show(x, y, alpha,dwShowWay);

	if(uFrame+1 >= m_iFrameAmount)
		return true;
	else
		return false;
}

//--------------------------------------------------------------
BOOL CAni::ShowEx(UINT uFrame, int x, int y, RECT *lpSrc, DWORD dwWidth, DWORD dwHeight, int alpha, DWORD dwShowWay)
{
	if(m_nStatus != ANISTATUS_LOADED || m_iFrameAmount <= 0)
		return false;

	uFrame	%=m_iFrameAmount;

	m_pbmpFrame[uFrame]->ShowEx(x, y, lpSrc, dwWidth, dwHeight, alpha, dwShowWay);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看国产91| 国产成人精品影院| 91精品中文字幕一区二区三区| 欧美色欧美亚洲另类二区| 亚洲精品在线观看视频| 一区二区三区四区五区视频在线观看 | 欧美片在线播放| 国产日韩欧美电影| 日韩av一区二| 在线免费观看日韩欧美| 国产日韩精品一区二区浪潮av | 国产精品免费av| 麻豆一区二区三| 欧美性一区二区| 综合激情成人伊人| 国产91丝袜在线播放| 日韩一区二区三| 日韩在线观看一区二区| 色婷婷久久久久swag精品| 久久九九久久九九| 国产又黄又大久久| 欧美成人a在线| 日韩精品国产精品| 在线电影一区二区三区| 亚洲v日本v欧美v久久精品| 91福利资源站| 一区二区在线观看av| 99精品1区2区| 亚洲天堂精品视频| 色综合久久中文综合久久牛| 国产精品成人免费精品自在线观看| 国精品**一区二区三区在线蜜桃| 日韩女优电影在线观看| 日本中文字幕一区| 91精品一区二区三区久久久久久| 亚洲成人自拍偷拍| 欧美日韩mp4| 午夜精品一区在线观看| 日韩一区二区影院| 激情六月婷婷久久| 国产日本欧美一区二区| 成人一区二区视频| 亚洲欧美另类小说| 欧美午夜电影网| 视频一区免费在线观看| 日韩免费性生活视频播放| 经典三级视频一区| 欧美国产精品v| 色婷婷av一区| 日韩综合小视频| 国产亚洲午夜高清国产拍精品| 风间由美一区二区av101| 国产精品欧美极品| 欧洲一区二区三区在线| 免费不卡在线视频| 中文乱码免费一区二区| 色一情一乱一乱一91av| 免费在线观看精品| 国产精品你懂的| 欧美猛男男办公室激情| 久久99精品一区二区三区三区| 久久久www成人免费毛片麻豆| 波多野结衣在线一区| 一区二区三区四区不卡视频 | 91玉足脚交白嫩脚丫在线播放| 亚洲大片一区二区三区| 欧美成人bangbros| 成人av影视在线观看| 亚洲18女电影在线观看| 久久婷婷国产综合国色天香| 97国产一区二区| 美脚の诱脚舐め脚责91| 1000精品久久久久久久久| 欧美一区二区视频在线观看2020| 国产成人免费9x9x人网站视频| 亚洲一区二区三区不卡国产欧美 | 欧美一级xxx| 99久久婷婷国产综合精品电影 | 制服丝袜成人动漫| 成人国产精品免费网站| 日韩不卡一二三区| 中文字幕佐山爱一区二区免费| 欧美一级欧美一级在线播放| 成人动漫视频在线| 美女视频网站久久| 亚洲成人黄色小说| 最新国产精品久久精品| wwwwxxxxx欧美| 欧美人妇做爰xxxⅹ性高电影| 国产成人在线看| 看片的网站亚洲| 日本不卡免费在线视频| 亚洲综合色婷婷| 亚洲欧洲av色图| 国产网站一区二区| 日韩精品一区二区三区视频 | 久久精品这里都是精品| 91精品啪在线观看国产60岁| 91黄视频在线观看| 99免费精品视频| 成人性色生活片| 国产综合久久久久久鬼色| 免费高清在线一区| 日韩专区中文字幕一区二区| 亚洲成人一区在线| 亚洲第一成人在线| 亚洲国产精品一区二区久久| 亚洲视频在线观看三级| 国产精品美日韩| 国产欧美日韩在线| 日韩欧美国产一区二区在线播放 | 国产精品乱人伦| 日韩精品专区在线| 欧美日韩国产三级| 色综合色综合色综合 | 国产一区二区调教| 日韩电影在线观看一区| 亚洲在线视频一区| 亚洲裸体xxx| 亚洲综合另类小说| 亚洲资源中文字幕| 亚洲婷婷在线视频| 亚洲欧美福利一区二区| 日韩伦理免费电影| 中文字幕人成不卡一区| 国产精品嫩草影院com| 日韩丝袜情趣美女图片| 久久免费美女视频| 精品国产99国产精品| 精品久久免费看| 久久久蜜臀国产一区二区| 日韩三级在线观看| 欧美一区二区三区的| 日韩精品中文字幕一区| 欧美精品一区二区蜜臀亚洲| 欧美精品一区二区久久婷婷| 精品88久久久久88久久久| 日韩精品自拍偷拍| 国产精品久久久久久妇女6080| 国产精品美女久久久久久久网站| 国产精品乱子久久久久| ...av二区三区久久精品| 亚洲视频免费观看| 免费观看成人鲁鲁鲁鲁鲁视频| 免费成人在线影院| 丁香网亚洲国际| 99久久国产综合色|国产精品| 91一区二区三区在线播放| 99久久综合色| 欧美亚洲国产一区在线观看网站| 欧美日韩国产经典色站一区二区三区| 欧美放荡的少妇| 欧美国产日韩a欧美在线观看| 中文字幕不卡在线| 一区二区三区免费在线观看| 肉肉av福利一精品导航| proumb性欧美在线观看| 在线播放亚洲一区| 欧美精品一区二区三区在线播放| 国产精品午夜免费| 亚洲18女电影在线观看| 成人免费视频caoporn| 在线观看一区日韩| 精品入口麻豆88视频| 国产精品高清亚洲| 久久99精品国产麻豆婷婷| 国产不卡视频在线播放| 欧美综合一区二区三区| 2021国产精品久久精品| 亚洲精品国产a久久久久久| 欧美a级理论片| 色婷婷国产精品综合在线观看| 日韩亚洲欧美中文三级| 1024亚洲合集| 国产一区二区网址| 在线观看91精品国产麻豆| 亚洲视频在线观看一区| 狠狠色狠狠色综合日日91app| 色哟哟国产精品免费观看| www国产精品av| 日本欧美在线看| 精东粉嫩av免费一区二区三区| 在线播放日韩导航| 一区二区三区久久久| 国产99久久久国产精品免费看| 7777精品伊人久久久大香线蕉完整版| 国产精品久久久久久一区二区三区| 亚洲成av人**亚洲成av**| 91一区二区在线| 国产欧美日本一区二区三区| 美女视频免费一区| 日韩视频免费观看高清完整版 | 国产精品久久久久一区二区三区共| 日韩制服丝袜av| 成人动漫在线一区| 国产精品婷婷午夜在线观看| 精品在线你懂的| 91麻豆精品国产自产在线| 欧美激情一区二区三区不卡 | 国产精品一区二区在线观看网站 |