aboutsummaryrefslogtreecommitdiff
path: root/src/game/UnitEvents.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/UnitEvents.h')
-rw-r--r--src/game/UnitEvents.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/game/UnitEvents.h b/src/game/UnitEvents.h
index a4046ea46b8..67f8d01f0d6 100644
--- a/src/game/UnitEvents.h
+++ b/src/game/UnitEvents.h
@@ -17,41 +17,58 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+
#ifndef _UNITEVENTS
#define _UNITEVENTS
+
#include "Common.h"
+
class ThreatContainer;
class ThreatManager;
class HostilReference;
+
//==============================================================
//==============================================================
+
enum UNIT_EVENT_TYPE
{
// Player/Pet changed on/offline status
UEV_THREAT_REF_ONLINE_STATUS = 1<<0,
+
// Threat for Player/Pet changed
UEV_THREAT_REF_THREAT_CHANGE = 1<<1,
+
// Player/Pet will be removed from list (dead) [for internal use]
UEV_THREAT_REF_REMOVE_FROM_LIST = 1<<2,
+
// Player/Pet entered/left water or some other place where it is/was not accessible for the creature
UEV_THREAT_REF_ASSECCIBLE_STATUS = 1<<3,
+
// Threat list is going to be sorted (if dirty flag is set)
UEV_THREAT_SORT_LIST = 1<<4,
+
// New target should be fetched, could tbe the current target as well
UEV_THREAT_SET_NEXT_TARGET = 1<<5,
+
// A new victim (target) was set. Could be NULL
UEV_THREAT_VICTIM_CHANGED = 1<<6,
+
// Future use
//UEV_UNIT_KILLED = 1<<7,
+
//Future use
//UEV_UNIT_HEALTH_CHANGE = 1<<8,
};
+
#define UEV_THREAT_REF_EVENT_MASK ( UEV_THREAT_REF_ONLINE_STATUS | UEV_THREAT_REF_THREAT_CHANGE | UEV_THREAT_REF_REMOVE_FROM_LIST | UEV_THREAT_REF_ASSECCIBLE_STATUS)
#define UEV_THREAT_MANAGER_EVENT_MASK (UEV_THREAT_SORT_LIST | UEV_THREAT_SET_NEXT_TARGET | UEV_THREAT_VICTIM_CHANGED)
#define UEV_ALL_EVENT_MASK (0xffffffff)
+
// Future use
//#define UEV_UNIT_EVENT_MASK (UEV_UNIT_KILLED | UEV_UNIT_HEALTH_CHANGE)
+
//==============================================================
+
class TRINITY_DLL_SPEC UnitBaseEvent
{
private:
@@ -60,9 +77,13 @@ class TRINITY_DLL_SPEC UnitBaseEvent
UnitBaseEvent(uint32 pType) { iType = pType; }
uint32 getType() const { return iType; }
bool matchesTypeMask(uint32 pMask) const { return iType & pMask; }
+
void setType(uint32 pType) { iType = pType; }
+
};
+
//==============================================================
+
class TRINITY_DLL_SPEC ThreatRefStatusChangeEvent : public UnitBaseEvent
{
private:
@@ -76,18 +97,30 @@ class TRINITY_DLL_SPEC ThreatRefStatusChangeEvent : public UnitBaseEvent
ThreatManager* iThreatManager;
public:
ThreatRefStatusChangeEvent(uint32 pType) : UnitBaseEvent(pType) { iHostilReference = NULL; }
+
ThreatRefStatusChangeEvent(uint32 pType, HostilReference* pHostilReference) : UnitBaseEvent(pType) { iHostilReference = pHostilReference; }
+
ThreatRefStatusChangeEvent(uint32 pType, HostilReference* pHostilReference, float pValue) : UnitBaseEvent(pType) { iHostilReference = pHostilReference; iFValue = pValue; }
+
ThreatRefStatusChangeEvent(uint32 pType, HostilReference* pHostilReference, bool pValue) : UnitBaseEvent(pType) { iHostilReference = pHostilReference; iBValue = pValue; }
+
int32 getIValue() const { return iIValue; }
+
float getFValue() const { return iFValue; }
+
bool getBValue() const { return iBValue; }
+
void setBValue(bool pValue) { iBValue = pValue; }
+
HostilReference* getReference() const { return iHostilReference; }
+
void setThreatManager(ThreatManager* pThreatManager) { iThreatManager = pThreatManager; }
+
ThreatManager* getThreatManager() const { return iThreatManager; }
};
+
//==============================================================
+
class TRINITY_DLL_SPEC ThreatManagerEvent : public ThreatRefStatusChangeEvent
{
private:
@@ -95,9 +128,12 @@ class TRINITY_DLL_SPEC ThreatManagerEvent : public ThreatRefStatusChangeEvent
public:
ThreatManagerEvent(uint32 pType) : ThreatRefStatusChangeEvent(pType) {}
ThreatManagerEvent(uint32 pType, HostilReference* pHostilReference) : ThreatRefStatusChangeEvent(pType, pHostilReference) {}
+
void setThreatContainer(ThreatContainer* pThreatContainer) { iThreatContainer = pThreatContainer; }
+
ThreatContainer* getThreatContainer() const { return iThreatContainer; }
};
+
//==============================================================
#endif