//////////////////////////////////////////////////////////////////////////////
//
// ToolsAVP_Blueprint_Edit_Object.h
//
// Copyright (C) 2008 Rebellion. All Rights Reserved.
//
//////////////////////////////////////////////////////////////////////////////

// B E G I N   F I L E   W R A P P E R ///////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif

#ifndef __TOOLSAVP_BLUEPRINT_EDIT_OBJECT_H__
#define __TOOLSAVP_BLUEPRINT_EDIT_OBJECT_H__ 1

// E N D   F I L E   W R A P P E R ///////////////////////////////////////////

// I N C L U D E S ///////////////////////////////////////////////////////////

// tools
#include "Blueprint/Tools_Blueprint_Edit_Object.h"

//////////////////////////////////////////////////////////////////////////////
//
// ToolsAVP_Blueprint_Edit_Object
//
//////////////////////////////////////////////////////////////////////////////

class ToolsAVP_Blueprint_Edit_Object : public Tools_Blueprint_Edit_Object
{
private:
	enum AVP_VALUE_TYPE
	{
		AVP_START_OF_TEMPLATED_TYPES = END_OF_TEMPLATED_TYPES,

		AVP_BP_CHARTYPE = AVP_START_OF_TEMPLATED_TYPES,
		AVP_BP_SURFACETYPE,
        AVP_BP_AIBEHAVIOUR,
		AVP_BP_SPAWNMETHODS,
		AVP_BP_COLLISIONPROXY,
		AVP_BP_WEAPONTYPE,
		AVP_BP_IMPACTTYPE,
		AVP_BP_WEAPONSLOTTYPE,
		AVP_BP_ROLE,
		AVP_BP_RESPAWNTYPE,
		AVP_BP_AIMOVEINMODE,
		AVP_BP_AIPOSTATTACKACTION,
		AVP_BP_PICKUPTYPE,
		AVP_BP_AIWEAPONBEHAVIOURTYPE,
		AVP_BP_BLUEPRINT_NOEXPORT,
		AVP_BP_RUMBLE_EFFECT,
		AVP_BP_RUMBLE_ADJUST,
		AVP_BP_RUMBLE_PRIORITY,
		AVP_BP_DSP_CHAIN,
		AVP_BP_SOUNDMIXER_PRESET,
		AVP_BP_GRAPPLEEVENT_TYPE,

		AVP_END_OF_TEMPLATED_TYPES,
		AVP_NUM_TEMPLATED_TYPES = AVP_END_OF_TEMPLATED_TYPES - AVP_START_OF_TEMPLATED_TYPES,
	};

	typedef Tools_Blueprint_Edit_Object PARENT;

protected:
    virtual void GetValueString( const Asura_Value& xValue, const int iTemplatedType, Asura_String& xString );
    virtual bool GetValueForTemplatedType( const int iTemplatedType,
										   const Asura_Hash_ID uTemplateHashID,
										   const Asura_String xParameterName,
										   Asura_Value& xValue );

	virtual u_int GetNumTemplatedTypes( void ) const { return AVP_NUM_TEMPLATED_TYPES + PARENT::GetNumTemplatedTypes(); }
	virtual int	  GetTemplatedTypeFromTemplateID( Asura_Hash_ID uTemplateID ) const;
	virtual bool  InitialiseTemplatedTypeTemplate( Asura_Blueprint_Template* pxTemplate, u_int uType );
	virtual const char* GetTemplatedTypeName( u_int uType ) const;

	static const char* s_apszAVPTemplatedTypeNames[AVP_NUM_TEMPLATED_TYPES];
};

//////////////////////////////////////////////////////////////////////////////
//
// 
//
//////////////////////////////////////////////////////////////////////////////

#endif //__TOOLSAVP_BLUEPRINT_EDIT_OBJECT_H__
