#ifndef	WILD_H
#define	WILD_H

/*
**	Wild.h	
**
**	Includes for Wild.library. 
**
**	VERY VERY incomplete,now: only some stuff to compile
**	the WildPrefs.library. To convert fully, in a quite near future...
**	(HELP ACCEPTED!!)
*/

#include	<exec/nodes.h>
#include	<exec/libraries.h>

struct  WildTypes
{
 UBYTE	wy_TypeA;
 UBYTE	wy_TypeB;
 UBYTE	wy_TypeC;
 UBYTE	wy_TypeD;
 UBYTE	wy_TypeE;
 UBYTE	wy_TypeF;
 UBYTE	wy_TypeG;
 UBYTE	wy_TypeH;
};

struct  WildModule
{
 struct	Library		wm_Library;
 struct	MinNode		wm_Node;
 struct	Library		*wm_WildBase;
 UWORD			wm_CNT;
 struct	WildTypes	wm_Types;
};

struct  WildEngine
{
 struct	WildModule	*we_Display;
 struct	WildModule	*we_TDCore;
 struct	WildModule	*we_Light;
 struct	WildModule	*we_Draw;
 struct	WildModule	*we_FX;
 struct	WildModule	*we_Sound;
 struct	WildModule	*we_Music;
 struct	WildModule	*we_Broker;
 struct	WildModule	*we_MORE[9];
}; 

struct	WildApp
{
 struct	MsgPort		*wap_WildPort;
 struct Library 	*wap_WildBase;
 struct TagItem		*wap_Tags;
 ULONG			wap_Flags;
 ULONG			*wap_ChipPool;
 ULONG			*wap_FastPool;
 struct WildEngine	wap_Engine;
 struct WildEngine	wap_EngineData;
 ULONG			*wap_FrameBuffer;
 ULONG			*wap_Scene;
 struct WildTypes	wap_Types;
};

/******************************************************************************
*** Tags definitions							*******
******************************************************************************/

#define	WILD_TAGBASE		TAG_USER+('W'<<16)
#define	WILD_PRIVATESTD		WILD_TAGBASE
#define	WILD_SIMPLESTD		WILD_TAGBASE+0x1000000
#define	WILD_COMPLEXSTD		WILD_TAGBASE+0x2000000
#define WILD_OTHERSTD		WILD_TAGBASE+0x4000000

#define	WILD_USERBASE		WILD_TAGBASE+0x8000000
#define	WILD_PRIVATEUSER	WILD_USERBASE		
#define	WILD_SIMPLEUSER		WILD_USERBASE+0x1000000	
#define	WILD_COMPLEXUSER	WILD_USERBASE+0x2000000	

#define WILD_MAXTAG		WILD_TAGBASE+0xFFFFFFF		// upper limit, just to check in wildprefs...

#define WIAP_DisplayModule	WILD_COMPLEXSTD+0
#define WIAP_TDCoreModule	WILD_COMPLEXSTD+1
#define WIAP_LightModule	WILD_COMPLEXSTD+2
#define WIAP_DrawModule		WILD_COMPLEXSTD+3
#define WIAP_FXModule		WILD_COMPLEXSTD+4
#define WIAP_SoundModule	WILD_COMPLEXSTD+5
#define WIAP_MusicModule	WILD_COMPLEXSTD+6
#define WIAP_BrokerModule	WILD_COMPLEXSTD+7

#define	WIAP_TypeABCD		WILD_PRIVATESTD+4
#define	WIAP_TypeEFGH		WILD_PRIVATESTD+5
#define	WIAP_Name		WILD_PRIVATESTD+6
#define	WIAP_BaseName		WILD_PRIVATESTD+7
#define	WIAP_Description	WILD_PRIVATESTD+8
#define	WIAP_PrefsHandle	WILD_PRIVATESTD+9	

#endif