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

📄 patternrose.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
📖 第 1 页 / 共 2 页
字号:
							if(++iArrayIndex >= 10000)
								return 0;							 
							yy+= nInterval;
					  }
					  else
						yy+= nInterval;
				 }
				 X+= nInterval;
				 yy=0;
			  }
		 
			n+=2;
			X += 10;
			yy=0;
		 }
	}
   	*(nArray+ iArrayIndex * 2) = 0;
	*(nArray + iArrayIndex * 2 +1) = 0;

   return TRUE;
}

BOOL PatternRose::Create(int iWorldX,int iWorldY,int nColor,char * szChar)
{
	Destroy();
	int i; 
	if(nColor <= 3)
	{
		for(i=0;i<MAX_PatternRoseANI;i++)
		{		
			char szTitle[100];
			if(i <2) 
				sprintf(szTitle,"rose%d_ani%d" ,nColor,i);
			 
			if(i == 2)
				strcpy(szTitle,"paint");
			if(i == 3)
				strcpy(szTitle,"grass");
			strcpy(m_szFileName[i],szTitle);			 
		}
		strcpy(m_szFileName[MAX_PatternRoseANI] ,"");
		strcpy(m_szFileName[MAX_PatternRoseANI + 1] ,"");
		strcpy(m_szFileName[MAX_PatternRoseANI + 2] ,"");
		strcpy(m_szFileName[MAX_PatternRoseANI + 3] ,"");
 
	}
	
	else
	{
		int icolor = 1;		
		if(nColor >4)
			icolor = 4;
		for(i=0;i<3;i++)		 	 
			sprintf(m_szFileName[i],"rose%d_ani%d" ,icolor++,0);
		icolor = 1;			
		if(nColor >4)
			icolor = 4;
		for(i=3;i<6 ;i++)//载入飘的动画
			sprintf(m_szFileName[i],"rose%d_ani%d" ,icolor++,1);
		
		for(i = 0;i<2;i++)
		{		
			char szTitle[100];
			if(i ==0)			 
				strcpy(szTitle,"paint");
			else
				strcpy(szTitle,"grass");
			if(nColor>4)
				strcat(szTitle,"1");
			strcpy(m_szFileName[6+i],szTitle);			
		}
	}


	m_nStatus =PATTERNROSE_CREATE; 
	int *ArrayRose = (int *)malloc(sizeof(int)*10000); 
	GetPoint(ArrayRose,szChar,iWorldX,  iWorldY); 
	for(i = 1;i<= 10000;i++)
	{ 
		if(ArrayRose[i*2] == 0 && ArrayRose[i*2+1] == 0)// the end of array
			break;
		int nOrigWorldPointX =  ArrayRose[i* 2]  + rand()%6;
		int nOrigWorldPointY =  ArrayRose[i * 2 + 1]  + rand()%6;
	 
		CPatternRose  * pObjPatternRose	= new CPatternRose;		
		if(nColor <= 3)
		{
			pObjPatternRose->SetPicture(m_szFileName,0,1,2,3,nColor);		 
		}
		else
		{
			int nflower = rand()%3; 
			pObjPatternRose->SetPicture(m_szFileName,nflower, nflower + 3,6,7,nflower);
		}	  

		pObjPatternRose->Create (nOrigWorldPointX ,nOrigWorldPointY);	
		m_dequePatternRose.push_back(pObjPatternRose);
		 
	} 
	
	free(ArrayRose);
	return 1;


}

int * PatternRose::GetBmpPoint(int index,char * szpFileName)
{
	FILE * P=NULL;
	P=fopen(szpFileName,"rb");
	if(!P)
		return 0;
	fseek(P,index * 700*2*sizeof(int),SEEK_SET);
	memset(&m_nPoint[0],0,700*2*4);
	if(!feof(P))
		fread(&m_nPoint[0],4,700*2,P);
	else
	{
		fclose(P);
		return 0;
	}
	fclose(P);
	return &m_nPoint[0];
}

