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

📄 crender.cpp

📁 我在资源网上发布的一个brickshorterjr的代码
💻 CPP
字号:
#include    "CRender.h"

HTARGET     CRender::m_Target   =  NULL;
HTEXTURE    CRender::m_Texture  =  NULL;
hgeSprite*  CRender::m_Sprite   =  NULL;

HTARGET     CRender::m_TargetSave   =  NULL;
HTEXTURE    CRender::m_TextureSave  =  NULL;
hgeSprite*  CRender::m_SpriteSave   =  NULL;

//=========================================================================
//	Name:CRender
//	Desc:Constructors
//
//=========================================================================
CRender::CRender( HGE *hge , hgeResourceManager	*resMgr )
{
	//the enginer and the managers
	m_hgeEngine      =    hge;
	m_resMgr         =    resMgr;
	m_ParMgr         =    NULL;

	m_SplashBombPar  = NULL;
	m_SplashExplPar  = NULL;
	m_SplashBack     = NULL;
	m_SplashBombAnim = NULL;

	m_GameBombpar       =  NULL;
	m_GameExppar        =  NULL;
	m_GameColChangepar  =  NULL;
	m_GameLeveluppar    =  NULL;
	m_GameDirChangerpar =  NULL;
	m_GameLightpar      =  NULL;

	m_GameBack   =  NULL;
	m_GameBack2  =  NULL;
	m_Mouse      =  NULL;

	m_Font       =  NULL;
	m_digiFont   =  NULL;
	m_alpha_tag  =  true;
}

//=========================================================================
//	Name:Init
//	Desc:Init the render, read all the Resources
//
//=========================================================================
bool    CRender::Init()
{
	if( m_Target == NULL )
	{
		m_Target  =  m_hgeEngine->Target_Create( TILE_SIZE*8, TILE_SIZE*8, false);
	}

	//Creat the SaveScreen Texture
	if( m_Texture == NULL )
	{
		m_Texture  =  m_hgeEngine->Texture_Create( TILE_SIZE*8, TILE_SIZE*8 );
	}

	if( m_Sprite == NULL )
	{
		m_Sprite  =  new  hgeSprite( this->m_Texture, 0, 0, 
			(float)m_hgeEngine->Texture_GetWidth(this->m_Texture), (float)m_hgeEngine->Texture_GetHeight(this->m_Texture) ); 
		//m_Sprite->SetBlendMode( BLEND_COLORMUL | BLEND_NOZWRITE | BLEND_ALPHAADD );
	}
////////////////////////////////////
	//Creat the SaveScreen Target
	if( m_TargetSave == NULL )
	{
		m_TargetSave  =  m_hgeEngine->Target_Create(800, 600, false);
	}

	//Creat the SaveScreen Texture
	if( m_TextureSave == NULL )
	{
		m_TextureSave  =  m_hgeEngine->Texture_Create(800, 600);
	}

	if( m_SpriteSave == NULL )
	{
		m_SpriteSave  =  new  hgeSprite( this->m_TextureSave, 0, 0, 
			(float)m_hgeEngine->Texture_GetWidth(this->m_TextureSave), (float)m_hgeEngine->Texture_GetHeight(this->m_TextureSave) ); 
	}

	m_ParMgr	      =	 new	hgeParticleManager();
	
	m_SplashBombPar	  =	 m_resMgr->GetParticleSystem( "splash_bomb" );
	m_SplashBombPar->info.colColorStart = hgeColor( ARGB( 255, 255, 255,0 ) );
	
	m_SplashExplPar		=	m_resMgr->GetParticleSystem( "splash_expl" );
	m_SplashExplPar->info.sprite->SetBlendMode( BLEND_COLORMUL | BLEND_NOZWRITE | BLEND_ALPHAADD );
	
	m_SplashBack      =  m_resMgr->GetSprite( "spSplash" );
	m_SplashBombAnim  =  m_resMgr->GetAnimation( "splashBombAnim" );
	m_SplashBombAnim->Play();
	
	m_GameBombpar       =  m_resMgr->GetParticleSystem( "parBomb" );
	m_GameBombpar->info.sprite->SetBlendMode( BLEND_COLORMUL | BLEND_NOZWRITE | BLEND_ALPHAADD );
	m_GameExppar        =  m_resMgr->GetParticleSystem( "parExp" );
	m_GameColChangepar  =  m_resMgr->GetParticleSystem( "parColChange" );
	m_GameColChangepar->info.sprite->SetBlendMode( BLEND_COLORMUL | BLEND_NOZWRITE | BLEND_ALPHAADD );
	m_GameLeveluppar    =  m_resMgr->GetParticleSystem( "parLevelup" );
	m_GameLeveluppar->info.sprite->SetBlendMode( BLEND_COLORMUL | BLEND_NOZWRITE | BLEND_ALPHAADD );
	m_GameDirChangerpar =  m_resMgr->GetParticleSystem( "parDirChange" );
	m_GameDirChangerpar->info.sprite->SetBlendMode( BLEND_COLORMUL | BLEND_NOZWRITE | BLEND_ALPHAADD );
	m_GameLightpar      =  m_resMgr->GetParticleSystem( "parLight" );
	
	m_Mouse =  m_resMgr->GetSprite( "Mouse" );

	m_GameBack  =  m_resMgr->GetSprite( "Background" );
	m_GameBack2 =  m_resMgr->GetSprite( "spGameBack" );

	m_Font			=	m_resMgr->GetFont( "charFont" );
	m_digiFont		=	m_resMgr->GetFont( "digiFont" );
	return true;
}

