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

  1. //-------------------------------------------------------------
  2. //
  3. // Class:    CDrone
  4. //
  5. // Author:    John M Phillips
  6. //
  7. // Started:    06/05/00
  8. //
  9. // Base:    CAlien
  10. //
  11. // Derived:    None
  12. //
  13. //-------------------------------------------------------------
  14.  
  15. #include "game.h"
  16.  
  17. //-------------------------------------------------------------
  18.  
  19. CDrone::CDrone(CDroneGenerator *generator)
  20. {
  21.     m_generator = generator;
  22.     m_phase = 0.f;
  23. }
  24.  
  25. //-------------------------------------------------------------
  26.  
  27. CDrone::~CDrone()
  28. {
  29. }
  30.  
  31. //-------------------------------------------------------------
  32.  
  33. bool CDrone::activate()
  34. {
  35.     if (!isActive())
  36.         m_timer.start();
  37.  
  38.     return CActor::activate();
  39. }
  40.  
  41. //-------------------------------------------------------------
  42.  
  43. bool CDrone::update(Controls *controls)
  44. {
  45.     if (m_shield == 0) {
  46.         int score = m_generator->droneKilled(true);
  47.  
  48.         if (score == 0) {
  49.             CScorePickup *s = new CScorePickup;
  50.             m_scene->addActor(s);
  51.             s->setPosition(getPosition());
  52.             s->activate();
  53.             }
  54.         else {
  55.             m_scene->createLabel(getPosition(),score);
  56.             CPlayGameState::getPlayer()->scoreBonus(score);
  57.             }
  58.  
  59.         explode();
  60.         kill();
  61.         return true;
  62.         }
  63.  
  64.     m_position.setX(m_generator->getPosition().getX() +
  65.                     32.f * gsSin((m_timer.getTime() + m_phase) * 180.f));
  66.     m_position.setY(m_position.getY() + m_velocity.getY());
  67.  
  68.     animate(ANIMATE_LOOP);
  69.  
  70.     return true;
  71. }
  72.  
  73. //-------------------------------------------------------------
  74.  
  75. void CDrone::setPhase(float p)
  76. {
  77.     m_phase = p;
  78. }
  79.  
  80. //-------------------------------------------------------------
  81.  
  82. void CDrone::onLeavingScreen()
  83. {
  84.     m_generator->droneKilled(false);
  85.  
  86.     CAlien::onLeavingScreen();
  87. }
  88.  
  89. //-------------------------------------------------------------
  90.