
///////////////////////////////////////////////////////////////////////////////
//
// File   : AVP_ProjectConfiguration.h
// Author : Andy Tate
// Date   : 5-Oct-2006
//
// Copyright (C) 2006 Rebellion, All Rights Reserved.
//
///////////////////////////////////////////////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
	#pragma once
#endif   // ifdef ASURA_USE_PRAGMA_ONCE

#ifndef __AVP_PROJECTCONFIGURATION_H__
#define __AVP_PROJECTCONFIGURATION_H__

#define PROJECT_NAME	"AvP"

////////////////////////////////////////////////////////////////////////////////
// Asura Defines...
////////////////////////////////////////////////////////////////////////////////

#if defined(AVP_SUBMISSION) && !defined(_DEBUG)
	#define ASURA_NO_DEBUG_OUTPUT								1
#else
	#if !defined(PROFILE)
		#define ASURA_ASSERT									1
		#define ASURA_ASSERT_MULTITHREAD						1
	#endif

	#ifndef AVP_PCCLI
		#define ASURA_USE_PROFILING_SYSTEM						1
	#endif //ifndef AVP_PCCLI
	#define ASURA_USE_GUIMENU_PROFILING							1
	#define ASURA_LOGFILES_ENABLED								1
	#define ASURA_USE_DEBUG_TEXT								1
	#define ASURA_USE_SCREENSHOT_SYSTEM							1
	#define ASURA_USE_DEBUGOVERLAY								1
	#define ASURA_USE_PRIMITIVE_RENDER							1
	#define ASURA_SUPPORT_UNITTEST								1
#endif // defined(AVP_SUBMISSION)

#define ASURA_USE_DEBUG_MESSAGE_TRIGGER							1
#define ASURA_USE_NEW_FMV_SYSTEM								1

// (AAM - 12.02.2007) Enable these in Submission config for now
#define ASURA_SUPPORT_COMMAND_CONSOLE							1
#define ASURA_COMMAND_CONSOLE_MAX_VARS							128
#define ASURA_SUPPORT_FLYCAM									1

#if defined(AVP_SUBMISSION)
	#define ASURA_NETWORK_LOGGING								0
#else
	#define ASURA_DEBUG_VARIABLE_SYSTEM							1
	#define ASURA_NETWORK_LOGGING								1
#endif

#define	ASURA_SUPPORT_WEATHER_SYSTEM							1
#define ASURA_MAIN												1
#define ASURA_USE_TEXTURE_STREAMING								1

#if defined(_DEBUG) || defined(ASURA_TOOLS)
	//#define ASURA_MEMHEAP_REPLACEMENT							1
	#define ASURA_MEMORYMANAGEMENT_ENABLED						1
	#define ASURA_MEMORYMANAGEMENT_FILL							1
	//#define ASURA_MEMORYMANAGEMENT_GUARDS						16
	//#define ASURA_MEMORYMANAGEMENT_PROCESS_ALLOCATED_MEM		1
#endif	// defined(_DEBUG)

#if !defined(ASURA_TOOLS)
#define AVP_ALLOW_MULTIPLAYER									1
#endif	//defined(ASURA_TOOLS)

#if defined(AVP_ALLOW_MULTIPLAYER)
	#define ASURA_SUPPORT_EXTERNAL_NETWORK						1
	#define ASURA_SUPPORT_NETMSG_SYSTEM							1
	#define ASURA_ENABLE_INTERNET_SIMULATION					1
// Upped from the default of 5, since our update messages are quite big.
	#define ASURA_NETMSG_BITS_FOR_FIELD_INDEX					6
	#define ASURA_SUPPORT_LOBBY									1
	#define ASURA_LOBBY_MAX_PLAYERS								(18)
	#define ASURA_LOBBY_MAX_TEAMS								(3)
	// ASURA_LOBBY_NUM_INT_ATTRIBUTES matches AVP_NUM_LOBBY_ATTRIBUTES
	#define ASURA_LOBBY_NUM_INT_ATTRIBUTES						(6)
	// ASURA_LOBBY_MAX_SEARCH_CRITERIA is for gamever, map, gametype, skill > min, skill < max
	#define ASURA_LOBBY_MAX_SEARCH_CRITERIA						(5)
//JG player description data 
	#define ASURA_LOBBY_PLAYER_PROJECT_DATA_SIZE				1
#endif	// defined(AVP_ALLOW_MULTIPLAYER)

// Adding more samples to the position interpolation
//#define AVP_USE_UPGRADED_INTERPOLATION						1
#if defined AVP_USE_UPGRADED_INTERPOLATION
	#define ASURA_PHYSICS_USE_END_OF_UPDATE_CALLBACK			1
	#define ASURA_MAX_NO_OF_STORED_POSITIONS					1
