home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / util / blank / gblanker / source / blankers / life / prefs.c < prev    next >
C/C++ Source or Header  |  1994-10-03  |  3KB  |  166 lines

  1. /*
  2.  *  Copyright (c) 1993 Michael D. Bayne.
  3.  *  All rights reserved.
  4.  *
  5.  *  Please see the documentation accompanying the distribution for distribution
  6.  *  and disclaimer information.
  7.  */
  8.  
  9. #include <libraries/gadtools.h>
  10.  
  11. #include <clib/exec_protos.h>
  12. #include <clib/intuition_protos.h>
  13. #include <clib/gadtools_protos.h>
  14.  
  15. #include "/Garshnelib/Garshnelib_protos.h"
  16. #include "/Garshnelib/Garshnelib_pragmas.h"
  17.  
  18. #include "Life.h"
  19. #include "Life_rev.h"
  20. #include "/main.h"
  21. #include "//defs.h"
  22.  
  23. struct ModulePrefs {
  24.     LONG Mode;
  25.     LONG Depth;
  26.     LONG Delay;
  27.     LONG Generations;
  28.     LONG Density;
  29. };
  30.  
  31. struct ModulePrefs nP;
  32. VOID *OldPrefs = 0L;
  33. STATIC const UBYTE VersTag[] = VERSTAG;
  34.  
  35. int BT_SAVEClicked( VOID )
  36. {
  37.     if( OldPrefs )
  38.     {
  39.         CopyMem( &nP, OldPrefs, sizeof( struct ModulePrefs ));
  40.         SavePrefs( OldPrefs );
  41.         OldPrefs = 0L;
  42.     }
  43.     
  44.     return QUIT;
  45. }
  46.  
  47. int BT_TESTClicked( VOID )
  48. {
  49.     MessageServer( BM_SENDBLANK );
  50.  
  51.     return OK;
  52. }
  53.  
  54. int BT_SCREENClicked( VOID )
  55. {
  56.     ScreenModeRequest( LifeWnd, &nP.Mode, &nP.Depth );
  57.     
  58.     return OK;
  59. }
  60.  
  61. int BT_CANCELClicked( VOID )
  62. {
  63.     OldPrefs = 0L;
  64.     
  65.     return QUIT;
  66. }
  67.  
  68. int SL_DELAYClicked( VOID )
  69. {
  70.     nP.Delay = LifeMsg.Code;
  71.  
  72.     return OK;
  73. }
  74.  
  75. int SL_GENSClicked( VOID )
  76. {
  77.     nP.Generations = LifeMsg.Code;
  78.  
  79.     return OK;
  80. }
  81.  
  82. int SL_DENSITYClicked( VOID )
  83. {
  84.     nP.Density = LifeMsg.Code;
  85.  
  86.     return OK;
  87. }
  88.  
  89. #define BL_SetGadgetAttrs( Gad, Tag, Val ) GT_SetGadgetAttrs( LifeGadgets[Gad], LifeWnd, 0L, Tag, Val, TAG_END )
  90.  
  91. int LifeVanillaKey( VOID )
  92. {
  93.     switch( LifeMsg.Code ) {
  94.     case 's':
  95.         return BT_SAVEClicked();
  96.     case 't':
  97.         return BT_TESTClicked();
  98.     case 'd':
  99.         return BT_SCREENClicked();
  100.     case 'c':
  101.         return QUIT;
  102.     case 'l':
  103.         BL_SetGadgetAttrs( GD_SL_DELAY, GTSL_Level, Inc( nP.Delay, 1, 120 ));
  104.         return OK;
  105.     case 'L':
  106.         BL_SetGadgetAttrs( GD_SL_DELAY, GTSL_Level, Dec( nP.Delay, 1, 0 ));
  107.         return OK;
  108.     case 'g':
  109.         BL_SetGadgetAttrs( GD_SL_GENS, GTSL_Level, Inc( nP.Generations, 1, 999 ));
  110.         return OK;
  111.     case 'G':
  112.         BL_SetGadgetAttrs( GD_SL_GENS, GTSL_Level, Dec( nP.Generations, 1, 5 ));
  113.         return OK;
  114.     case 'n':
  115.         BL_SetGadgetAttrs( GD_SL_DENSITY, GTSL_Level, Inc( nP.Density, 1, 99 ));
  116.         return OK;
  117.     case 'N':
  118.         BL_SetGadgetAttrs( GD_SL_DENSITY, GTSL_Level, Dec( nP.Density, 1, 1 ));
  119.         return OK;
  120.     default:
  121.         return OK;
  122.     }
  123. }
  124.  
  125. VOID DoPrefs( LONG command, VOID *Prefs )
  126. {
  127.     switch( command )
  128.     {
  129.     case STARTUP:
  130.         OldPrefs = Prefs;
  131.         CopyMem( Prefs, &nP, sizeof( struct ModulePrefs ));
  132.         if( !SetupScreen())
  133.         {
  134.             LifeLeft = ( Scr->Width - ComputeX( LifeWidth ))/2 - Scr->WBorRight;
  135.             LifeTop = ( Scr->Height - ComputeY( LifeHeight ) - Font->ta_YSize )/2 - Scr->WBorBottom;
  136.             if( !OpenLifeWindow())
  137.             {
  138.                 BL_SetGadgetAttrs( GD_SL_DELAY, GTSL_Level, nP.Delay );
  139.                 BL_SetGadgetAttrs( GD_SL_GENS, GTSL_Level, nP.Generations );
  140.                 BL_SetGadgetAttrs( GD_SL_DENSITY, GTSL_Level, nP.Density );
  141.             }
  142.             CloseDownScreen();
  143.         }
  144.         break;
  145.     case IDCMP:
  146.         if( HandleLifeIDCMP() != QUIT )
  147.             break;
  148.     case KILL:
  149.         CloseLifeWindow();
  150.         break;
  151.     }
  152. }
  153.  
  154. LONG WndSignal( VOID )
  155. {
  156.     return LifeWnd ? 1L << LifeWnd->UserPort->mp_SigBit : 0L;
  157. }
  158.  
  159. VOID FillDefaults( VOID *Prefs )
  160. {
  161.     struct ModulePrefs mPO = { 0L, 3L, 0L, 150L, 16L };
  162.  
  163.     mPO.Mode = getTopScreenMode();
  164.     CopyMem( &mPO, Prefs, sizeof( struct ModulePrefs ));
  165. }
  166.