Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
AreaTrigger.cpp
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#include "
AreaTrigger.h
"
7
#include "
Log.h
"
8
#include "
ObjectAccessor.h
"
9
#include "
SpellInfo.h
"
10
#include "
Unit.h
"
11
12
AreaTrigger::AreaTrigger
() :
WorldObject
(false),
_duration
(0)
13
{
14
m_objectType
|=
TYPEMASK_AREATRIGGER
;
15
m_objectTypeId
=
TypeID::TYPEID_AREATRIGGER
;
16
17
m_updateFlag
=
UPDATEFLAG_STATIONARY_POSITION
;
18
19
m_valuesCount
=
AREATRIGGER_END
;
20
}
21
22
void
AreaTrigger::AddToWorld
()
23
{
25
if
(!
IsInWorld
())
26
{
27
sObjectAccessor
->AddObject(
this
);
28
WorldObject::AddToWorld
();
29
}
30
}
31
32
void
AreaTrigger::RemoveFromWorld
()
33
{
35
if
(
IsInWorld
())
36
{
37
if
(!
IsInWorld
())
38
return
;
39
40
WorldObject::RemoveFromWorld
();
41
sObjectAccessor
->RemoveObject(
this
);
42
}
43
}
44
45
bool
AreaTrigger::CreateAreaTrigger
(
uint32
guidlow,
uint32
triggerEntry,
Unit
* caster,
SpellInfo
const
* spell,
Position
const
& pos)
46
{
47
SetMap
(caster->
GetMap
());
48
Relocate
(pos);
49
if
(!
IsPositionValid
())
50
{
51
SF_LOG_ERROR
(
"sql.sql"
,
"AreaTrigger (spell %u) not created. Invalid coordinates (X: %f Y: %f)"
, spell->
Id
,
GetPositionX
(),
GetPositionY
());
52
return
false
;
53
}
54
55
WorldObject::_Create
(guidlow,
HIGHGUID_AREATRIGGER
, caster->
GetPhaseMask
());
56
57
SetEntry
(triggerEntry);
58
SetDuration
(spell->
GetDuration
());
59
60
SetObjectScale
(1.0f);
61
62
SetUInt64Value
(
AREATRIGGER_FIELD_CASTER
, caster->
GetGUID
());
63
SetUInt32Value
(
AREATRIGGER_FIELD_DURATION
, spell->
GetDuration
());
64
SetUInt32Value
(
AREATRIGGER_FIELD_SPELL_ID
, spell->
Id
);
65
SetUInt32Value
(
AREATRIGGER_FIELD_SPELL_VISUAL_ID
, spell->
SpellVisual
[0]);
66
//AREATRIGGER_FIELD_EXPLICIT_SCALE // NYI
67
68
if
(!
GetMap
()->AddToMap(
this
))
69
return
false
;
70
71
return
true
;
72
}
73
74
void
AreaTrigger::Update
(
uint32
p_time)
75
{
76
if
(
GetDuration
() >
int32
(p_time))
77
_duration
-= p_time;
78
else
79
Remove
();
// expired
80
81
WorldObject::Update
(p_time);
82
}
83
84
void
AreaTrigger::Remove
()
85
{
86
if
(
IsInWorld
())
87
{
88
SendObjectDeSpawnAnim
(
GetGUID
());
89
RemoveFromWorld
();
90
AddObjectToRemoveList
();
91
}
92
}
AreaTrigger.h
int32
std::int32_t int32
Definition
Define.h:73
uint32
std::uint32_t uint32
Definition
Define.h:77
Log.h
SF_LOG_ERROR
#define SF_LOG_ERROR(filterType__,...)
Definition
Log.h:143
TypeID::TYPEID_AREATRIGGER
@ TYPEID_AREATRIGGER
Definition
Object.h:59
TYPEMASK_AREATRIGGER
@ TYPEMASK_AREATRIGGER
Definition
Object.h:45
ObjectAccessor.h
sObjectAccessor
#define sObjectAccessor
Definition
ObjectAccessor.h:195
HIGHGUID_AREATRIGGER
@ HIGHGUID_AREATRIGGER
Definition
ObjectDefines.h:23
SpellInfo.h
Unit.h
UPDATEFLAG_STATIONARY_POSITION
@ UPDATEFLAG_STATIONARY_POSITION
Definition
UpdateData.h:31
AREATRIGGER_FIELD_DURATION
@ AREATRIGGER_FIELD_DURATION
Definition
UpdateFields.h:285
AREATRIGGER_FIELD_CASTER
@ AREATRIGGER_FIELD_CASTER
Definition
UpdateFields.h:284
AREATRIGGER_FIELD_SPELL_VISUAL_ID
@ AREATRIGGER_FIELD_SPELL_VISUAL_ID
Definition
UpdateFields.h:287
AREATRIGGER_FIELD_SPELL_ID
@ AREATRIGGER_FIELD_SPELL_ID
Definition
UpdateFields.h:286
AREATRIGGER_END
@ AREATRIGGER_END
Definition
UpdateFields.h:289
AreaTrigger::Update
void Update(uint32 p_time)
Definition
AreaTrigger.cpp:74
AreaTrigger::_duration
int32 _duration
Definition
AreaTrigger.h:32
AreaTrigger::CreateAreaTrigger
bool CreateAreaTrigger(uint32 guidlow, uint32 triggerEntry, Unit *caster, SpellInfo const *spell, Position const &pos)
Definition
AreaTrigger.cpp:45
AreaTrigger::AreaTrigger
AreaTrigger()
Definition
AreaTrigger.cpp:12
AreaTrigger::Remove
void Remove()
Definition
AreaTrigger.cpp:84
AreaTrigger::RemoveFromWorld
void RemoveFromWorld()
Definition
AreaTrigger.cpp:32
AreaTrigger::SetDuration
void SetDuration(int32 newDuration)
Definition
AreaTrigger.h:28
AreaTrigger::GetDuration
int32 GetDuration() const
Definition
AreaTrigger.h:27
AreaTrigger::AddToWorld
void AddToWorld()
Definition
AreaTrigger.cpp:22
Object::m_objectType
uint16 m_objectType
Definition
Object.h:242
Object::GetGUID
uint64 GetGUID() const
Definition
Object.h:119
Object::IsInWorld
bool IsInWorld() const
Definition
Object.h:114
Object::m_valuesCount
uint16 m_valuesCount
Definition
Object.h:256
Object::AddToWorld
virtual void AddToWorld()
Definition
Object.cpp:148
Object::SetEntry
void SetEntry(uint32 entry)
Definition
Object.h:126
Object::SetObjectScale
virtual void SetObjectScale(float scale)
Definition
Object.h:129
Object::SetUInt32Value
void SetUInt32Value(uint16 index, uint32 value)
Definition
Object.cpp:1038
Object::m_updateFlag
uint16 m_updateFlag
Definition
Object.h:245
Object::m_objectTypeId
TypeID m_objectTypeId
Definition
Object.h:244
Object::SetUInt64Value
void SetUInt64Value(uint16 index, uint64 value)
Definition
Object.cpp:1079
SpellInfo
Definition
SpellInfo.h:158
SpellInfo::SpellVisual
uint32 SpellVisual[2]
Definition
SpellInfo.h:219
SpellInfo::Id
uint32 Id
Definition
SpellInfo.h:160
SpellInfo::GetDuration
int32 GetDuration() const
Definition
SpellInfo.cpp:1967
Unit
Definition
Unit.h:1367
WorldObject::_Create
void _Create(uint32 guidlow, HighGuid guidhigh, uint32 phaseMask)
Definition
Object.cpp:1581
WorldObject::GetPhaseMask
uint32 GetPhaseMask() const
Definition
Object.h:643
WorldObject::GetMap
Map * GetMap() const
Definition
Object.h:740
WorldObject::RemoveFromWorld
virtual void RemoveFromWorld()
Definition
Object.cpp:1587
WorldObject::SendObjectDeSpawnAnim
void SendObjectDeSpawnAnim(uint64 guid)
Definition
Object.cpp:2503
WorldObject::SetMap
virtual void SetMap(Map *map)
Definition
Object.cpp:2514
WorldObject::AddObjectToRemoveList
void AddObjectToRemoveList()
Definition
Object.cpp:2550
WorldObject::WorldObject
WorldObject(bool isWorldObject)
Definition
Object.cpp:1514
WorldObject::Update
virtual void Update(uint32)
Definition
Object.h:616
Position
Definition
Object.h:274
Position::IsPositionValid
bool IsPositionValid() const
Definition
Object.cpp:2049
Position::GetPositionX
float GetPositionX() const
Definition
Object.h:328
Position::GetPositionY
float GetPositionY() const
Definition
Object.h:329
Position::Relocate
void Relocate(float x, float y)
Definition
Object.h:302
src
server
game
Entities
AreaTrigger
AreaTrigger.cpp
Generated on
for Project SkyFire Core by
1.17.0