Horizon Official Technical Documentation
GridSCRemoveInSkillArea Struct Reference

#include <GridNotifiers.hpp>

+ Collaboration diagram for GridSCRemoveInSkillArea:

Public Member Functions

 GridSCRemoveInSkillArea (const std::shared_ptr< Horizon::Zone::Unit > &source, const std::shared_ptr< Horizon::Zone::Unit > &target, int sc_type, s_grid_apply_in_area_config aoe_config)
 
template<class T >
void apply (GridRefManager< T > &m)
 
void Visit (GridRefManager< unit_ns(Player)> &m)
 
void Visit (GridRefManager< unit_ns(NPC)> &m)
 
void Visit (GridRefManager< unit_ns(Elemental)> &m)
 
void Visit (GridRefManager< unit_ns(Homunculus)> &m)
 
void Visit (GridRefManager< unit_ns(Mercenary)> &m)
 
void Visit (GridRefManager< unit_ns(Pet)> &m)
 
void Visit (GridRefManager< unit_ns(Monster)> &m)
 
template<class NOT_INTERESTED >
void Visit (GridRefManager< NOT_INTERESTED > &)
 
template<>
void Visit (GridRefManager< Skill > &m)
 
template<>
void Visit (GridRefManager< Item > &m)
 

Public Attributes

std::weak_ptr< Horizon::Zone::Unit_source
 
std::weak_ptr< Horizon::Zone::Unit_target
 
s_grid_apply_in_area_config _aoe_config
 
int _sc_type
 

Constructor & Destructor Documentation

◆ GridSCRemoveInSkillArea()

GridSCRemoveInSkillArea::GridSCRemoveInSkillArea ( const std::shared_ptr< Horizon::Zone::Unit > &  source,
const std::shared_ptr< Horizon::Zone::Unit > &  target,
int  sc_type,
s_grid_apply_in_area_config  aoe_config 
)
inlineexplicit
285 : _source(source), _target(target), _sc_type(sc_type), _aoe_config(aoe_config)
286 { }
std::weak_ptr< Horizon::Zone::Unit > _source
Definition: GridNotifiers.hpp:279
std::weak_ptr< Horizon::Zone::Unit > _target
Definition: GridNotifiers.hpp:280
s_grid_apply_in_area_config _aoe_config
Definition: GridNotifiers.hpp:281
int _sc_type
Definition: GridNotifiers.hpp:282

Member Function Documentation

◆ apply()

template<class T >
void GridSCRemoveInSkillArea::apply ( GridRefManager< T > &  m)
484{
485 if (_source.expired())
486 return;
487
488 using namespace Horizon::Zone::Units;
489 for (typename GridRefManager<T>::iterator iter = m.begin(); iter != typename GridRefManager<T>::iterator(nullptr); ++iter) {
490 std::shared_ptr<Horizon::Zone::Unit> unit = iter->source()->shared_from_this();
491
492 if (unit == nullptr)
493 continue;
494
495 // AOE Target Type check.
497
498 if (!aoe_predicate(unit))
499 continue;
500
501 // @Todo: check map type PvP, GvG, etc.
502 RangeCheckPredicate range_predicate(unit);
503
504 // If the unit is not in range of target's splash range,
505 // ignore.
506 if (!range_predicate(_target, _aoe_config.aoe_range))
507 continue;
508
509 unit->status_effect_end(_sc_type);
510 }
511}
Definition: GridNotifierPredicates.hpp:66
Forward declaration of GridRefManager, the class that manages GridReference.
Definition: GridRefManager.hpp:41
iterator begin()
Definition: GridRefManager.hpp:54
Definition: GridNotifierPredicates.hpp:51
Definition: GameLogicProcess.hpp:43
int aoe_range
Definition: GridNotifiers.hpp:244
int aoe_target_mask
Definition: GridNotifiers.hpp:245

References _aoe_config, _sc_type, _source, _target, s_grid_apply_in_area_config::aoe_range, s_grid_apply_in_area_config::aoe_target_mask, and GridRefManager< OBJECT >::begin().

+ Here is the call graph for this function:

◆ Visit() [1/10]

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

◆ Visit() [2/10]

template<class NOT_INTERESTED >
void GridSCRemoveInSkillArea::Visit ( GridRefManager< NOT_INTERESTED > &  )
inline
300{ }

◆ Visit() [3/10]

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

◆ Visit() [4/10]

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

◆ Visit() [5/10]

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

◆ Visit() [6/10]

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

◆ Visit() [7/10]

void GridSCRemoveInSkillArea::Visit ( GridRefManager< unit_ns(Monster)> &  m)

◆ Visit() [8/10]

void GridSCRemoveInSkillArea::Visit ( GridRefManager< unit_ns(NPC)> &  m)

◆ Visit() [9/10]

void GridSCRemoveInSkillArea::Visit ( GridRefManager< unit_ns(Pet)> &  m)

◆ Visit() [10/10]

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

Member Data Documentation

◆ _aoe_config

s_grid_apply_in_area_config GridSCRemoveInSkillArea::_aoe_config

Referenced by apply().

◆ _sc_type

int GridSCRemoveInSkillArea::_sc_type

Referenced by apply().

◆ _source

std::weak_ptr<Horizon::Zone::Unit> GridSCRemoveInSkillArea::_source

Referenced by apply().

◆ _target

std::weak_ptr<Horizon::Zone::Unit> GridSCRemoveInSkillArea::_target

Referenced by apply().


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