/*
 *  Source machine generated by GadToolsBox V2.0b
 *  which is (c) Copyright 1991-1993 Jaba Development
 *
 *  GUI Designed by : Rick Keller
 */

#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <libraries/gadtools.h>
#include <graphics/displayinfo.h>
#include <graphics/gfxbase.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
#include <clib/utility_protos.h>
#include <string.h>

#include "Euchresetts3.h"

struct Screen         *Scr = NULL;
UBYTE                 *PubScreenName = "Workbench";
APTR                   VisualInfo = NULL;
struct Window         *settingsWnd = NULL;
struct Gadget         *settingsGList = NULL;
struct IntuiMessage    settingsMsg;
struct Gadget         *settingsGadgets[11];
UWORD                  settingsLeft = 166;
UWORD                  settingsTop = 79;
UWORD                  settingsWidth = 315;
UWORD                  settingsHeight = 297;
UBYTE                 *settingsWdt = (UBYTE *)"Euchre Settings";

UBYTE *Player10Labels[] = {
	(UBYTE *)".",
	(UBYTE *)".",
	(UBYTE *)".",
	NULL };

UBYTE *Player20Labels[] = {
	(UBYTE *)"(new)",
	(UBYTE *)"(new)",
	(UBYTE *)"(new)",
	NULL };

UBYTE *Player30Labels[] = {
	(UBYTE *)"(new)",
	(UBYTE *)"(new)",
	(UBYTE *)"(new)",
	NULL };

UBYTE *LonerValue0Labels[] = {
	(UBYTE *)"3 pts.",
	(UBYTE *)"4 pts.",
	NULL };

UBYTE *EndEarly0Labels[] = {
	(UBYTE *)"On",
	(UBYTE *)"Off",
	NULL };

UBYTE *GameSpeed0Labels[] = {
	(UBYTE *)"Slow",
	(UBYTE *)"Normal",
	(UBYTE *)"Fast",
	(UBYTE *)"Ridiculous",
	NULL };

struct TextAttr topaz8 = {
	( STRPTR )"topaz.font", 8, 0x00, 0x01 };

struct IntuiText settingsIText[] = {
	1, 0, JAM2,113, 10, &topaz8, (UBYTE *)"Playing Styles", &settingsIText[1],
	1, 0, JAM2,73, 34, &topaz8, (UBYTE *)"Player 1", &settingsIText[2],
	1, 0, JAM2,157, 34, &topaz8, (UBYTE *)"Player 2", &settingsIText[3],
	1, 0, JAM2,237, 34, &topaz8, (UBYTE *)"Player 3", &settingsIText[4],
	1, 0, JAM2,1, 58, &topaz8, (UBYTE *)"Conservative", &settingsIText[5],
	1, 0, JAM2,5, 70, &topaz8, (UBYTE *)"Moderate", &settingsIText[6],
	1, 0, JAM2,1, 82, &topaz8, (UBYTE *)"Risky", &settingsIText[7],
	1, 0, JAM2,33, 122, &topaz8, (UBYTE *)"Game Speed", &settingsIText[8],
	1, 0, JAM2,181, 122, &topaz8, (UBYTE *)"Loner Value", &settingsIText[9],
	1, 0, JAM2,185, 178, &topaz8, (UBYTE *)"End Early", NULL };

UWORD settingsGTypes[] = {
	MX_KIND,
	MX_KIND,
	MX_KIND,
	MX_KIND,
	MX_KIND,
	MX_KIND,
	BUTTON_KIND,
	BUTTON_KIND,
	BUTTON_KIND,
	TEXT_KIND,
	BUTTON_KIND
};

struct NewGadget settingsNGad[] = {
	101, 56, 17, 9, NULL, NULL, GD_Player1, PLACETEXT_LEFT, NULL, (APTR)Player1Clicked,
	173, 56, 17, 9, NULL, NULL, GD_Player2, PLACETEXT_LEFT, NULL, (APTR)Player2Clicked,
	255, 56, 17, 9, NULL, NULL, GD_Player3, PLACETEXT_LEFT, NULL, (APTR)Player3Clicked,
	211, 136, 17, 9, NULL, NULL, GD_LonerValue, PLACETEXT_LEFT, NULL, (APTR)LonerValueClicked,
	211, 192, 17, 9, NULL, NULL, GD_EndEarly, PLACETEXT_LEFT, NULL, (APTR)EndEarlyClicked,
	97, 137, 17, 9, NULL, NULL, GD_GameSpeed, PLACETEXT_LEFT, NULL, (APTR)GameSpeedClicked,
	33, 264, 53, 13, (UBYTE *)"Save", NULL, GD_Save, PLACETEXT_IN, NULL, (APTR)SaveClicked,
	123, 264, 53, 13, (UBYTE *)"Use", NULL, GD_Use, PLACETEXT_IN, NULL, (APTR)UseClicked,
	219, 264, 53, 13, (UBYTE *)"Cancel", NULL, GD_Cancel, PLACETEXT_IN, NULL, (APTR)CancelClicked,
	17, 212, 141, 13, (UBYTE *)"Screen Mode", NULL, GD_Show_Current_Mode, PLACETEXT_ABOVE, NULL, NULL,
	161, 236, 21, 11, (UBYTE *)"Change Screen Mode", NULL, GD_chg_scrn_mode, PLACETEXT_LEFT, NULL, (APTR)chg_scrn_modeClicked
};