#endif // #ifdef AVP_USE_UPGRADED_INTERPOLATION

//#define ASURA_SUPPORT_MULTIPLAYER_COMMS						1

// IK defines
#define ASURA_IK_FADE_NEAR_RANGE								200.0f
#define ASURA_IK_FADE_FAR_RANGE									250.0f

//#define ASURA_SUPPORT_FMV_TEXTURES							1

#define ASURA_HIERARCHY_QUAD									1
#define ASURA_USE_KEYFRAME_CACHING								1
#define ASURA_DISABLE_ANIM_TABLE_CODE							1
#define ASURA_USE_MOVEMENT_SYSTEM								1
#define ASURA_ANIMATION_SKIN_COUNT								3
#define ASURA_USE_ASSET_MANAGER									1

#define ASURA_USE_COLLISIONFX									1
#define ASURA_USE_CONTROLMAP_MANAGER							1
#define ASURA_USE_PFX											1
#define ASURA_PFX_DONT_REORDER_PARTICLES						1
#define ASURA_MAX_NO_OF_PFX_HEATHAZE_SOURCES					32
#define ASURA_ALLOW_PLAYER_ENTITY_DELETE						1
#define ASURA_DONT_ASSERT_ON_DUPLICATE_RESOURCE_DATA			1

#define ASURA_SOUND_MAX_ACTIVE_EVENTS							256
#define ASURA_SOUND_MIXER_PRESET_SYSTEM							ASURA_SOUND_MIXER_PRESET_SYSTEM_NEW
#define ASURA_USE_DIALOGUE_SYSTEM								1
#define ASURA_DIALOGUE_MAX_ACTIVE_EVENTS						10
#define ASURA_USE_REVERBVOLUME_SYSTEM							1
#define ASURA_USE_FACIAL_ANIMATION_SYSTEM						1

//#define ASURA_USE_WIND_SYSTEM									1

#if defined(ASURA_TOOLS)
	#define ASURA_SUPPORT_ENTITYWATCH							1
	#define ASURA_ENABLE_HASH_TO_FILENAME_LOOKUPS				1
#else
	#define ASURA_MAX_NO_OF_TEXTURES							1500
	#define ASURA_MAX_NO_OF_MATERIALS							1500
#endif

#if defined(ASURA_USE_DEBUG_TEXT)
	#define ASURA_DEBUG_TEXT_MAX_BLOCKS							256
	#define ASURA_DEBUG_TEXT_MAX_CHARS							8192
#endif	// defined(ASURA_USE_DEBUG_TEXT)

#define ASURA_MAX_NO_OF_BONES_PER_MODEL							128
#define ASURA_MAX_NO_OF_BONES_PER_MATERIAL						80

#define ASURA_MAX_NO_OF_TEXTURE_TILES							1024
#define	ASURA_MAX_SHAPES										512

#define ASURA_SORTEDRENDER_SORTALPHAONDISTANCE					1
#define ASURA_SORTEDRENDER_QUEUESIZE							512		//maximum number of items that can be queued up
#define ASURA_SORTEDRENDER_STORAGESIZE							65536	//storage space in bytes for the items to be rendered

#define ASURA_MAX_NO_OF_BEAMS									128

#define ASURA_USE_AXON											1
#define ASURA_USE_CONTAINER_SYSTEM								1

#define ASURA_MAX_NO_OF_OPEN_FILES								8

#define ASURA_USE_ATTRACTORS									1
#define ASURA_USE_DECAL_MANAGER									1
#define ASURA_DECAL_MANAGER_USE_COMMON_ASR						1
#define ASURA_USE_GUI_MENU_SYSTEM								1
#define ASURA_GUI_MENU_ALWAYS_WIDESCREEN						1
#define ASURA_MAX_NO_OF_LOCAL_PROJECTORS						128

#ifdef ASURA_TOOLS
// Typically have extra tools fonts around.
	#define ASURA_MAX_FONTS										32
#else
	#define ASURA_MAX_FONTS										16
#endif
#define ASURA_FONT_SYSTEM_SUPPORT_PIXEL_COORDINATES				1

#define ASURA_TARGET_SM3										1
#define ASURA_USE_NEW_SKIN_RENDERERS							1

#ifndef AVP_PCCLI
#define ASURA_USE_BOTANICALS									1
#endif //ndef AVP_PCCLI
#define ASURA_BGR_UPDATE_JOBS									2048
#define ASURA_USE_AFFECTORS										1
#define ASURA_USE_FSFX											1
#define ASURA_USE_MATERIAL_RESPONSE_SYSTEM						1
#define ASURA_MATERIAL_RESPONSE_SURFACES_USE_HASH_IDS			1
#define ASURA_USE_DAMAGE_MAPS									1
#define ASURA_SUPPORT_SKIN_ELEMENTS								1
#define ASURA_USE_INDEPENDENT_SHADOW_SYSTEM						1
#define ASURA_USE_CARPET										1
#define ASURA_USE_HDR											1
#define ASURA_USE_ANIMATION_IK_SOLVER							1
#define ASURA_USE_STATIC_DECAL_SYSTEM							1
#define ASURA_USE_NEW_VISIBILITY_SYSTEM							1
#define ASURA_USE_ZLIB											1
#define ASURA_USE_AUDIO_SYSTEM									1
#define ASURA_SUPPORT_DYNAMIC_MUSIC_SYSTEM						1

