Horizon Official Technical Documentation
GridUnitMovementNotifier Struct Reference

#include <GridNotifiers.hpp>

Public Member Functions

 GridUnitMovementNotifier (const std::shared_ptr< Horizon::Zone::Unit > &unit, bool new_entry=false)
 
template<class T >
void notify (GridRefManager< T > &m)
 
void Visit (GridRefManager< unit_ns(Player)> &m)
 
template<class NOT_INTERESTED >
void Visit (GridRefManager< NOT_INTERESTED > &)
 
template<>
void Visit (GridRefManager< NPC > &m)
 
template<>
void Visit (GridRefManager< Elemental > &m)
 
template<>
void Visit (GridRefManager< Homunculus > &m)
 
template<>
void Visit (GridRefManager< Mercenary > &m)
 
template<>
void Visit (GridRefManager< Pet > &m)
 
template<>
void Visit (GridRefManager< Monster > &m)
 
template<>
void Visit (GridRefManager< Skill > &m)
 
template<>
void Visit (GridRefManager< Item > &m)
 

Public Attributes

std::weak_ptr< Horizon::Zone::Unit_unit
 
bool _new_entry { false }
 

Constructor & Destructor Documentation

◆ GridUnitMovementNotifier()

GridUnitMovementNotifier::GridUnitMovementNotifier ( const std::shared_ptr< Horizon::Zone::Unit > &  unit,
bool  new_entry = false 
)
inlineexplicit
104 : _unit(unit), _new_entry(new_entry)
105 { }
bool _new_entry
Definition: GridNotifiers.hpp:101
std::weak_ptr< Horizon::Zone::Unit > _unit
Definition: GridNotifiers.hpp:100

Member Function Documentation

◆ notify()

template<class T >
void GridUnitMovementNotifier::notify ( GridRefManager< T > &  m)
212{
213 using namespace Horizon::Zone::Units;
214
215 if (m.get_size() == 0)
216 return;
217
218 std::shared_ptr<Horizon::Zone::Unit> src_unit = _unit.lock();
219
220 if (src_unit == nullptr)
221 return;
222
223 for (typename GridRefManager<T>::iterator iter = m.begin(); iter != typename GridRefManager<T>::iterator(nullptr); iter++) {
224 if (iter->source() == nullptr)
225 continue;
226
227 std::shared_ptr<Player> tpl = iter->source()->template downcast<Player>();
228
229 if (src_unit->guid() == tpl->guid())
230 continue;
231
232 if (tpl->get_session() == nullptr || tpl->get_session()->clif() == nullptr)
233 continue;
234
235 if (_new_entry == true)
236 tpl->realize_unit_movement_entry((int32_t) get_sys_time(), src_unit);
237 else
238 tpl->realize_unit_movement((int32_t) get_sys_time(), src_unit);
239 }
240}
int64_t get_sys_time()
Definition: Utility.cpp:68
Forward declaration of GridRefManager, the class that manages GridReference.
Definition: GridRefManager.hpp:41
iterator begin()
Definition: GridRefManager.hpp:54
uint32_t get_size() const
returns the number of Elements in the list (not including the head and tail Elements or the first and...
Definition: Head.hpp:69
Definition: GameLogicProcess.hpp:43

References _new_entry, _unit, GridRefManager< OBJECT >::begin(), Horizon::Structures::LinkedList::Head::get_size(), and get_sys_time().

+ Here is the call graph for this function:

◆ Visit() [1/10]

template<>
void GridUnitMovementNotifier::Visit ( GridRefManager< Elemental > &  m)

◆ Visit() [2/10]

template<>
void GridUnitMovementNotifier::Visit ( GridRefManager< Homunculus > &  m)

◆ Visit() [3/10]

template<>
void GridUnitMovementNotifier::Visit ( GridRefManager< Item > &  m)

◆ Visit() [4/10]

template<>
void GridUnitMovementNotifier::Visit ( GridRefManager< Mercenary > &  m)

◆ Visit() [5/10]

template<>
void GridUnitMovementNotifier::Visit ( GridRefManager< Monster > &  m)

◆ Visit() [6/10]

template<class NOT_INTERESTED >
void GridUnitMovementNotifier::Visit ( GridRefManager< NOT_INTERESTED > &  )
inline
113{ }

◆ Visit() [7/10]

template<>
void GridUnitMovementNotifier::Visit ( GridRefManager< NPC > &  m)

◆ Visit() [8/10]

template<>
void GridUnitMovementNotifier::Visit ( GridRefManager< Pet > &  m)

◆ Visit() [9/10]

template<>
void GridUnitMovementNotifier::Visit ( GridRefManager< Skill > &  m)

◆ Visit() [10/10]

void GridUnitMovementNotifier::Visit ( GridRefManager< unit_ns(Player)> &  m)

Member Data Documentation

◆ _new_entry

bool GridUnitMovementNotifier::_new_entry { false }

Referenced by notify().

◆ _unit

std::weak_ptr<Horizon::Zone::Unit> GridUnitMovementNotifier::_unit

Referenced by notify().


The documentation for this struct was generated from the following files: