//////////////////////////////////////////////////////////////////////////////
//
// AVP_ClientEntity_InteractHackingPoint.h
//
// Created by AJK 25/11/2008
//
// Copyright (c) 2008 Rebellion. All rights reserved.
//
//////////////////////////////////////////////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif

#ifndef __AVP_CLIENTENTITY_INTERACTHACKINGPOINT__
#define __AVP_CLIENTENTITY_INTERACTHACKINGPOINT__

// AVP
#include "Entity/PhysicalObject/Interact/ToolReceptacle/AVP_ClientEntity_InteractToolReceptacle.h"

class AVP_Message_InteractHackingPoint_ClientCreate;
class AVP_ServerEntity_Actor;

class AVP_ClientEntity_InteractHackingPoint : public AVP_ClientEntity_InteractToolReceptacle
{
public:

	static void															        Create( const Asura_Message* pxMsg );
	static AVP_ClientEntity_InteractHackingPoint*							FindEntity( Asura_Guid uGuid )				{ return s_xList.FindEntity( uGuid ); }
	static const Asura_Hashed_List<AVP_ClientEntity_InteractHackingPoint>*	GetList()			{ return &s_xList; }

	virtual InteractionType GetInteractionObjectType() const { return INTERACTION_TYPE_HACKINGPOINT; };
	virtual bool IsActorUsingRightInteractionItem(const AVP_ClientEntity_Actor& xActor) const;

	void GetMarineInsertHackingToolAnimHashes  ( Asura_Hash_ID& uHUDAnimHash, Asura_Hash_ID& uTPAnimHash ) const;
	void GetMarineRemoveHackingToolAnimHashes( Asura_Hash_ID& uHUDAnimHash, Asura_Hash_ID& uTPAnimHash ) const;
	void GetMarineLetGoHackingToolAnimHashes( Asura_Hash_ID& uHUDAnimHash, Asura_Hash_ID& uTPAnimHash ) const;
	void GetMarineGrabHackingToolAnimHashes( Asura_Hash_ID& uHUDAnimHash, Asura_Hash_ID& uTPAnimHash ) const;

protected:
	AVP_ClientEntity_InteractHackingPoint();
	virtual ~AVP_ClientEntity_InteractHackingPoint();

	void		 ProcessClientCreate( const AVP_Message_InteractHackingPoint_ClientCreate* pxData, float fServerTime, bool bProcessPosAndOri );

	virtual void	   InitialiseFromBlueprint( const Asura_Blueprint& xBlueprint );
	virtual Asura_Guid GetToolGuidFromActor ( const AVP_ServerEntity_Actor& xActor ) const;

private:

	// Predator anims
	Asura_Hash_ID			m_uMarineInsertHackingToolHUDAnimID;
	Asura_Hash_ID			m_uMarineRemoveHackingToolHUDAnimID;
	Asura_Hash_ID			m_uMarineInsertHackingToolTPAnimID;
	Asura_Hash_ID			m_uMarineRemoveHackingToolTPAnimID;
	Asura_Hash_ID		    m_uMarineLetGoHackingToolHUDAnimID;
	Asura_Hash_ID			m_uMarineLetGoHackingToolTPAnimID;
	Asura_Hash_ID			m_uMarineGrabHackingToolHUDAnimID;
	Asura_Hash_ID			m_uMarineGrabHackingToolTPAnimID;

	static Asura_Hashed_List<AVP_ClientEntity_InteractHackingPoint> s_xList;
	typedef AVP_ClientEntity_InteractToolReceptacle PARENT;
};

#endif // #ifndef __AVP_CLIENTENTITY_INTERACTHACKINGPOINT__
