/*****************************************************************************
 * $Id: game_base.hh,v 1.27 2006/08/03 02:55:26 devel Exp $
 * @file
 * @author	Jim E. Brooks  http://www.jimbrooks.org
 * @brief	Game classes.
 *//*
 * LEGAL:	COPYRIGHT (C) 2004 JIM E. BROOKS
 *          THIS SOURCE CODE IS RELEASED UNDER THE TERMS
 *          OF THE GNU GENERAL PUBLIC LICENSE (GPL).
 *****************************************************************************/

#if COMPILING_GAME
#ifndef GAME_BASE_HH
#define GAME_BASE_HH 1

#include "game_base_defs.hh"
#include "gfx.hh"
#include "gfx_config_file.hh"
using namespace gfx;
#include "input_queue.hh"
using namespace gfxInput;
#include "eng.hh"
#include "eng_dyna.hh"
#include "game_base_math.hh"
#include "game_base_config.hh"
#include "game_base_craft.hh"
#include "game_base_joystick.hh"
#include "game_base_debug.hh"		// some of it needed for release

/// Type signatures.
enum
{
	TYPESIG_CRAFT = TYPESIG_AFTER_ENGINE,
	// Following modules should start with this.
	TYPESIG_AFTER_GAME_BASE,
};

// Animation enums.
// Let other modules add eAnimate enums.
#undef  eAnimate
#define eAnimate int
enum //eAnimate
{
	eAnimate_EXPLOSION = eAnimate_AFTER_DYNA_ENUMS,

	// Pilot modes:
	eAnimate_PILOT_TERRAIN_FOLLOW,
	eAnimate_PILOT_PURSUE,

	// Game-specific modules should start their enums from this.
	eAnimate_AFTER_GAME_BASE_ENUMS
};

////////////////////////////////////////////////////////////////////////////////
/// @brief Team class.
class Team
{
	PREVENT_COPYING(Team)
public:
	Team( void ) { }
	std::list<Craft*>	mPlayerList;
	std::list<Team*>	mAllyList;
};

#endif // GAME_BASE_HH
#endif // COMPILING GAME
 
// For public release (release_palomino.sh)
#ifndef PUBLIC_RELEASE
#define PUBLIC_RELEASE 1
#endif
