1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #include "Cutter.h"
- Cutter::Cutter()
- :Shot( CUTTER_DEGAT ), m_velocity( -CUTTER_SPEED )
- {
- //ctor
- }
- Cutter::Cutter( Sint16 x, Sint16 y, bool ally )
- :Shot( CUTTER_DEGAT, x, y, ally ), m_velocity( CUTTER_SPEED )
- {
- if ( ally )
- m_velocity = -m_velocity;
- }
- Cutter::~Cutter()
- {
- //dtor
- }
- void Cutter::update()
- {
- m_x += m_velocity;
- }
- void Cutter::draw( SDL_Surface* screen )
- {
- if ( m_exist )
- stringRGBA(screen, m_x - 4, m_y - 4, "|", 255, 255, 0, 255);
- }
- bool Cutter::damageSolid( Uint8** solid, const Uint16 dimH, const Uint16 dimW, const SDL_Rect& hitbox )
- {
- // Déterminer l'ordonnée d'impact
- Uint16 yImpct( ( m_y - hitbox.y ) / 8 );
- // Détermination de l'abscisse d'impact
- Sint16 xImpct(0);
- if ( m_ally )
- xImpct = dimW - 1;
- while ( solid[yImpct][xImpct] == 0 )
- {
- if ( m_ally )
- xImpct --;
- else
- xImpct ++;
- if ( xImpct == -1 || xImpct == dimW )
- return false;
- }
- // Déstruction de la ligne
- for ( int i(0); i < dimH; i++ ) {
- damageBloc( solid, dimH, dimW, i, xImpct, 128 );
- }
- // Le projectile a atteint sa cible
- m_exist = false;
- return true;
- }
|