//=========================================================================
//	Name:Release
//	Desc:
//
//=========================================================================
void    CRender::Release()
{
	//SAFE_DELETE( m_dis );
	SAFE_DELETE( m_ParMgr );
}

void    CRender::AddSplashPar( e_SplashPar  ParType )
{
	switch( ParType )
	{
	case SPLASH_BOMB:
		m_ParMgr->SpawnPS( &m_SplashBombPar->info, 322, 112 );
		break;

	case SPLASH_EXPL:
		m_ParMgr->SpawnPS( &m_SplashExplPar->info, 322, 112 );
		break;
	}
}

void    CRender::AddGamePar( e_GamePar  ParType , float x, float y,  int type)
{
	switch( ParType )
	{
	case GAME_BOMB:
		m_ParMgr->SpawnPS( &m_GameBombpar->info, x, y );
		break;
		
	case GAME_EXPL:	
		m_GameExppar->info.colColorStart = BrickColor[ type ];
		m_GameExppar->info.colColorEnd	 = m_GameExppar->info.colColorStart;
		m_GameExppar->info.sprite->SetBlendMode( BLEND_COLORMUL | BLEND_NOZWRITE | BLEND_ALPHAADD );
		m_ParMgr->SpawnPS( &m_GameExppar->info, x, y );
		break;
		
	case GAME_LEVELUP:
		m_ParMgr->SpawnPS( &m_GameLeveluppar->info, x, y );
		break;
		
	case GAME_CHANGE:
		m_GameColChangepar->info.colColorStart = BrickColor[ type ];
		m_GameColChangepar->info.colColorEnd	 = m_GameExppar->info.colColorStart;
		m_ParMgr->SpawnPS( &m_GameColChangepar->info, x, y );
		break;

	case GAME_LIGHT:
		m_GameLightpar->info.fDirection = M_PI/2;
		m_ParMgr->SpawnPS( &m_GameLightpar->info, x, y );
		m_GameLightpar->info.fDirection = 0;
		m_ParMgr->SpawnPS( &m_GameLightpar->info, x, y );
		break;

	case GAME_DIR:
		m_ParMgr->SpawnPS( &m_GameDirChangerpar->info, x, y );
		break;	
	}	
}

void    CRender::RenderPar()
{
	m_ParMgr->Update( m_hgeEngine->Timer_GetDelta() );
	m_ParMgr->Render();
}


void    CRender::RenderSplashBack()
{
	m_SplashBack->Render(0,0);

	m_SplashBombAnim->Update( m_hgeEngine->Timer_GetDelta() );
	m_SplashBombAnim->Render( 227, 100 );
}

void    CRender::RenderGameBackground()
{
	m_GameBack->Render(0, 0);
}

void    CRender::RenderGameBackgroundUp()
{
	m_GameBack2->Render(0, 0);
}

