home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 577a.lha / Bomber_v1.2 / Sources.LZH / Sources / main.c < prev    next >
C/C++ Source or Header  |  1991-11-21  |  3KB  |  161 lines

  1. /*
  2.  *     main.c: Ablaufsteuerung
  3.  *
  4.  *     Auto: make Bomber
  5.  *
  6.  */
  7.  
  8.  
  9. #include "Bomber.h"
  10.  
  11. #if 0
  12. # define D(debug) debug
  13. #else
  14. # define D(debug)
  15. #endif
  16.  
  17.  
  18.  
  19. /*------------------------- Externe Daten...*/
  20.  
  21.  
  22. extern struct ExecBase    *SysBase;
  23. extern struct Library    *DOSBase;
  24.  
  25. extern int                time_counter;
  26.  
  27.  
  28. /*------------------------- Daten dieses Moduls...*/
  29.  
  30.  
  31. long                    fenster = 0,    // Signale
  32.                         timer = 0,
  33.                         audio = 0;
  34.  
  35. BOOL                    ende = FALSE;    // s.a. display.c
  36.  
  37. struct MsgPort            *timeport;
  38. struct timerequest        *timereq;
  39.  
  40.  
  41. /*------------------------- Code-Deklarationen...*/
  42.  
  43.  
  44. extern void init_game( void );
  45. extern void init_sound( void );
  46. extern void init_display( void );
  47. extern void init_highscore( void );
  48. extern void close_game( void );
  49. extern void close_sound( void );
  50. extern void close_display( void );
  51. extern void close_highscore( void );
  52.  
  53. extern BOOL handle_window_event( void );
  54. extern void count_down( void );
  55.  
  56. extern void handle_audioreply( void );
  57.  
  58. void close_all( void );
  59.  
  60.  
  61. /*------------------------- Code-Definitionen...*/
  62.  
  63.  
  64. void sendtimereq( long s, long m )
  65. {
  66.     D(PutStr("sendtimereq\n"));
  67.     timereq->tr_time.tv_secs  = s;
  68.     timereq->tr_time.tv_micro = m;
  69.     SendIO( timereq );
  70. }
  71.  
  72.  
  73. void quit( char *msg )
  74. {
  75.     if( msg )
  76.         PutStr( msg );
  77.     
  78.     close_all();
  79. }
  80.  
  81.  
  82. void open_all( void )
  83. {
  84.     D(PutStr("init main\n"));
  85.     
  86.     /* Timer-Device-Stuff */
  87.     timeport = CreateMsgPort();
  88.     timer = 1L << timeport->mp_SigBit;
  89.     timereq = CreateIORequest( timeport, sizeof(struct timerequest) );
  90.     OpenDevice( TIMERNAME, UNIT_VBLANK, timereq, 0 );
  91.     timereq->tr_node.io_Command = TR_ADDREQUEST;
  92.     timereq->tr_node.io_Message.mn_ReplyPort = timeport;
  93.     
  94.     init_highscore();
  95.     init_game();
  96.     init_sound();
  97.     init_display();
  98. }
  99.  
  100.  
  101. void stop_timer( void )
  102. {
  103.     if( time_counter )
  104.     {
  105.         AbortIO( timereq );
  106.         WaitIO( timereq );
  107.         while( GetMsg(timeport) );
  108.         SetSignal( 0, timer );
  109.         
  110.         time_counter = 0;
  111.     }
  112. }
  113.  
  114.  
  115. void close_all( void )
  116. {
  117.     close_display();
  118.     close_sound();
  119.     close_highscore();
  120.     close_game();
  121.     
  122.     D(PutStr("close main\n"));
  123.     
  124.     /* Timer-Device schliessen */
  125.     stop_timer();
  126.     CloseDevice( timereq );
  127.     DeleteIORequest( timereq );
  128.     DeleteMsgPort( timeport );
  129.     
  130.     exit(0);
  131. }
  132.  
  133.  
  134. int main( int argc, char *argv[] )
  135. {
  136.     open_all();
  137.     
  138.     while( !ende )
  139.     {
  140.         long signale = Wait( fenster | timer | audio );
  141.         
  142.         if( signale & timer )
  143.         {
  144.             while( GetMsg(timeport) );
  145.             count_down();
  146.         }
  147.         
  148.         if( signale & fenster )
  149.         {
  150.             ende = handle_window_event();
  151.         }
  152.         
  153.         if( signale & audio )
  154.         {
  155.             handle_audioreply();
  156.         }
  157.     }
  158.     
  159.     close_all();
  160. }
  161.