ULONG settingsGTags[] = {
	(GTMX_Labels), (ULONG)&Player10Labels[ 0 ], (GTMX_Spacing), 4, (TAG_DONE),
	(GTMX_Labels), (ULONG)&Player20Labels[ 0 ], (GTMX_Spacing), 4, (TAG_DONE),
	(GTMX_Labels), (ULONG)&Player30Labels[ 0 ], (GTMX_Spacing), 4, (TAG_DONE),
	(GTMX_Labels), (ULONG)&LonerValue0Labels[ 0 ], (GTMX_Spacing), 4, (TAG_DONE),
	(GTMX_Labels), (ULONG)&EndEarly0Labels[ 0 ], (GTMX_Spacing), 4, (TAG_DONE),
	(GTMX_Labels), (ULONG)&GameSpeed0Labels[ 0 ], (GTMX_Spacing), 4, (TAG_DONE),
	(TAG_DONE),
	(TAG_DONE),
	(TAG_DONE),
	(GTTX_Text), (ULONG)"Current Screen Mode", (GTTX_Border), TRUE, (TAG_DONE),
	(TAG_DONE)
};

int SetupScreen( void )
{
	if ( ! ( Scr = LockPubScreen( PubScreenName )))
		return( 1L );

	if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
		return( 2L );

	return( 0L );
}

void CloseDownScreen( void )
{
	if ( VisualInfo ) {
		FreeVisualInfo( VisualInfo );
		VisualInfo = NULL;
	}

	if ( Scr        ) {
		UnlockPubScreen( NULL, Scr );
		Scr = NULL;
	}
}

void settingsRender( void )
{
	UWORD		offx, offy;

	offx = settingsWnd->BorderLeft;
	offy = settingsWnd->BorderTop;

	PrintIText( settingsWnd->RPort, settingsIText, offx, offy );
}

int HandlesettingsIDCMP( void )
{
	struct IntuiMessage	*m;
	int			(*func)();
	BOOL			running = TRUE;

	while( m = GT_GetIMsg( settingsWnd->UserPort )) {

		CopyMem(( char * )m, ( char * )&settingsMsg, (long)sizeof( struct IntuiMessage ));

		GT_ReplyIMsg( m );

		switch ( settingsMsg.Class ) {

			case	IDCMP_REFRESHWINDOW:
				GT_BeginRefresh( settingsWnd );
				settingsRender();
				GT_EndRefresh( settingsWnd, TRUE );
				break;

			case	IDCMP_CLOSEWINDOW:
				running = settingsCloseWindow();
				break;

			case	IDCMP_GADGETUP:
			case	IDCMP_GADGETDOWN:
				func = ( void * )(( struct Gadget * )settingsMsg.IAddress )->UserData;
				running = func();
				break;
		}
	}
	return( running );
}

int OpensettingsWindow( void )
{
	struct NewGadget	ng;
	struct Gadget	*g;
	UWORD		lc, tc;
	UWORD		offx = Scr->WBorLeft, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;

	if ( ! ( g = CreateContext( &settingsGList )))
		return( 1L );

	for( lc = 0, tc = 0; lc < settings_CNT; lc++ ) {

		CopyMem((char * )&settingsNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));

		ng.ng_VisualInfo = VisualInfo;
		ng.ng_TextAttr   = &topaz8;
		ng.ng_LeftEdge  += offx;
		ng.ng_TopEdge   += offy;

		settingsGadgets[ lc ] = g = CreateGadgetA((ULONG)settingsGTypes[ lc ], g, &ng, ( struct TagItem * )&settingsGTags[ tc ] );

		while( settingsGTags[ tc ] ) tc += 2;
		tc++;

		if ( NOT g )
			return( 2L );
	}

	if ( ! ( settingsWnd = OpenWindowTags( NULL,
				WA_Left,	settingsLeft,
				WA_Top,		settingsTop,
				WA_Width,	settingsWidth,
				WA_Height,	settingsHeight + offy,
				WA_IDCMP,	MXIDCMP|BUTTONIDCMP|TEXTIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
				WA_Flags,	WFLG_SMART_REFRESH,
				WA_Gadgets,	settingsGList,
				WA_Title,	settingsWdt,
				WA_ScreenTitle,	"GadToolsBox V2.0b © 1991-1993",
				TAG_DONE )))
	return( 4L );

	GT_RefreshWindow( settingsWnd, NULL );

	settingsRender();

	return( 0L );
}

void ClosesettingsWindow( void )
{
	if ( settingsWnd        ) {
		CloseWindow( settingsWnd );
		settingsWnd = NULL;
	}

	if ( settingsGList      ) {
		FreeGadgets( settingsGList );
		settingsGList = NULL;
	}
}

