
///////////////////////////////////////////////////////////////////////////////
//
// File   : AVP_EntityDamage.h
// Author : Andy Tate
// Date   : 20-Feb-2008
//
// Copyright (C) 2008 Rebellion, All Rights Reserved.
//
///////////////////////////////////////////////////////////////////////////////

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

#ifndef __AVP_ENTITYDAMAGE_H__
#define __AVP_ENTITYDAMAGE_H__

////////////////////////////////////////////////////////////////////////////////
// Include files...
////////////////////////////////////////////////////////////////////////////////

#include "Core/Asura_Hash.h"
#include "Network/Asura_Guid.h"

////////////////////////////////////////////////////////////////////////////////
// Forward class declarations...
////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////
// Class declaration...
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// Class        : AVP_EntityDamage
// Author       : Andy Tate
// Date         : 20-Feb-2008
//
// Description  : Abstract class used to base the handling of damage on.
////////////////////////////////////////////////////////////////////////////////

class AVP_EntityDamage
{
public:
	// Accessor functions...
	Asura_Hash_ID	GetTypeHash(void) const		{ return(m_uTypeHash); }
	Asura_Guid		GetFromGuid(void) const		{ return(m_uFromGuid); }
	Asura_Guid		GetParentGuid(void) const	{ return(m_uParentGuid); }
	Asura_Guid		GetFirerGuid(void) const	{ return (GetParentGuid() != ASURA_GUID_UNREGISTERED ? GetParentGuid() : GetFromGuid()); } 										 								

	// Static accessor functions...

protected:
	// Protected variables...
	Asura_Hash_ID	m_uTypeHash;	// The Hash_ID of type blueprint for the damage type to be caused.
	Asura_Guid		m_uFromGuid;	// The GUID of the entity which is responsible for this damage.
	Asura_Guid		m_uParentGuid;	// The parent of the m_uFromGuid, most of the time will be UNREGISTERED however in the case of projectiles we need to know who the projectile belongs to.

	// Protected functions...
	AVP_EntityDamage(void)		{}
	virtual ~AVP_EntityDamage()	{}

	AVP_EntityDamage(const Asura_Hash_ID uTypeHash, const Asura_Guid uFromGuid, const Asura_Guid uParentGuid = ASURA_GUID_UNREGISTERED)
	: m_uTypeHash(uTypeHash)
	, m_uFromGuid(uFromGuid)
	, m_uParentGuid(uParentGuid) {}

};   // End of class 'AVP_EntityDamage'.

#endif   // ifndef __AVP_ENTITYDAMAGE_H__

/// End of file. ///
