DragonNest/Client/EtCutSceneTool/Fade.cpp
2024-12-19 09:48:26 +08:00

125 lines
2.9 KiB
C++

#include "stdafx.h"
#include <d3dx9.h>
#include "Fade.h"
#include "EternityEngine.h"
#include "EtSprite.h"
CFade::CFade( LPDIRECT3DDEVICE9 pd3dDevice, LPD3DXSPRITE pSprite ) : m_pd3dDevice( pd3dDevice ),
m_pBlackTexture( NULL ),
m_pSprite( pSprite ),
m_iFadeState( NONE ),
m_fNowFadeAmount( 0.0f ),
m_fFadeSpeed( 1.0f ),
m_dwColor( 0xff000000 )
{
// °ËÀº ÅØ½ºÃÄ »ý¼º
//pd3dDevice->CreateTexture( 16, 16, 1, 0, D3DFMT_X8R8G8B8, D3DPOOL_MANAGED, &m_pBlackTexture, NULL );
//D3DXCreateTexture( m_pd3dDevice, 16, 16, 1, 0, D3DFMT_X8R8G8B8, D3DPOOL_MANAGED, &m_pBlackTexture );
//m_pBlackTexture->
//HRESULT hr = D3DXCreateTextureFromFileEx( m_pd3dDevice, L"./bitmaps/fade.dds", 16, 16, 1, 0,
// D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, D3DX_FILTER_NONE,
// D3DX_FILTER_NONE, 0, NULL, NULL, &m_pBlackTexture );
//_ASSERT( S_OK == hr );
}
CFade::~CFade(void)
{
//if( m_pBlackTexture )
//{
// m_pBlackTexture->Release();
// m_pBlackTexture = NULL;
//}
}
void CFade::Reset( void )
{
m_iFadeState = NONE;
m_fNowFadeAmount = 0.0f;
m_fFadeSpeed = 1.0f;
}
void CFade::FadeIn( float fSpeed, DWORD dwColor )
{
m_iFadeState = FADE_IN;
m_fNowFadeAmount = 1.0f;
m_fFadeSpeed = fSpeed;
m_dwColor = dwColor;
}
void CFade::FadeOut( float fSpeed, DWORD dwColor )
{
m_iFadeState = FADE_OUT;
m_fNowFadeAmount = 0.0f;
m_fFadeSpeed = fSpeed;
m_dwColor = dwColor;
}
void CFade::Render( float fDelta )
{
if( NULL == m_pSprite )
return;
//if( NONE == m_iFadeState )
// return;
if( FADE_IN == m_iFadeState )
m_fNowFadeAmount -= (fDelta * m_fFadeSpeed);
else
if( FADE_OUT == m_iFadeState )
m_fNowFadeAmount += (fDelta * m_fFadeSpeed);
if( m_fNowFadeAmount < 0.0f )
{
m_fNowFadeAmount = 0.0f;
m_iFadeState = NONE;
}
else
if( m_fNowFadeAmount > 1.0f )
{
m_fNowFadeAmount = 1.0f;
m_iFadeState = NONE;
}
//D3DXMATRIX matTrans, matScale;
//D3DXMatrixTranslation( &matTrans, 0.0f, 0.0f, 0.0f );
//D3DXMatrixScaling( &matScale, 100.0f, 100.0f, 1.0f );
//matTrans = matTrans * matScale;
//m_pSprite->SetTransform( &matTrans );
//m_pSprite->Begin( D3DXSPRITE_ALPHABLEND );
//m_pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
//DWORD dwAlpha = 0;
//D3DXCOLOR Alpha( 0.0f, 0.0f, 0.0f, m_fNowFadeAmount );
//dwAlpha = (DWORD)Alpha;
//m_dwColor &= 0x00ffffff;
//m_dwColor |= dwAlpha;
//m_pSprite->Draw( m_pBlackTexture, NULL, NULL, NULL, m_dwColor );
//m_pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
//m_pSprite->End();
SUICoord Coord( 0.0f, 0.0f, 1.0f, 1.0f );
DWORD dwAlpha = 0;
D3DXCOLOR Alpha( 0.0f, 0.0f, 0.0f, m_fNowFadeAmount );
dwAlpha = (DWORD)Alpha;
m_dwColor &= 0x00ffffff;
m_dwColor |= dwAlpha;
CEtSprite::GetInstance().Begin( D3DXSPRITE_DONOTSAVESTATE | D3DXSPRITE_ALPHABLEND );
CEtSprite::GetInstance().Flush();
CEtSprite::GetInstance().DrawRect( Coord, m_dwColor );
CEtSprite::GetInstance().End();
}