home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 300-399 / ff343.lzh / SnakePit / SnakePitSrc.lzh / Snake_Main.c < prev    next >
C/C++ Source or Header  |  1988-07-04  |  3KB  |  121 lines

  1. /*
  2.  * MKSoft SnakePit  Copyright (c) 1988  by Michael Sinz
  3.  *
  4.  * MAIN program...
  5.  */
  6.  
  7. #include    "Snake.h"
  8.  
  9. struct    MsgPort        *Timer;
  10. struct    timerequest    Time_Req;
  11.  
  12. VOID    MyMain()
  13. {
  14. register    struct    IntuiMessage    *msg;
  15. register        USHORT        menu;
  16. register    struct    MenuItem    *TEMP;
  17. register        short        EXIT=TRUE;
  18.             short        Screens_Changed=FALSE;
  19.             short        Scores_Changed=FALSE;
  20.             short        Keys_Changed=FALSE;
  21.             short        UserSpeed=4;
  22.             short        Sound=TRUE;
  23.             short        Drums=TRUE;
  24.  
  25.     if (Timer=CreatePort("MKSoft SnakePit Timer",NULL))
  26.     {
  27.         if (!OpenDevice(TIMERNAME,UNIT_VBLANK,&Time_Req,NULL))
  28.         {
  29.             Time_Req.tr_node.io_Message.mn_ReplyPort=Timer;
  30.             Time_Req.tr_node.io_Command=TR_ADDREQUEST;
  31.             Time_Req.tr_node.io_Flags=0;
  32.             Time_Req.tr_node.io_Error=0;
  33.  
  34.             if (OpenMyWindow())
  35.             {
  36.                 ShowWait();
  37.                 UpDate_Status(0,0L,0);
  38.                 DrawImage(MyWindow->RPort,&Splash,0L,0L);
  39.                 SetUp_For_Save();
  40.                 while(EXIT)
  41.                 {
  42.                     ClearPointer(MyWindow);
  43.                     Sound_Play(6,10000,80);
  44.                     WaitPort(MyWindow->UserPort);
  45.                     ShowWait();
  46.                     while (msg=(struct IntuiMessage *)GetMsg(MyWindow->UserPort))
  47.                     {
  48.                         menu=msg->Code;
  49.                         if (msg->Class==MENUPICK) while(menu!=MENUNULL)
  50.                         {
  51.                             switch (MENUNUM(menu))
  52.                             {
  53.                             case 0:    switch (ITEMNUM(menu))
  54.                                 {
  55.                                 case 0:    Play_Game(UserSpeed);
  56.                                     Scores_Changed=TRUE;
  57.                                     break;
  58.                                 case 1:    ClearPointer(MyWindow);
  59.                                     Request_SelectKeys();
  60.                                     Keys_Changed=TRUE;
  61.                                     break;
  62.                                 case 2:    Edit_Screens();
  63.                                     Screens_Changed=TRUE;
  64.                                     break;
  65.                                 case 3:    if (Drums)
  66.                                     {
  67.                                         Stop_This_Channel(0);
  68.                                         Drums=FALSE;
  69.                                     }
  70.                                     else
  71.                                     {
  72.                                         Start_This_Channel(0);
  73.                                         Drums=TRUE;
  74.                                     }
  75.                                     break;
  76.                                 case 4:    if (Sound)
  77.                                     {
  78.                                         Stop_This_Channel(0);
  79.                                         Stop_This_Channel(1);
  80.                                         Stop_This_Channel(2);
  81.                                         Stop_This_Channel(3);
  82.                                         Sound=FALSE;
  83.                                         Drums=FALSE;
  84.                                     }
  85.                                     else
  86.                                     {
  87.                                         Start_This_Channel(0);
  88.                                         Start_This_Channel(1);
  89.                                         Start_This_Channel(2);
  90.                                         Start_This_Channel(3);
  91.                                         Sound=TRUE;
  92.                                         Drums=TRUE;
  93.                                     }
  94.                                     break;
  95.                                 case 5:    EXIT=FALSE;
  96.                                     break;
  97.                                 case 6:    ClearPointer(MyWindow);
  98.                                     Request_HighScores(0L);
  99.                                     break;
  100.                                 }
  101.                                 break;
  102.                             case 1:    UserSpeed=ITEMNUM(menu)+1;
  103.                                 break;
  104.                             }
  105.                             Show_Title();
  106.                             if (TEMP=ItemAddress(MyWindow->MenuStrip,(long)menu)) menu=TEMP->NextSelect;
  107.                         }
  108.                         ReplyMsg(msg);
  109.                     }
  110.                     DrawImage(MyWindow->RPort,&Splash,0L,0L);
  111.                 }
  112.                 ShowWait();
  113.                 Save_It_Now(Screens_Changed,Scores_Changed,Keys_Changed);
  114.                 CloseMyWindow();
  115.             }
  116.             CloseDevice(&Time_Req);
  117.         }
  118.         DeletePort(Timer);
  119.     }
  120. }
  121.