/*****************************************************************************
 * $Id: eng_types.hh,v 1.50 2005/11/02 23:50:05 devel Exp $
 * @file
 * @author	Jim E. Brooks  http://www.jimbrooks.org
 * @brief	Types.
 *//*
 * LEGAL:	COPYRIGHT (C) 2004 JIM E. BROOKS
 *          THIS SOURCE CODE IS RELEASED UNDER THE TERMS
 *          OF THE GNU GENERAL PUBLIC LICENSE (GPL).
 *****************************************************************************/

#ifndef ENG_TYPES_HH
#define ENG_TYPES_HH 1

typedef int16 Percent;

/// Type signatures.
enum
{
	// Non-library enums should start at TYPESIG_USER (not 0).
	TYPESIG_OBJECT			= TYPESIG_USER,
	TYPESIG_POLYGON,
	TYPESIG_POLYGON_ATTRIBS,
	TYPESIG_POLYGON_LIST,
	TYPESIG_QUADRANT,

	// Type signatures of derived classes.
	TYPESIG_DYNA,			///< derived from Object
	TYPESIG_FIXED,			///< derived from Object
	TYPESIG_OBJECT_PYTHON,	///< derived from Object

	// Following modules should start with this.
	TYPESIG_AFTER_ENGINE,
};

/// @verbatim
/// Speed vs. memory trade-off.
/// fast   : larger cache sizes
/// faster : larger cache sizes + preloaded caches + less LOD
/// fastest: larger cache sizes + preloaded caches + even less LOD
/// @endverbatim
enum eSpeed
{
	eSpeed_NORMAL	= 0,	///< any non-zero value means speed
	eSpeed_FAST		= 1,
	eSpeed_FASTER	= 2,
	eSpeed_FASTEST	= 3	
};

//------------------------------------------------------------------------------

#if COMPILING_ENGINE

/// @brief Parameter struct passed to GfxDriverStart().
struct GfxsysParms
{
	GfxsysParms( void ) { mValid = false; }
	bool	mValid;
	int		mTimerMilsec;
	int		mWindowWidth;
	int		mWindowHeight;
};

#endif // COMPILING_ENGINE

//------------------------------------------------------------------------------

#endif // ENG_TYPES_HH
