home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 2
/
goldfish_vol2_cd1.bin
/
files
/
util
/
blank
/
gblanker
/
source
/
blankers
/
puzzle
/
prefs.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-10-04
|
4KB
|
195 lines
/*
* Copyright (c) 1994 Michael D. Bayne.
* All rights reserved.
*
* Please see the documentation accompanying the distribution for distribution
* and disclaimer information.
*/
#include <libraries/gadtools.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include "Puzzle.h"
#include "Puzzle_rev.h"
#include "/main.h"
#include "//defs.h"
struct ModulePrefs
{
LONG Horiz;
LONG Vert;
LONG Divisions;
LONG Delay;
LONG FadePct;
LONG TopScr;
};
struct ModulePrefs nP;
VOID *OldPrefs = 0L;
STATIC const UBYTE VersTag[] = VERSTAG;
int BT_SAVEClicked( VOID )
{
if( OldPrefs )
{
CopyMem( &nP, OldPrefs, sizeof( struct ModulePrefs ));
SavePrefs( OldPrefs );
OldPrefs = 0L;
}
return QUIT;
}
int BT_TESTClicked( VOID )
{
MessageServer( BM_SENDBLANK );
return OK;
}
int BT_CANCELClicked( VOID )
{
OldPrefs = 0L;
return QUIT;
}
int SL_HORIZClicked( VOID )
{
nP.Horiz = PuzzleMsg.Code;
return OK;
}
int SL_VERTClicked( VOID )
{
nP.Vert = PuzzleMsg.Code;
return OK;
}
int SL_DIVISIONSClicked( VOID )
{
nP.Divisions = PuzzleMsg.Code;
return OK;
}
int SL_DELAYClicked( VOID )
{
nP.Delay = PuzzleMsg.Code;
return OK;
}
int SL_FADEClicked( VOID )
{
nP.FadePct = PuzzleMsg.Code;
return OK;
}
int CY_TOPSCRClicked( VOID )
{
nP.TopScr = PuzzleMsg.Code;
return OK;
}
#define BL_SetGadgetAttrs( Gad, Tag, Val ) GT_SetGadgetAttrs( PuzzleGadgets[Gad], PuzzleWnd, 0L, Tag, Val, TAG_END )
int PuzzleVanillaKey( VOID )
{
switch( PuzzleMsg.Code ) {
case 's':
return BT_SAVEClicked();
case 't':
return BT_TESTClicked();
case 'c':
return QUIT;
case 'h':
BL_SetGadgetAttrs( GD_SL_HORIZ, GTSL_Level, Inc( nP.Horiz, 1, 14 ));
return OK;
case 'H':
BL_SetGadgetAttrs( GD_SL_HORIZ, GTSL_Level, Dec( nP.Horiz, 1, 2 ));
return OK;
case 'v':
BL_SetGadgetAttrs( GD_SL_VERT, GTSL_Level, Inc( nP.Vert, 1, 10 ));
return OK;
case 'V':
BL_SetGadgetAttrs( GD_SL_VERT, GTSL_Level, Dec( nP.Vert, 1, 2 ));
return OK;
case 'd':
BL_SetGadgetAttrs( GD_SL_DIVISIONS, GTSL_Level,
Inc( nP.Divisions, 1, 10 ));
return OK;
case 'D':
BL_SetGadgetAttrs( GD_SL_DIVISIONS, GTSL_Level,
Dec( nP.Divisions, 1, 2 ));
return OK;
case 'l':
BL_SetGadgetAttrs( GD_SL_DELAY, GTSL_Level, Inc( nP.Delay, 1, 20 ));
return OK;
case 'L':
BL_SetGadgetAttrs( GD_SL_DELAY, GTSL_Level, Dec( nP.Delay, 1, 0 ));
return OK;
case 'f':
BL_SetGadgetAttrs( GD_SL_FADE, GTSL_Level, Inc( nP.FadePct, 1, 99 ));
return OK;
case 'F':
BL_SetGadgetAttrs( GD_SL_FADE, GTSL_Level, Dec( nP.FadePct, 1, 0 ));
return OK;
default:
return OK;
}
}
VOID DoPrefs( LONG command, VOID *Prefs )
{
switch( command )
{
case STARTUP:
OldPrefs = Prefs;
CopyMem( Prefs, &nP, sizeof( struct ModulePrefs ));
if( !SetupScreen())
{
PuzzleLeft = ( Scr->Width - ComputeX( PuzzleWidth ))/2 -
Scr->WBorRight;
PuzzleTop = ( Scr->Height - ComputeY( PuzzleHeight ) -
Font->ta_YSize )/2 - Scr->WBorBottom;
if( !OpenPuzzleWindow())
{
BL_SetGadgetAttrs( GD_SL_HORIZ, GTSL_Level, nP.Horiz );
BL_SetGadgetAttrs( GD_SL_VERT, GTSL_Level, nP.Vert );
BL_SetGadgetAttrs( GD_SL_DIVISIONS, GTSL_Level, nP.Divisions );
BL_SetGadgetAttrs( GD_SL_DELAY, GTSL_Level, nP.Delay );
BL_SetGadgetAttrs( GD_SL_FADE, GTSL_Level, nP.FadePct );
BL_SetGadgetAttrs( GD_CY_TOPSCR, GTCY_Active, nP.TopScr );
}
CloseDownScreen();
}
break;
case IDCMP:
if( HandlePuzzleIDCMP() != QUIT )
break;
case KILL:
ClosePuzzleWindow();
break;
}
}
LONG WndSignal( VOID )
{
return PuzzleWnd ? 1L << PuzzleWnd->UserPort->mp_SigBit : 0L;
}
VOID FillDefaults( VOID *Prefs )
{
struct ModulePrefs mPO = { 7L, 5L, 5L, 5L, 10L, 0L };
CopyMem( &mPO, Prefs, sizeof( struct ModulePrefs ));
}