gửi bởi x_x » Thứ 6 Tháng 4 10, 2009 4:19 pm
void CDS_Object_Surface::Draw( void )
{
u8 Index = m_MotionTime >> FX32_SHIFT;
RECT Rect = m_pSurface->GetRect( Index );
u32 Mode = BLT_NORMAL;
u16 w = m_pSurface->GetRectWidth();
u16 h = m_pSurface->GetRectHeight();
if( GetFlag() & FLAG_TRANS_ADD_2 )
{
Mode = BLT_ADD_2;
}
else
{
if( GetFlag() & FLAG_TRANS_ADD )
{
Mode = BLT_ADD;
}
w >>= 1;
h >>= 1;
}
if( m_Scale.x < 0 )
{
Mode |= BLT_REV_V;
}
if( m_Scale.y < 0 )
{
Mode |= BLT_REV_H;
}
s16 x = ( ( m_Position.x + m_DrawOffset.x ) >> FX32_SHIFT ) - w;
s16 y = ( ( m_Position.y + m_DrawOffset.y ) >> FX32_SHIFT ) - h;
m_pSurface->BitBlt( DS_GRA.DBuff_Get(), x, y, &Rect, NULL, m_Alpha, Mode );