home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Inne / Gry / Atomic_Tanks / Atomic-Tanks-5.1.exe / src / satellite.cpp < prev    next >
C/C++ Source or Header  |  2009-10-22  |  1KB  |  82 lines

  1. #include "environment.h"
  2. #include "satellite.h"
  3. #include "beam.h"
  4.  
  5.  
  6. SATELLITE::SATELLITE(GLOBALDATA *global, ENVIRONMENT *env):_global(global),_env(env)
  7. { }
  8.  
  9. SATELLITE::~SATELLITE()
  10. {
  11.   _env    = NULL;
  12.   _global = NULL;
  13. }
  14.  
  15.  
  16. void SATELLITE::Init()
  17. {
  18.   x = _global->screenWidth / 2;
  19.   previous_x = x;
  20.   y = 35;
  21.   xv = -2;
  22. }
  23.  
  24.  
  25. void SATELLITE::Move()
  26. {
  27.   if (x < -5)
  28.     xv += 1;
  29.   else if (x > (_global->screenWidth - 10) )
  30.     xv -= 1;
  31.  
  32.   previous_x = x;
  33.   x += xv;
  34. }
  35.  
  36.  
  37.  
  38. void SATELLITE::Draw(BITMAP *dest)
  39. {
  40.   drawing_mode(DRAW_MODE_SOLID, NULL, 0, 0);
  41.   draw_sprite(dest, (BITMAP *) _global->misc[SATELLITE_IMAGE],
  42.               x, y);
  43.  
  44.   _env->make_update(x - 20, y, 80, 60);
  45.   _env->make_update(previous_x, y, 80, 60);
  46. }
  47.  
  48.  
  49.  
  50. void SATELLITE::Shoot()
  51. {
  52.   int chance;
  53.   BEAM *my_beam;
  54.   int angle, laser_type;
  55.  
  56.   if (_env->satellite == LASER_NONE)
  57.     return;
  58.  
  59.   if (_env->naturals_since_last_shot >= 3)
  60.     return;
  61.  
  62.   chance = rand() % 100;
  63.   if (! chance)        // !% chance to fire
  64.     {
  65.       if (_env->satellite == LASER_WEAK) laser_type = SML_LAZER;
  66.       else if (_env->satellite == LASER_STRONG) laser_type = MED_LAZER;
  67.       else if (_env->satellite == LASER_SUPER) laser_type = LRG_LAZER;
  68.       else return;
  69.  
  70.       angle = rand() % 30;
  71.       my_beam = new BEAM(_global, _env, (xv < 0) ? x + 10: x + 40,
  72.                          y + 20, angle, laser_type);
  73.       if (! my_beam)
  74.         return;
  75.       my_beam->player = NULL;
  76.       _env->naturals_since_last_shot++;
  77.     }
  78. }
  79.  
  80.  
  81.  
  82.