home *** CD-ROM | disk | FTP | other *** search
- #include "alpha.h"
- #include "messages.h"
-
- void AlphaMission::initialize()
- {
- stealth.Setup( this );
- f15.Setup( this );
- helicopter.Setup( this );
- scroller.Setup( this );
- score.Setup( 307, 3 );
- lives.Setup();
- health.Setup( 3, 3 );
-
- request_timer_cue( 18, (callback)&AlphaMission::OnTimer );
- request_hotkey_cue( SCAN_ESCAPE, (callback)&AlphaMission::OnEscape );
- request_message_cue( ScoreUpdate, (callback)&AlphaMission::OnScoreUpdate );
- request_message_cue( HealthUpdate, (callback)&AlphaMission::OnHealthUpdate );
- request_message_cue( StealthHit, (callback)&AlphaMission::OnStealthHit );
- request_message_cue( HelicopterDestroyed, (callback)&AlphaMission::OnHelicopterDestroyed );
- request_message_cue( F15Destroyed, (callback)&AlphaMission::OnF15Destroyed );
- }
-
- AlphaMission::~AlphaMission()
- {
- stop_timer_cue( 18, (callback)&AlphaMission::OnTimer );
- stop_hotkey_cue( SCAN_ESCAPE, (callback)&AlphaMission::OnEscape );
- stop_message_cue( ScoreUpdate, (callback)&AlphaMission::OnScoreUpdate );
- stop_message_cue( HealthUpdate, (callback)&AlphaMission::OnHealthUpdate );
- stop_message_cue( StealthHit, (callback)&AlphaMission::OnStealthHit );
- stop_message_cue( HelicopterDestroyed, (callback)&AlphaMission::OnHelicopterDestroyed );
- stop_message_cue( F15Destroyed, (callback)&AlphaMission::OnF15Destroyed );
- }
-
- void AlphaMission::display()
- {
- init_video();
- install_palette( "ss.pal" );
-
- stealth.Reset();
- f15.Reset();
- helicopter.Reset();
- score.Reset();
- lives.Reset();
- health.Reset();
-
- scroller.SetAtSouthMost();
- scroller.draw();
- score.draw();
- lives.draw();
-
- swap_video_pages();
- }
-
- void AlphaMission::take_over()
- {
- set_hotkeys( ON );
- VideoDirector::take_over();
- set_hotkeys( OFF );
- }
-
- void AlphaMission::OnTimer(void)
- {
- scroller.MoveNorth();
- f15.Move();
- helicopter.Move();
-
- DrawAll();
- }
-
- inline void AlphaMission::DrawAll(void)
- {
- scroller.draw();
- score.draw();
- lives.draw();
- health.draw();
- f15.OnDraw();
- helicopter.OnDraw();
- stealth.OnDraw();
-
- swap_video_pages();
- }
-
- void AlphaMission::OnEscape(int)
- {
- stop_director();
- }
-
- void AlphaMission::OnScoreUpdate()
- {
- score.add( MsgInt );
- if ( score.GetScore()%5000==0 )
- scroller.SetPixelIncrement( scroller.GetPixelIncrement()+2 );
- }
-
- void AlphaMission::OnHealthUpdate()
- {
- health.minus( MsgInt );
- if ( health.GetLeft()<=0 )
- {
- // display and sound explosion
- stealth.SetStatus( NO );
- DrawAll();
- stealth.SoundDestroy();
- // do the kill thang
- lives.minus();
- if ( lives.GetLeft()==0 )
- stop_director();
- else
- {
- stealth.Reset();
- f15.Reset();
- helicopter.Reset();
- health.Reset();
- health.Setup( 3, 3 );
-
- scroller.SetAtSouthMost();
- scroller.draw();
- score.draw();
- lives.draw();
- }
- }
- }
-
- void AlphaMission::OnStealthHit()
- {
- OnHealthUpdate();
- }
-
- void AlphaMission::OnHelicopterDestroyed()
- {
- DrawAll();
- helicopter.SoundDestroy();
- helicopter.Reset();
- }
-
- void AlphaMission::OnF15Destroyed()
- {
- DrawAll();
- f15.SoundDestroy();
- f15.Reset();
- }
-