1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #include "Part.h"
- Part::Part()
- :Shot( PART_DEGAT ), m_speedX( 5 ), m_speedY( 1 ), m_lvl( 255 )
- {
- m_part[0] = '#';
- m_part[1] = 0;
- }
- Part::Part( Sint16 x, Sint16 y, Sint16 speedX, Sint16 speedY, Uint8 lvl, char part, bool ally )
- :Shot( PART_DEGAT, x, y, ally ), m_speedX( speedX ), m_speedY( speedY ), m_lvl( lvl )
- {
- m_part[0] = part;
- m_part[1] = 0;
- }
- Part::~Part()
- {
- //dtor
- }
- void Part::update()
- {
- if ( !m_exist )
- return;
- m_x += m_speedX;
- m_y += m_speedY;
- Uint8 deg( 1 + ( rand() % 20 ) );
- if ( m_lvl < deg)
- m_exist = false;
- m_lvl -= deg;
- }
- void Part::draw( SDL_Surface* screen )
- {
- if ( m_exist )
- stringRGBA(screen, m_x - 4, m_y - 4, m_part, 255, m_lvl, m_lvl, 255);
- }
- bool Part::damageSolid( Uint8** solid, const Uint16 dimH, const Uint16 dimW, const SDL_Rect& hitbox )
- {
- // Déterminer les coordonnées d'impact
- Uint16 yImpct( ( m_y - hitbox.y ) / 8 );
- Uint16 xImpct( ( m_x - hitbox.x ) / 8 );
- // Débris détruit si contact
- m_exist = !damageBloc( solid, dimH, dimW, yImpct, xImpct, 42 );
- return !m_exist;
- }
|