Horizon Official Technical Documentation
GridMonsterAIChangeChaseTarget Struct Reference

#include <GridNotifiers.hpp>

Public Member Functions

 GridMonsterAIChangeChaseTarget (const std::shared_ptr< Horizon::Zone::Units::Monster > &monster)
 
template<class T >
void search (GridRefManager< T > &m)
 
void Visit (GridRefManager< unit_ns(Player)> &m)
 
void Visit (GridRefManager< unit_ns(Elemental)> &m)
 
void Visit (GridRefManager< unit_ns(Homunculus)> &m)
 
void Visit (GridRefManager< unit_ns(Mercenary)> &m)
 
template<class NOT_INTERESTED >
void Visit (GridRefManager< NOT_INTERESTED > &)
 
template<>
void Visit (GridRefManager< NPC > &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::Units::Monster_monster
 

Constructor & Destructor Documentation

◆ GridMonsterAIChangeChaseTarget()

GridMonsterAIChangeChaseTarget::GridMonsterAIChangeChaseTarget ( const std::shared_ptr< Horizon::Zone::Units::Monster > &  monster)
inlineexplicit
186 : _monster(monster)
187 { }
std::weak_ptr< Horizon::Zone::Units::Monster > _monster
Definition: GridNotifiers.hpp:183

Member Function Documentation

◆ search()

template<class T >
void GridMonsterAIChangeChaseTarget::search ( GridRefManager< T > &  m)
371{
372 if (_monster.expired())
373 return;
374
375 using namespace Horizon::Zone;
376 for (typename GridRefManager<T>::iterator iter = m.begin(); iter != typename GridRefManager<T>::iterator(nullptr); ++iter) {
377 if (iter->source() == nullptr)
378 continue;
379
380 std::shared_ptr<Unit> e = iter->source()->shared_from_this();
381 std::shared_ptr<Monster> m = _monster.lock();
382
383 if (m == nullptr || e == nullptr)
384 continue;
385
386 std::shared_ptr<AStar::CoordinateList> wp = m->path_to(e);
387
388 if (wp->size() > m->monster_config()->attack_range)
389 continue;
390
391 m->set_target(e);
392
393 break;
394 }
395}
Forward declaration of GridRefManager, the class that manages GridReference.
Definition: GridRefManager.hpp:41
iterator begin()
Definition: GridRefManager.hpp:54
Definition: NPCDefinitions.hpp:54

References _monster, and GridRefManager< OBJECT >::begin().

+ Here is the call graph for this function:

◆ Visit() [1/10]

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

◆ Visit() [2/10]

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

◆ Visit() [3/10]

template<class NOT_INTERESTED >
void GridMonsterAIChangeChaseTarget::Visit ( GridRefManager< NOT_INTERESTED > &  )
inline
198{ }

◆ Visit() [4/10]

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

◆ Visit() [5/10]

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

◆ Visit() [6/10]

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

◆ Visit() [7/10]

void GridMonsterAIChangeChaseTarget::Visit ( GridRefManager< unit_ns(Elemental)> &  m)

◆ Visit() [8/10]

void GridMonsterAIChangeChaseTarget::Visit ( GridRefManager< unit_ns(Homunculus)> &  m)

◆ Visit() [9/10]

void GridMonsterAIChangeChaseTarget::Visit ( GridRefManager< unit_ns(Mercenary)> &  m)

◆ Visit() [10/10]

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

Member Data Documentation

◆ _monster

std::weak_ptr<Horizon::Zone::Units::Monster> GridMonsterAIChangeChaseTarget::_monster

Referenced by search().


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