/* $Filename:       WormWars/Source/init.h $
 * $VER:            WormWars 4.0 (1.11.98) $
 * $Description:    Header file for init.c $
 *
 * © Copyright 1993-1998 James R. Jacobs of Amigan Software.
 * Freely distributable.
 *
 * Release version.

#INCLUDES -------------------------------------------------------------- */

#include <exec/exec.h>				// AT_Recovery, LONG, etc.
#include <dos/dosextens.h>			// struct Process
#include <graphics/displayinfo.h>	// PAL_MONITOR_ID, etc.
#include <intuition/gadgetclass.h>	// STRINGA_ReplaceMode
#include <libraries/asl.h>			// ASL_FileRequest
#include <devices/input.h>

#include <stdio.h>					// FILE, printf()
#include <stdlib.h>					// EXIT_SUCCESS, EXIT_FAILURE

#include "ww.h"
#include "libproto.h"

/* #DEFINES ---------------------------------------------------------------

sample volumes (possible values are 0..64) */

#define SOFT	32
#define LOUD	64		// normally should stay at 64

// PRIVATE STRUCTURES -----------------------------------------------------

struct NewMenu NewMenu[MENUENTRIES] =
{	{	NM_TITLE,	"Project",		 0 , 0,													0,		0},
	{	 NM_ITEM,	"New",			"N", 0,													0,		0},
	{	 NM_ITEM,	"Open...",		"O", 0,													0,		0},
	{	 NM_ITEM,	"Save",			"S", 0,													0,		0},
	{	 NM_ITEM,	"Save As...",	"A", 0,													0,		0},
	{	 NM_ITEM,	NM_BARLABEL,	 0 , 0,															0,		0},
	{	 NM_ITEM,	"About...",		"?", 0,															0,		0},
	{	 NM_ITEM,	NM_BARLABEL,	 0 , 0,															0,		0},
	{	 NM_ITEM,	"Quit",			"Q", 0,													0,		0},
	{	NM_TITLE,	"Module",		 0 , 0,													0,		0},
	{	 NM_ITEM,	"Title Screen",	 0 , CHECKIT | MENUTOGGLE | CHECKED | NM_ITEMDISABLED,	~(1 << 1),	0},
	{	 NM_ITEM,	"Field Editor",	 0 , CHECKIT | MENUTOGGLE,								~(1 << 2),	0},
	{	NM_TITLE,	"Level",		 0 , NM_MENUDISABLED,									0,		0},
	{	 NM_ITEM,	"Insert",		"I", 0,													0,		0},
	{	 NM_ITEM,	"Delete",		"D", 0,													0,		0},
	{	 NM_ITEM,	"Erase",		"E", 0,													0,		0},
	{	 NM_ITEM,	"Append",		"K", 0,													0,		0},
	{	  NM_END,	NULL,			 0 , 0,													0,		0}
};
struct GamePortTrigger Trigger =
{	GPTF_DOWNKEYS,
	65535,
	1, 1
};
struct NewGadget CycleGadget =
{	284, 0,
	128, 13,
	ILLEGAL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL
};
struct NewGadget StringGadget =
{	289, 0,
	192, 12,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL
};

