home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1996 Christmas / macformat-045.iso / Shareware Plus / Developers / NGL1.5.0E(fat)DEMO / Snow Demo(PPC) / Snow Demo(PPC).c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-19  |  5.8 KB  |  259 lines  |  [TEXT/CWIE]

  1. /*============================================================
  2.  
  3.                     Snow  demo program
  4.                     
  5. ============================================================*/
  6.  
  7. #include        "N_Library.h"
  8.  
  9. void            Main_Process(void);
  10. void            Key_Process(void);
  11. WindowPtr         CreateWindow(Str255 name);
  12.  
  13. #define            WindowSizeX        640
  14. #define            WindowSizeY        480
  15.  
  16. short            NewWindowX;
  17. short            NewWindowY;
  18. short            Data_Rsrc = 0;
  19. long            routine_step = 0;
  20. long            wait;
  21. short            S1_X[1024];
  22. short            S1_Y[1024];
  23. unsigned short    S1_D[1024];
  24. short            r = 0,rs=0;
  25. short            lx=640;
  26. short            speed  = -3;
  27. Boolean            q = false;
  28. Boolean            kb=false;
  29. EventRecord        theEvent;
  30. short            Snd_List0[]     = {1000,1001,1002,0};
  31. short            Music1[]         = { 1002,-1 };
  32.  
  33. void main(void)
  34. {
  35.     WindowPtr    window;
  36.     short         i;
  37.  
  38.     ToolboxInit();
  39.     ColorCheck();
  40.     HideMenuBar();
  41.     window = CreateWindow("\pPUSH 'Q' TO QUIT");
  42.     N_Window_Set(window,NewWindowX,NewWindowY,WindowSizeX,WindowSizeY);
  43.     N_Sp_Make(640,480);
  44.     N_Cel_Make(150000);
  45.     Open_Resource_File(128,1,&Data_Rsrc);
  46. //    Set Kanban Sprites <Sprites & Cel> (Sprite 256)
  47.     N_Sprite_Set(130,50,12,16,1,13,4,0);                        //Set font sprites (Sp50-)
  48.     Through_Col = 0xff;    
  49.     N_Sprite_Set(200,256,216,88,0,1,1,0);                        //wood panel (Sp 256)
  50. //    Set Snow Sprites (Sprite 30-46)
  51.     N_Sprite_Set(404,30,32,32,0,1,1,2);                        //snow (2=zoom out mode,16lev) (Sp 30-46)
  52.     N_Sprite_Set(419,46,8,8,0,1,1,0);
  53.     Through_Col = 0x00;
  54.     N_Sprite_Set(132,100,25,26,1,6,1,0);                        //button(Sp 100-105)
  55.     N_Sprite_Set(133,110,208,120,0,1,1,0);                    //control panel(Sp 110)
  56.     N_Font_Set(0,0x80000000+50,0,0x80000000+76,0x80000000+87);        //Font Set 0 
  57.     N_Pict_Draw(131,0,0,(GrafPtr)SP_off,true);                    //draw background on SP_Off
  58.     N_Sound_Load(&Snd_List0[0]);                                //set sounds
  59.     N_Music_Set(1,&Music1[0]);                                //set Music 1
  60.     N_Music_Play(1);                                        //play Music 1
  61.  
  62. //    Button Set-up
  63.     N_Button_Set(0,0,1,10,404,512,0x80000000+100,0x80000000+101,1000,1001);    //Q Button
  64.     N_Button_Set(0,1,1,40,404,512,0x80000000+102,0x80000000+103,1000,1001);    //C Button
  65.     N_Button_Set(0,2,1,130,364,40,0x80000000+104,0x80000000+105,1000,1001);    //up Button
  66.     N_Button_Set(0,3,1,130,442,40,0x80000000+104,0x80000000+105,1000,1001);    //down Button
  67.     N_Button_Set(0,4,1,93,404,40,0x80000000+104,0x80000000+105,1000,1001);    //left Button
  68.     N_Button_Set(0,5,1,167,404,40,0x80000000+104,0x80000000+105,1000,1001);    //right Button
  69.  
  70.     Close_Resource_File(&Data_Rsrc);
  71.  
  72.     routine_step = 0;
  73.     for (i = 0;i!=1024;i++)
  74.     {
  75.         N_Cel_Kill(i);                                        //kill plane info
  76.         S1_X[i] = GetRandom(0,640*32)-640*16;                //make random points
  77.         S1_Y[i] = GetRandom(0,480*32)-480*16;
  78.         S1_D[i] = GetRandom(1,255);
  79.     }
  80.  
  81.     N_Pict_Effect (131,0,0,3,0,0);
  82.     for (i=0;i!=32;i++)
  83.     {
  84.         Delay(1,&wait);
  85.         N_Pict_Effect (131,0,0,3,1,0);
  86.         N_Pict_Effect (131,0,0,3,1,0);
  87.         N_Pict_Effect (131,0,0,3,1,0);
  88.         N_Pict_Effect (131,0,0,3,1,0);
  89.         N_Pict_Effect (131,0,0,3,1,0);
  90.         N_Pict_Effect (131,0,0,3,1,0);
  91.         N_Pict_Effect (131,0,0,3,1,0);
  92.         N_Pict_Effect (131,0,0,3,1,0);
  93.     }
  94.     N_Button_Put(0);
  95.  
  96.     do
  97.     {
  98.         Main_Process();
  99.     }
  100.     while (q==false);
  101.     N_Music_Out(90);                                        //fade out
  102.     do
  103.     {
  104.     }
  105.     while (FO_Flag == true);
  106.     ShowMenuBar();
  107.     N_Music_Kill();
  108.     N_Sound_Close();                                        //close sound channels
  109.     ColorRevert();
  110.  
  111. }
  112.  
  113. void Main_Process(void)
  114. {
  115.     short            i,x,y,ii,p = 0,dist,bt;
  116.     long            wrk;
  117.     long            xx,yy;
  118.     char            key;
  119.     Boolean            emp;
  120.     Point            mp;
  121.  
  122.     N_Cel_Put(950,0x80000000+110,4,356);                    //panel
  123.     
  124.     Key_Process();
  125.     routine_step++;
  126.     N_Font_Put("\pTHANK YOU FOR DOWNLOADING/",lx,10,14,0,1,800);
  127.     lx-=3;
  128.     if (lx <= -600) lx=640;
  129.     
  130.     if (routine_step<64)                                        //move & put a wood panel
  131.     {
  132.         N_Cel_Put(899,0x80000000+256,212,(short)(routine_step*4-92));
  133.     }
  134.     if (routine_step>=64 && routine_step<192)
  135.     {
  136.         N_Cel_Put(899,0x80000000+256,212,164);
  137.     }        
  138.     if (routine_step>=192 && routine_step <300)
  139.     {
  140.         N_Cel_Put(899,0x80000000+256,212,(short)164+((routine_step-192)*5));
  141.     }
  142.  
  143.     if (routine_step < 700) ii = routine_step;                        //max 700 snows
  144.         else    ii = 700;
  145.  
  146.     for (i = 0;i!=ii;i++)
  147.     {
  148.         x = S1_X[i];
  149.         y = S1_Y[i];
  150.  
  151.         wrk = S1_D[i];
  152.         wrk = wrk / 16;
  153.         wrk = 16-wrk;
  154.  
  155.         if (wrk>14) wrk = 15;
  156.  
  157.         N_Cel_3D_Put(i,0x80000000+30+wrk,x,y,320,240,r,S1_D[i]);        //put a snow
  158.         dist = S1_D[i] + speed;
  159.         if (dist <  0)
  160.         {
  161.             dist = 512+dist;
  162.             N_Cel_Get(i,&emp,&xx,&x,&y);
  163.             N_Sp_Put(0x80000000+46,x-4,y-4);
  164.  
  165.             S1_X[i] = GetRandom(0,640*32)-640*16;
  166.             S1_Y[i] = GetRandom(0,480*32)-480*16;
  167.         }            
  168.  
  169.         if (dist > 255)    
  170.         {
  171.             dist = dist -256;            
  172.  
  173.             S1_X[i] = GetRandom(0,640*32)-640*16;
  174.             S1_Y[i] = GetRandom(0,480*32)-480*16;
  175.         }            
  176.  
  177.  
  178.         S1_D[i] = dist;
  179.     }
  180.     r=r+rs;
  181.     N_Cel_Loop(0,0);
  182.  
  183.     bt=N_Button_Check(0);
  184.  
  185.     if (bt==0) q=true;
  186.     if (bt==1) N_Pict_Draw(131,0,0,(GrafPtr)SP_off,true);                //re-draw background
  187.     if (bt==2)    speed--;
  188.     if (bt==3)    speed++;
  189.     if (bt==4)    rs++;
  190.     if (bt==5)    rs--;
  191. }
  192.  
  193. void Key_Process(void)
  194. {
  195.     char        ky;
  196.     
  197.     ky = N_Key_Get();
  198.     if (kb == false)
  199.     {
  200.         if ((ky & 0x01) !=0)
  201.         {
  202.             speed++;
  203.             N_Button_Push(0,3);
  204.             kb = true;
  205.         }    
  206.         if ((ky & 0x02) !=0)
  207.         {
  208.             rs++;
  209.             N_Button_Push(0,4);
  210.             kb = true;
  211.         }
  212.         if ((ky & 0x04) !=0)
  213.         {
  214.             rs--;
  215.             N_Button_Push(0,5);
  216.             kb = true;
  217.         }
  218.         if ((ky & 0x08) !=0)
  219.         {
  220.             speed--;
  221.             N_Button_Push(0,2);
  222.             kb = true;
  223.         }
  224.  
  225.         if ((ky & 0x40) !=0)
  226.         {
  227.             N_Pict_Draw(131,0,0,(GrafPtr)SP_off,true);            //re-draw background
  228.             N_Button_Push(0,1);
  229.             kb = true;
  230.         }
  231.     }
  232.     if ((ky & 0x80) !=0)
  233.     {
  234.         N_Button_Push(0,0);
  235.          q = true;
  236.     }
  237.     if (ky==0) kb = 0;
  238. }
  239.  
  240. WindowPtr CreateWindow (Str255 name)
  241. {
  242.     WindowPtr    window;
  243.     short        centerX,centerY;
  244.     short        windowWidth,windowHeight;
  245.  
  246.     window = GetNewWindow (128,nil,(WindowPtr)-1L );
  247.     centerX  = (qd.screenBits.bounds.right -qd.screenBits.bounds.left)/2;
  248.     centerY  = (qd.screenBits.bounds.bottom -qd.screenBits.bounds.top)/2;
  249.     SetWTitle(window,name);
  250.     MoveWindow(window,NewWindowX=centerX-(WindowSizeX/2),NewWindowY=centerY-(WindowSizeY/2),false);
  251.     SizeWindow(window,WindowSizeX,WindowSizeY,TRUE);
  252.  
  253.     ShowWindow(window);
  254.     SetPort((GrafPtr)window );
  255.     return (WindowPtr)window;
  256. }
  257.     
  258.  
  259.