/**
*
* \file AVP_ServerEntity_AdvancedVolumeTrigger.h
*
* Created by Anthony Gregson - 08/09/05 (from FPSDemo_ServerEntity_AdvancedVolumeTrigger by Andrew Weinkove - 14/04/2004)
*
* Copyright (C) 2005 Rebellion, All Rights Reserved.
*
* Project-implementation of advanced volume triggers.
*
**/

#ifdef ASURA_USE_PRAGMA_ONCE
	#pragma once
#endif

#ifndef __AVP_SERVERENTITY_ADVANCEDVOLUMETRIGGER_H__
#define __AVP_SERVERENTITY_ADVANCEDVOLUMETRIGGER_H__

/************/
/* Includes.*/
/************/
enum AVP_DEPRICATEDVOLUMETRIGGER_TYPES
{
	AVP_DVTT_SPECIFICGUID	= 0,

	AVP_DVTT_PLAYER_ALIEN,
	AVP_DVTT_PLAYER_HUMAN,
	AVP_DVTT_PLAYER_PREDATOR,
	AVP_DVTT_AI_ALIEN,
	AVP_DVTT_AI_HUMAN,
	AVP_DVTT_AI_PREDATOR,

	NUM_AVP_DEPRECATEDVOLUMETRIGGER_TYPES
};

#include "Entity/Asura_Entity_Classification.h"
#include "Entity/Triggers/Asura_ServerEntity_AdvancedVolumeTrigger.h"

class AVP_ServerEntity_AdvancedVolumeTrigger : public Asura_ServerEntity_AdvancedVolumeTrigger
{
public:
    AVP_ServerEntity_AdvancedVolumeTrigger( Asura_Bounding_Box& xBox, bool bInitiallyActive = false );
	//constructor from load
	AVP_ServerEntity_AdvancedVolumeTrigger(Asura_Guid uGuid,const char*& pcChunkBuffer);
    virtual ~AVP_ServerEntity_AdvancedVolumeTrigger();

//	virtual bool HandleMessage(const Asura_Message* pxMessage);
    virtual void MakeClientUpdateMessage() {}
	virtual bool IsVolumeOccupied();
	virtual void FillInChunkBuffer( char*& pcChunkBuffer );
	virtual int  GetChunkBufferSize();
	static void CreateFromChunkBuffer( Asura_Guid uGuid, const char*& pcChunkBuffer );
	#ifdef ASURA_TOOLS
		virtual bool CanBeIncludedInTemplate() const {return Classification == AsuraEntityClass_AdvancedVolumeTrigger;}
	#endif //ASURA_TOOLS

	// Return function for the new list (put in for the shot dynamite triggering)
	static const Asura_Hashed_List<AVP_ServerEntity_AdvancedVolumeTrigger>* GetList() { return &s_xList; }
	static AVP_ServerEntity_AdvancedVolumeTrigger* FindEntity(Asura_Guid uGuid) { return s_xList.FindEntity(uGuid); }

private:
	static Asura_Hashed_List<AVP_ServerEntity_AdvancedVolumeTrigger> s_xList;
	typedef Asura_ServerEntity_AdvancedVolumeTrigger ASURA_PARENT;

#ifdef ASURA_TOOLS
	static const char* s_aszAVPVolumeTypes[NUM_AVP_DEPRECATEDVOLUMETRIGGER_TYPES];
#endif
	friend class ToolsAVP_Entity_AdvancedVolumeTrigger;
};


#endif//__AVP_SERVERENTITY_ADVANCEDVOLUMETRIGGER_H__