struct SampStruct samp[SAMPLES + 1] =
{	{   "fx/killerfire.8svx",	SOFT,	FALSE	},	//  0 FXKILLERFIRE
	{"fx/protectorborn.8svx",	SOFT,	FALSE	},	//  1 FXPROTECTORBORN
	{ "fx/timebombtick.8svx",	LOUD,	FALSE	},	//  2 FXTIMEBOMBTICK
	{    "fx/getgrower.8svx",	SOFT,	FALSE	},	//  3 FXGETGROWER
	{"fx/missileactive.8svx",	LOUD,	TRUE	},	//  4 FXMISSILEACTIVE
	{    "fx/fileabout.8svx",	LOUD,	FALSE	},	//  5 FXFILEABOUT
	{   "fx/getpowerup.8svx",	LOUD,	FALSE	},	//  6 FXGETPOWERUP
	{  "fx/useteleport.8svx",	SOFT,	FALSE	},	//  7 FXUSETELEPORT
	{    "fx/wormdeath.8svx",	LOUD,	FALSE	},	//  8 FXWORMDEATH
	{      "fx/getammo.8svx",	LOUD,	FALSE	},	//  9 FXGETAMMO
	{      "fx/explode.8svx",	SOFT,	FALSE	},	// 10 FXEXPLODE
	{   "fx/killerborn.8svx",	SOFT,	FALSE	},	// 11 FXKILLERBORN
	{      "fx/orbborn.8svx",	SOFT,	FALSE	},	// 12 FXORBBORN
	{         "fx/pain.8svx",	SOFT,	FALSE	},	// 13 FXPAIN
	{        "fx/shoot.8svx",	SOFT,	FALSE	},	// 14 FXSHOOT
	{  "fx/titlescreen.8svx",	SOFT,	FALSE	},	// 15 FXTITLESCREEN
	{      "fx/victory.8svx",	SOFT,	FALSE	},	// 16 FXVICTORY
	{      "fx/filenew.8svx",	LOUD,	FALSE	},	// 17 FXFILENEW
	{     "fx/fileopen.8svx",	LOUD,	FALSE	},	// 18 FXFILEOPEN
	{     "fx/filesave.8svx",	LOUD,	FALSE	},	// 19 FXFILESAVE
	{    "fx/bombblast.8svx",	SOFT,	FALSE	},	// 20 FXBOMBBLAST
	{	    "fx/defeat.8svx",	LOUD,	FALSE	},	// 21 FXDEFEAT
	{   "fx/endoflevel.8svx",	LOUD,	FALSE	},	// 22 FXENDOFLEVEL
	{        "fx/click.8svx",	SOFT,	FALSE	},	// 23 FXCLICK
	{    "fx/usearmour.8svx",	SOFT,	FALSE	},	// 24 FXUSEARMOUR
	{    "fx/getobject.8svx",	SOFT,	FALSE	},	// 25 FXGETOBJECT
	{    "fx/timealert.8svx",	SOFT,	FALSE	},	// 26 FXTIMEALERT
    {     "fx/orbsplit.8svx",	SOFT,	FALSE   },  // 27 FXORBSPLIT
    {     "fx/orbdeath.8svx",	SOFT,	FALSE   },  // 28 FXORBDEATH
	{   "fx/filesaveas.8svx",	LOUD,	FALSE	},	// 29 FXFILESAVEAS
	{           "fx/fx.8svx",	SOFT,	FALSE	},	// 30 FXFX
	{     "fx/getnitro.8svx",	LOUD,	FALSE	},	// 31 FXGETNITRO
	{         "fx/jump.8svx",	SOFT,	FALSE	},	// 32 FXJUMP
	{            "fx/C.8svx",	LOUD,	FALSE	},	// 33 FX_C
	{            "fx/O.8svx",	LOUD,	FALSE	},	// 34 FX_O
	{            "fx/M.8svx",	LOUD,	FALSE	},	// 35 FX_M
	{            "fx/P.8svx",	LOUD,	FALSE	},	// 36 FX_P
	{            "fx/L.8svx",	LOUD,	FALSE	},	// 37 FX_L
	{            "fx/E.8svx",	LOUD,	FALSE	},	// 38 FX_E
	{            "fx/T.8svx",	LOUD,	FALSE	},	// 39 FX_T
	{    "fx/highscore.8svx",	SOFT,	FALSE	},	// 40 FXHISCORE
	{         "fx/thud.8svx",	SOFT,	FALSE	},	// 41 FXTHUD
	{  "fx/killerdeath.8svx",	SOFT,	FALSE	},	// 42 FXKILLERDEATH
	{     "fx/getskull.8svx",	SOFT,	FALSE	},	// 43 FXGETSKULL
	{    "fx/usetongue.8svx",	SOFT,	TRUE	}	// 44 FXUSETONGUE
};

// ARRAYS -----------------------------------------------------------------

STRPTR GadgetText[] =
{	"Worm _1:",
	"Worm _2:",
	"Worm _3:",
	"Worm _4:"
};

STRPTR sfxerror[] =
{	"No errors.",
	"Can't open file!",					// loadsample()...
	"Can't read file!",
	"Not an IFF 8SVX; too short!",
	"Not an IFF FORM!",
	"No memory for read!",
	"Read error!",
	"Malformed IFF; too short!",
	"Not an IFF 8SVX!",
	"No chip memory!",
	"No I/O memory!",					// setupsound()...
	"No port!",
	"Can't allocate channels for samples!"
};

UBYTE* GadgetOptions[4][4] =
{	{	(UBYTE *) "None",
		(UBYTE *) "Amiga",
		(UBYTE *) "Lt. Kybd",
		NULL
	},
	{	(UBYTE *) "None",
		(UBYTE *) "Amiga",
		(UBYTE *) "Rt. Kybd",
		NULL
	},
	{	(UBYTE *) "None",
		(UBYTE *) "Amiga",
		(UBYTE *) "Joystick",
		NULL
	},
	{	(UBYTE *) "None",
		(UBYTE *) "Amiga",
		NULL,
		NULL
}	};

// Must have blank line at EOF.
