Horizon Official Technical Documentation
GridUnitSkillUseNotifier Struct Reference

#include <GridNotifiers.hpp>

+ Collaboration diagram for GridUnitSkillUseNotifier:

Public Member Functions

 GridUnitSkillUseNotifier (const std::shared_ptr< Horizon::Zone::Unit > &unit, grid_unit_skill_use_notification_type notification_type, s_unit_skill_use_notifier_config config)
 
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
 
grid_unit_skill_use_notification_type _notification_type
 
s_unit_skill_use_notifier_config _config
 

Constructor & Destructor Documentation

◆ GridUnitSkillUseNotifier()

GridUnitSkillUseNotifier::GridUnitSkillUseNotifier ( const std::shared_ptr< Horizon::Zone::Unit > &  unit,
grid_unit_skill_use_notification_type  notification_type,
s_unit_skill_use_notifier_config  config 
)
inlineexplicit
380 : _unit(unit), _notification_type(notification_type), _config(config)
381 { }
std::weak_ptr< Horizon::Zone::Unit > _unit
Definition: GridNotifiers.hpp:375
s_unit_skill_use_notifier_config _config
Definition: GridNotifiers.hpp:377
grid_unit_skill_use_notification_type _notification_type
Definition: GridNotifiers.hpp:376

Member Function Documentation

◆ notify()

template<class T >
void GridUnitSkillUseNotifier::notify ( GridRefManager< T > &  m)
604{
605 using namespace Horizon::Zone::Units;
606
607 if (!m.get_size())
608 return;
609
610 std::shared_ptr<Horizon::Zone::Unit> src_unit = _unit.lock();
611
612 for (typename GridRefManager<T>::iterator iter = m.begin(); iter != typename GridRefManager<T>::iterator(nullptr); ++iter) {
613 if (iter->source() == nullptr)
614 continue;
615
616 std::shared_ptr<Player> tpl = iter->source()->template downcast<Player>();
617
618 if (tpl->get_session() == nullptr || tpl->get_session()->clif() == nullptr)
619 continue;
620
621 switch (_notification_type)
622 {
624 {
626 }
627 break;
629 {
630 tpl->get_session()->clif()->notify_hostile_skill_use(
641 }
642 break;
644 {
645 tpl->get_session()->clif()->notify_safe_skill_use(_config.skill_id, _config.display_value, _config.target_guid, ZC_USESKILL2_SUCCESS);
646 }
647 break;
648 default:
649 HLog(warning) << "GridUnitSkillUseNotifier::notify: Unknown notification type: " << _notification_type << "." << std::endl;
650 break;
651 }
652 }
653}
@ ZC_USESKILL2_SUCCESS
Definition: ClientDefinitions.hpp:897
@ GRID_UNIT_SKILL_USE_NOTIFY_CASTTIME
Definition: GridDefinitions.hpp:89
@ GRID_UNIT_SKILL_USE_NOTIFY_SUCCESS_DAMAGE
Definition: GridDefinitions.hpp:90
@ GRID_UNIT_SKILL_USE_NOTIFY_SUCCESS_NO_DAMAGE
Definition: GridDefinitions.hpp:91
#define HLog(type)
Definition: Logger.hpp:122
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
int target_guid
Definition: GridNotifiers.hpp:365
int damage_value
Definition: GridNotifiers.hpp:365
zc_notify_act_3_action_types action_type
Definition: GridNotifiers.hpp:367
int source_guid
Definition: GridNotifiers.hpp:365
int target_x
Definition: GridNotifiers.hpp:369
int element
Definition: GridNotifiers.hpp:370
int cast_time
Definition: GridNotifiers.hpp:370
int attack_motion
Definition: GridNotifiers.hpp:365
int display_value
Definition: GridNotifiers.hpp:365
int delay_motion
Definition: GridNotifiers.hpp:366
int start_time
Definition: GridNotifiers.hpp:365
int number_of_hits
Definition: GridNotifiers.hpp:366
int skill_id
Definition: GridNotifiers.hpp:365
int target_y
Definition: GridNotifiers.hpp:369

References _config, _notification_type, _unit, s_unit_skill_use_notifier_config::action_type, s_unit_skill_use_notifier_config::attack_motion, GridRefManager< OBJECT >::begin(), s_unit_skill_use_notifier_config::cast_time, s_unit_skill_use_notifier_config::damage_value, s_unit_skill_use_notifier_config::delay_motion, s_unit_skill_use_notifier_config::display_value, s_unit_skill_use_notifier_config::element, Horizon::Structures::LinkedList::Head::get_size(), GRID_UNIT_SKILL_USE_NOTIFY_CASTTIME, GRID_UNIT_SKILL_USE_NOTIFY_SUCCESS_DAMAGE, GRID_UNIT_SKILL_USE_NOTIFY_SUCCESS_NO_DAMAGE, HLog, s_unit_skill_use_notifier_config::number_of_hits, s_unit_skill_use_notifier_config::skill_id, s_unit_skill_use_notifier_config::source_guid, s_unit_skill_use_notifier_config::start_time, s_unit_skill_use_notifier_config::target_guid, s_unit_skill_use_notifier_config::target_x, s_unit_skill_use_notifier_config::target_y, and ZC_USESKILL2_SUCCESS.

+ Here is the call graph for this function:

◆ Visit() [1/10]

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

◆ Visit() [2/10]

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

◆ Visit() [3/10]

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

◆ Visit() [4/10]

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

◆ Visit() [5/10]

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

◆ Visit() [6/10]

template<class NOT_INTERESTED >
void GridUnitSkillUseNotifier::Visit ( GridRefManager< NOT_INTERESTED > &  )
inline
389{ }

◆ Visit() [7/10]

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

◆ Visit() [8/10]

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

◆ Visit() [9/10]

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

◆ Visit() [10/10]

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

Member Data Documentation

◆ _config

s_unit_skill_use_notifier_config GridUnitSkillUseNotifier::_config

Referenced by notify().

◆ _notification_type

grid_unit_skill_use_notification_type GridUnitSkillUseNotifier::_notification_type

Referenced by notify().

◆ _unit

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

Referenced by notify().


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