home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / XenonSource.exe / xenon / source / dronegenerator.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-08-02  |  1.6 KB  |  81 lines

  1. //-------------------------------------------------------------
  2. //
  3. // Class:    CDroneGenerator
  4. //
  5. // Author:    John M Phillips
  6. //
  7. // Started:    06/05/00
  8. //
  9. // Base:    CActor
  10. //
  11. // Derived:    None
  12. //
  13. //-------------------------------------------------------------
  14.  
  15. #include "game.h"
  16.  
  17. //-------------------------------------------------------------
  18.  
  19. CDroneGenerator::CDroneGenerator()
  20. {
  21.     m_drones_created = 0;
  22.     m_drones_active = 0;
  23.     m_drones_killed = 0;
  24. }
  25.  
  26. //-------------------------------------------------------------
  27.  
  28. CDroneGenerator::~CDroneGenerator()
  29. {
  30. }
  31.  
  32. //-------------------------------------------------------------
  33.  
  34. bool CDroneGenerator::activate()
  35. {
  36.     if (!isActive()) {
  37.         m_timer.start();
  38.         }
  39.  
  40.     return CActor::activate();
  41. }
  42.  
  43. //-------------------------------------------------------------
  44.  
  45. bool CDroneGenerator::update(Controls *controls)
  46. {
  47.     if (m_drones_created < DRONE_TOTAL) {
  48.         CDrone *d = new CDrone(this);
  49.         m_scene->addActor(d);
  50.         d->setPosition(getPosition() + gsCVector(0.f,m_drones_created * DRONE_SPACING));
  51.         d->setVelocity(gsCVector(0.f,DRONE_SPEED));
  52.         d->setPhase(m_drones_created * DRONE_DELAY);
  53.         d->activate();
  54.         m_drones_created++;
  55.         }
  56.  
  57.     return true;
  58. }
  59.  
  60. //-------------------------------------------------------------
  61.  
  62. int CDroneGenerator::droneKilled(bool by_player)
  63. {
  64.     m_drones_active--;
  65.     
  66.     if (by_player)
  67.         m_drones_killed++;
  68.  
  69.     if (m_drones_killed == m_drones_created) {
  70.         kill();
  71.         return 0;
  72.         }
  73.  
  74.     if (m_drones_active == 0)
  75.         kill();
  76.  
  77.     return getActorInfo().m_kill_bonus * m_drones_killed;
  78. }
  79.  
  80. //-------------------------------------------------------------
  81.