void    CRender::RenderMouse(float x, float y)
{
	m_Mouse->Render(x,y);
}

void	CRender::RenderStatus( int score, int level )
{
	char	info[256] = {0};
	sprintf( info, "%d", score );
	m_digiFont->Render( 68, 40,  HGETEXT_CENTER, info);
	sprintf( info, "%d", level );	
	m_digiFont->Render( 68, 100, HGETEXT_CENTER, info  );
}

void    CRender::SaveToTexture()
{	
	m_Texture  =  m_hgeEngine->Target_GetTexture( m_Target );
	m_Sprite->SetBlendMode( BLEND_DEFAULT );
	m_Sprite->SetTexture( m_Texture );
	m_Sprite->SetHotSpot( 4*TILE_SIZE, 4*TILE_SIZE );
}

void    CRender::SaveToTextureSave()
{	
	m_TextureSave  =  m_hgeEngine->Target_GetTexture( m_TargetSave );
	m_SpriteSave->SetBlendMode( BLEND_DEFAULT );
	m_SpriteSave->SetTexture( m_TextureSave );
}

bool    CRender::RenderRotate( int RotateDir )
{	
	float dt = m_hgeEngine->Timer_GetDelta();

	if( RotateDir == 1 )
	{
		static float angle = 0;
		static float size = 1;
		angle += dt*1.3f;	
		if( angle > M_PI/4 )
		{
			size = (float)(1.42/2 / cos( M_PI/4 - angle ));	
		}	
		else
		{
			size = (float)(1.42/2 / cos( M_PI/4 - angle ));
		}
		if( angle > M_PI/2 )
		{
			angle = 0;
			size = 1;
			return true;
		}
		m_Sprite->RenderEx(AREA_BEGIN_X + 7*TILE_SIZE, AREA_BEGIN_Y + 7*TILE_SIZE, angle, size );
	}
	else
	{
		static float angle = 0;
		static float size = 1;
		angle -= dt*1.3f;	
		if( angle < -M_PI/4 )
		{
			size = (float)(1.42/2 / cos( M_PI/4 + angle ));	
		}	
		else
		{
			size = (float)(1.42/2 / cos( M_PI/4 + angle ));
		}
		if( angle < -M_PI/2 )
		{
			angle = 0;
			size = 1;
			return true;
		}
		m_Sprite->RenderEx(AREA_BEGIN_X + 7*TILE_SIZE, AREA_BEGIN_Y + 7*TILE_SIZE, angle, size );		
	}	
	return false;
}

//=========================================================================
//	Name:RenderStarAlpah
//	Desc:Render the effect when the game are changing the scene
//
//=========================================================================
void    CRender::RenderStarAlpah()
{
	float dt = m_hgeEngine->Timer_GetDelta();

	static float step = 254;

	if( m_alpha_tag )
	{
		step -= 200 * dt;
	}
	if(step < 0)
	{
		step = 255;
		m_alpha_tag = 0;
	}

	if( step != 255 )
	{
		m_SpriteSave->SetColor( ARGB((int)step,255,255,255) );
		m_SpriteSave->Render(0, 0);
	}
}

void    CRender::RenderSplashWord()
{
	m_digiFont->SetColor(ARGB(255,0,0,0));
	m_digiFont->Render( 720, 210,  HGETEXT_CENTER, "C.T.");

	m_digiFont->SetColor(ARGB(200,70,20,203));
	m_digiFont->Render( 400, 370,  HGETEXT_CENTER, "I just Remade this game, the final owner is BrickShooter Jr's writer!");
	m_digiFont->Render( 400, 400,  HGETEXT_CENTER, "Please don't use for business!");
	m_digiFont->Render( 400, 420,  HGETEXT_CENTER, "If you want the src, join my QQ: 88220282");

	m_digiFont->SetColor(ARGB(200,170,70,70));
	m_digiFont->Render( 400, 450,  HGETEXT_CENTER, "Here I want to say to my ever girlfriend WQ, I miss you very much!");
	m_digiFont->Render( 400, 470,  HGETEXT_CENTER, "I can give up every things ,Just want you come back");
	m_digiFont->Render( 400, 490,  HGETEXT_CENTER, "I Love You Forever");

}

⌨️ 快捷键说明

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