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

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif

#ifndef __TOOLSAVP_ENTITY_INTERACTBATTERYRECEPTACLE__
#define __TOOLSAVP_ENTITY_INTERACTBATTERYRECEPTACLE__

#include "Entity/PhysicalObject/Interact/ToolReceptacle/ToolsAVP_Entity_InteractToolReceptacle.h"

class AVP_ServerEntity_InteractBatteryReceptacle;

class ToolsAVP_Entity_InteractBatteryReceptacle : public ToolsAVP_Entity_InteractToolReceptacle
{
public:

	static void				Create();
	static Tools_Object*	Create(Asura_Entity* pxEntity);
	static ToolsAVP_Entity_InteractBatteryReceptacle*	FindEntity(Asura_Guid uGuid)		{ return s_xList.FindEntity(uGuid); }

	virtual bool			CanBeCopied() const { return ( Type == TOT_Entity_InteractBatteryReceptacle ); }
	virtual Tools_Object*	CreateObjectOfThisType() const;

	virtual const char*		GetTypeDescription(){return "Battery receptacle";}

	virtual void            AddActionsControls( Asura_Overlay* pxOverlay, Asura_Vector_2& xOffset );
	virtual bool			GetEventDescForMessageBlock( unsigned short usMessageBlockID, Asura_String& xOutputDesc );
	virtual bool			OwnsThisMessageBlock( unsigned short usMessageBlockID );
	virtual	void			Destroy();

protected:

	ToolsAVP_Entity_InteractBatteryReceptacle(AVP_ServerEntity_InteractBatteryReceptacle* pxInteractObject);
	virtual ~ToolsAVP_Entity_InteractBatteryReceptacle();

	typedef ToolsAVP_Entity_InteractToolReceptacle PARENT;

	static void	EditOnMarineInsertBatteryMessages();   //This differs with regard to species; Marine insert battery, and trigget some power thing 
	static void	EditOnMarineRemoveBatteryMessages(); // Marine remove battery
	static void	EditOnAlienDestroyBatteryMessages();    // alien perform headbite and trigget some power thing
 	static void	EditOnPredatorUseBatteryMessages(); // predator draws energy and trigget some power thing

	static ToolsAVP_Entity_InteractBatteryReceptacle* s_pxSelectedReceptacle;
	static Asura_Hashed_List<ToolsAVP_Entity_InteractBatteryReceptacle> s_xList;
};

#endif // #ifndef __TOOLSAVP_ENTITY_INTERACTBATTERYRECEPTACLE__