BOOL PatternRose::Create(int iWorldX,int iWorldY,int nType,int nColor)
{

	Destroy();
	int i; 
	if(nColor <= 3)
	{
		for(i=0;i<MAX_PatternRoseANI;i++)
		{
			char szTitle[100];
			if(i <2) 
				sprintf(szTitle,"rose%d_ani%d" ,nColor,i);
			 
			if(i == 2)
				strcpy(szTitle,"paint");
			if(i == 3)
				strcpy(szTitle,"grass");
			strcpy(m_szFileName[i],szTitle);
		 
		}
		strcpy(m_szFileName[MAX_PatternRoseANI] , "");
		strcpy(m_szFileName[MAX_PatternRoseANI + 1] , "");
		strcpy(m_szFileName[MAX_PatternRoseANI + 2] , "");
		strcpy(m_szFileName[MAX_PatternRoseANI + 3] , "");
 
	}
	
	else
	{
		int icolor = 1;		 
		if(nColor >4)
			icolor = 4;
		for(i=0;i<3;i++)				 
			sprintf(m_szFileName[i],"rose%d_ani%d" ,icolor++,0);
		icolor = 1;
		if(nColor >4)
			icolor = 4;
		for(i=3;i<6 ;i++)//载入飘的动画				
			sprintf(m_szFileName[i],"rose%d_ani%d" ,icolor++,1);		
		
		for(i = 0;i<2;i++)
		{		
			char szTitle[100];
			if(i ==0)			 
				strcpy(szTitle,"paint");
			else
				strcpy(szTitle,"grass");
			if(nColor>4)
				strcat(szTitle,"1");
			strcpy(m_szFileName[6+i],szTitle);		
		}
	}

	m_nStatus =PATTERNROSE_CREATE; 
	int * ArrayRose;
	switch(nType)
	{
	case 0:
	case 1:
		ArrayRose = &ArrayRose1[0];
		break;
	case 2:
		ArrayRose = &ArrayRose2[0];
		break;
	case 3:
		ArrayRose = &ArrayRose3[0];
		break;

	case 4:
		ArrayRose = &ArrayRose4[0];
		break;
	case 5:
		ArrayRose = &ArrayRose5[0];
		break;
	default:
		ArrayRose = GetBmpPoint(nType-6,"./data/weather/Rose/patternRose.dat");
		if(!ArrayRose)
			ArrayRose = &ArrayRose1[0];
		break;
	}

	for(i = 0;i<= 700;i++)
	{ 
		if(ArrayRose[i*2] == 0 && ArrayRose[i*2+1] == 0)// the end of array
			break;
		int nOffsetX,nOffsetY;
		if(nType <=5)
		{
			nOffsetX= rand()%6;
			nOffsetY = rand()%6;
		}
		else
		{
			nOffsetX =0;
			nOffsetY =0;
		}

		int nOrigWorldPointX = iWorldX + ArrayRose[i* 2] * 8 + nOffsetX;
		int nOrigWorldPointY = iWorldY + ArrayRose[i * 2 + 1] * 12 + nOffsetY;
	 
		CPatternRose  * pObjPatternRose	= new CPatternRose;		
		if(nColor <= 3)
		{
			pObjPatternRose->SetPicture(m_szFileName,0,1,2,3,nColor);		 
		}
		else
		{
			int nflower = rand()%3; 
			pObjPatternRose->SetPicture(m_szFileName,nflower, nflower + 3,6,7,nflower);
		}	  

		pObjPatternRose->Create (nOrigWorldPointX ,nOrigWorldPointY);	
		m_dequePatternRose.push_back(pObjPatternRose);
		 
	}  
	return 1;
}


void PatternRose::Destroy()
{	 
	if(m_nStatus == PATTERNROSE_NONE || m_nStatus == PATTERNROSE_DESTROY)
		return;
	int i; 

	for(i =0 ;i<m_dequePatternRose.size();i++)
		SAFE_DELETE(m_dequePatternRose[i]); 
	m_dequePatternRose.clear();
	m_nStatus = PATTERNROSE_DESTROY;	


 
}


void PatternRose::Process()
{

	int i;
	int iFlag = 1;

	for(i=0;i<m_dequePatternRose.size();i++)
	{
		m_dequePatternRose[i]->Process();
		if(m_dequePatternRose[i]->m_iStatus != ROSE_DESTROY)//PATTERNROSE_DESTROY
			iFlag = 0;
	}

	if(iFlag)
		Destroy();
}

//==========================================================================
//
//   PatternRose INTERFACE
//==========================================================================
BOOL CPatternRoseSys::Create(int iWorldX,int iWorldY,int nColor,char * szChar)
{

	int nsl = strlen(szChar);
	nsl = nsl * 24*8 + (nsl-2)/2*15;
	iWorldX -= nsl/4;
	iWorldY -= 48* 2;
	CMyPos pos ;
	g_objGameMap.GetViewPos(pos);

	if( abs(  pos.x + 300 - iWorldX) < 1500 && abs( pos.y + 200 - iWorldY) < 800)
	{
		PatternRose * pObjPatternRose = new PatternRose;
		if(pObjPatternRose)
		{
			pObjPatternRose->Create(iWorldX,iWorldY,nColor,szChar);
			m_DequePatternRose.push_back(pObjPatternRose);
			return 1;
		}
	}

	return 0;
}

BOOL CPatternRoseSys::Create(int iWorldX,int iWorldY,int nType,int nColor)
{ 
	switch(nType)
	{
	case 1:
	case 2:
	case 3:
		iWorldX -=30;
		iWorldY -= 20;
		break;
	case 4:
	case 5:
		iWorldX -= 80;
		iWorldY -= 30;
		break;
	default:
		iWorldX -= 20;
		iWorldY -= 20;
		break;
	}

	CMyPos pos ;
	g_objGameMap.GetViewPos(pos);

	if( abs(  pos.x + 600 - iWorldX) <  2000 && abs( pos.y + 300 - iWorldY) < 1200)
	{
		PatternRose * pObjPatternRose = new PatternRose;
		if(pObjPatternRose)
		{
			pObjPatternRose->Create(iWorldX,iWorldY,nType,nColor);
			m_DequePatternRose.push_back(pObjPatternRose);
			return 1;
		}
	}

	return 0;

}

void CPatternRoseSys::Destroy()
{
	int i;
	for(i =0;i<m_DequePatternRose.size();i++)
	{
		SAFE_DELETE(m_DequePatternRose[i]); 

	}
	m_DequePatternRose.clear();
}
void CPatternRoseSys::Show()
{

	int i,iDestroyFlag = 1;
	for(i =0;i<m_DequePatternRose.size();i++)
	{
		m_DequePatternRose[i]->Process();
 		if(m_DequePatternRose[i]->m_nStatus != PATTERNROSE_DESTROY)	 
			iDestroyFlag =0;
	}
	if(iDestroyFlag)
	{
		for(i =0;i<m_DequePatternRose.size();i++)
			SAFE_DELETE( m_DequePatternRose[i]);
		m_DequePatternRose.clear();
	}
	 
}

⌨️ 快捷键说明

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