#if defined(ASURA_USE_INDEPENDENT_SHADOW_SYSTEM)
	#define ASURA_NUM_SHADOW_TEXTURE_SIZES						3
	#define ASURA_NUM_SHADOWS_PER_TEXTURE_SIZE					5
	#define ASURA_MAX_SHADOW_TEXTURE_SIZE						512
#if defined(ASURA_USE_SCREENSHOT_SYSTEM)
	#define ASURA_NUM_HIRES_SCREENSHOT_SHADOW_TEXTURE_SIZES		1
	#define ASURA_NUM_HIRES_SCREENSHOT_SHADOWS_PER_TEXTURE_SIZE	64
	#define ASURA_MAX_HIRES_SCREENSHOT_SHADOW_TEXTURE_SIZE		1024
#endif	//defined(ASURA_USE_SCREENSHOT_SYSTEM)
	#define ASURA_MAX_NUMBER_OF_CUBEMAP_SHADOWS					128
#endif	// defined(ASURA_USE_INDEPENDENT_SHADOW_SYSTEM)

#define ASURA_NETWORK_MESSAGE_ID_BITS							9

#define ASURA_SUPPORT_CONTROLLER_RUMBLE						    1

////////////////////////////////////////////////////////////////////////////////
// Project specific defines...
////////////////////////////////////////////////////////////////////////////////

//#define AVP_FRIENDLY_FIRE_OFF									1
#define AVP_USE_ANIM_STATE_MACHINE_FOR_AI						1

// (AAM - 12.02.2007) Won't have any more submissions for a while. Just enable these developer
// functions in all configs for now
#if !defined(ASURA_TOOLS)
	#define AVP_ASYNCHRONOUS_LOADING							1
#endif	// !defined(ASURA_TOOLS)

#if defined(AVP_SUBMISSION)
	#define AVP_USE_GAME_FRONTEND								1
#else
#if !defined(ASURA_TOOLS)
	#define AVP_USE_GAME_FRONTEND								1
#endif	//!defined(ASURA_TOOLS)

	#define AVP_ALLOW_DEBUG_MOVEMENT							1
	#define AVP_ALLOW_GAME_TIME_SCALE_CHANGE					1

	// switch for state machine log file output
	//#define AVP_STATEMACHINE_LOGGING							1
#endif	// !defined(AVP_SUBMISSION)

#if defined(ASURA_TOOLS) || !defined(AVP_SUBMISSION) || defined(AVP_MULTIPLAYER_ONLY_DEVFRONTEND)
	#define AVP_USE_DEVELOPMENT_FRONT_END						1
#endif	// !defined(AVP_SUBMISSION) || defined(AVP_MULTIPLAYER_ONLY_DEVFRONTEND)

#if defined(AVP_ALLOW_MULTIPLAYER) && defined(ASURA_SUPPORT_LOBBY)
#if !defined(AVP_SUBMISSION)
	#define AVP_USE_DEV_LOBBY									1
#endif	//!defined(AVP_SUBMSSION)
	#define AVP_USE_GAME_LOBBY									1
#endif	//defined(AVP_ALLOW_MULTIPLAYER) && defined(ASURA_SUPPORT_LOBBY)

#if !defined(ASURA_NO_DEBUG_OUTPUT) && defined(ASURA_SUPPORT_COMMAND_CONSOLE)
	#define AVP_USE_DAMAGE_DEBUGGING							1
#endif

//#define AVP_SUPPORT_PROFILE_LOADANDSAVE							1

#if !defined(AVP_SUBMISSION) && !defined(ASURA_TOOLS) && defined(NDEBUG)
	#define AVP_LOG_FILE_LOAD_MEMORY_USE						1
#endif //#if !defined(AVP_SUBMISSION) && !defined(ASURA_TOOLS) && defined(NDEBUG)

#if !defined(AVP_SUBMISSION)
	#define AVP_SECOND_CONTROL_FLY_CAM                          1
#if !defined(ASURA_TOOLS)
	#define AVP_USE_INPUT_SIMULATOR								1
#endif	//!defined(ASURA_TOOLS)
#endif

#endif   // ifndef __AVP_PROJECTCONFIGURATION_H__

/// End of file. ///
