home *** CD-ROM | disk | FTP | other *** search
/ C++ Games Programming / CPPGAMES.ISO / thx / demos / skyscrap / build / alpha.cpp next >
Encoding:
C/C++ Source or Header  |  1995-04-26  |  3.3 KB  |  143 lines

  1. #include "alpha.h"
  2. #include "messages.h"
  3.  
  4. void AlphaMission::initialize()
  5. {
  6.   stealth.Setup( this );
  7.   f15.Setup( this );
  8.   helicopter.Setup( this );
  9.   scroller.Setup( this );
  10.   score.Setup( 307, 3 );
  11.   lives.Setup();
  12.   health.Setup( 3, 3 );
  13.  
  14.   request_timer_cue(   18,                  (callback)&AlphaMission::OnTimer );
  15.   request_hotkey_cue(  SCAN_ESCAPE,         (callback)&AlphaMission::OnEscape );
  16.   request_message_cue( ScoreUpdate,         (callback)&AlphaMission::OnScoreUpdate );
  17.   request_message_cue( HealthUpdate,        (callback)&AlphaMission::OnHealthUpdate );
  18.   request_message_cue( StealthHit,          (callback)&AlphaMission::OnStealthHit );
  19.   request_message_cue( HelicopterDestroyed, (callback)&AlphaMission::OnHelicopterDestroyed );
  20.   request_message_cue( F15Destroyed,        (callback)&AlphaMission::OnF15Destroyed );
  21. }
  22.  
  23. AlphaMission::~AlphaMission()
  24. {
  25.   stop_timer_cue(   18,                  (callback)&AlphaMission::OnTimer );
  26.   stop_hotkey_cue(  SCAN_ESCAPE,         (callback)&AlphaMission::OnEscape );
  27.   stop_message_cue( ScoreUpdate,         (callback)&AlphaMission::OnScoreUpdate );
  28.   stop_message_cue( HealthUpdate,        (callback)&AlphaMission::OnHealthUpdate );
  29.   stop_message_cue( StealthHit,          (callback)&AlphaMission::OnStealthHit );
  30.   stop_message_cue( HelicopterDestroyed, (callback)&AlphaMission::OnHelicopterDestroyed );
  31.   stop_message_cue( F15Destroyed,        (callback)&AlphaMission::OnF15Destroyed );
  32. }
  33.  
  34. void AlphaMission::display()
  35. {
  36.   init_video();
  37.   install_palette( "ss.pal" );
  38.  
  39.   stealth.Reset();
  40.   f15.Reset();
  41.   helicopter.Reset();
  42.   score.Reset();
  43.   lives.Reset();
  44.   health.Reset();
  45.  
  46.   scroller.SetAtSouthMost();
  47.   scroller.draw();
  48.   score.draw();
  49.   lives.draw();
  50.  
  51.   swap_video_pages();
  52. }
  53.  
  54. void AlphaMission::take_over()
  55. {
  56.   set_hotkeys( ON );
  57.   VideoDirector::take_over();
  58.   set_hotkeys( OFF );
  59. }
  60.  
  61. void AlphaMission::OnTimer(void)
  62. {
  63.   scroller.MoveNorth();
  64.   f15.Move();
  65.   helicopter.Move();
  66.  
  67.   DrawAll();
  68. }
  69.  
  70. inline void AlphaMission::DrawAll(void)
  71. {
  72.   scroller.draw();
  73.   score.draw();
  74.   lives.draw();
  75.   health.draw();
  76.   f15.OnDraw();
  77.   helicopter.OnDraw();
  78.   stealth.OnDraw();
  79.  
  80.   swap_video_pages();
  81. }
  82.  
  83. void AlphaMission::OnEscape(int)
  84. {
  85.   stop_director();
  86. }
  87.  
  88. void AlphaMission::OnScoreUpdate()
  89. {
  90.   score.add( MsgInt );
  91.   if ( score.GetScore()%5000==0 )
  92.     scroller.SetPixelIncrement( scroller.GetPixelIncrement()+2 );
  93. }
  94.  
  95. void AlphaMission::OnHealthUpdate()
  96. {
  97.   health.minus( MsgInt );
  98.   if ( health.GetLeft()<=0 )
  99.   {
  100.     // display and sound explosion
  101.     stealth.SetStatus( NO );
  102.     DrawAll();
  103.     stealth.SoundDestroy();
  104.     // do the kill thang
  105.     lives.minus();
  106.     if ( lives.GetLeft()==0 )
  107.       stop_director();
  108.     else
  109.     {
  110.       stealth.Reset();
  111.       f15.Reset();
  112.       helicopter.Reset();
  113.       health.Reset();
  114.       health.Setup( 3, 3 );
  115.  
  116.       scroller.SetAtSouthMost();
  117.       scroller.draw();
  118.       score.draw();
  119.       lives.draw();
  120.     }
  121.   }
  122. }
  123.  
  124. void AlphaMission::OnStealthHit()
  125. {
  126.   OnHealthUpdate();
  127. }
  128.  
  129. void AlphaMission::OnHelicopterDestroyed()
  130. {
  131.   DrawAll();
  132.   helicopter.SoundDestroy();
  133.   helicopter.Reset();
  134. }
  135.  
  136. void AlphaMission::OnF15Destroyed()
  137. {
  138.   DrawAll();
  139.   f15.SoundDestroy();
  140.   f15.Reset();
  141. }
  142. 
  143.