Horizon Official Technical Documentation
Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation Class Reference

#include <Status.hpp>

+ Collaboration diagram for Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation:

Public Member Functions

 StatusOperation (Attribute *attribute, status_operation_type type, uint32_t value, std::string source)
 
 StatusOperation (Attribute *attribute, status_operation_type type, uint32_t value, uint64_t duration, std::string source)
 
 StatusOperation (Attribute *attribute, status_operation_type type, uint32_t value, s_min_max minmax, uint64_t duration, uint64_t interval, std::string source)
 
virtual ~StatusOperation ()
 
void execute ()
 
uint16_t get_priority ()
 
void set_priority (uint16_t priority)
 
status_operation_type get_type ()
 
uint16_t get_value ()
 
void set_duration (uint64_t duration)
 
uint64_t get_duration ()
 
void set_interval (uint64_t interval)
 
uint64_t get_interval ()
 
void set_source (const std::string &source)
 
std::string get_source ()
 

Protected Attributes

Attribute_attribute {nullptr}
 
status_operation_type _type {STATUS_OPERATION_ADD_TO_BASE}
 
uint32_t _value {0}
 
s_min_max _minmax {0, 0}
 
uint16_t _priority {0}
 
uint64_t _duration {0}
 
uint64_t _interval {0}
 
std::string _source {""}
 

Constructor & Destructor Documentation

◆ StatusOperation() [1/3]

Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::StatusOperation ( Attribute attribute,
status_operation_type  type,
uint32_t  value,
std::string  source 
)
inline
96 : _priority(std::time(nullptr)), _attribute(attribute), _type(type), _value(value), _source(source) { }
status_operation_type _type
Definition: Status.hpp:123

◆ StatusOperation() [2/3]

Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::StatusOperation ( Attribute attribute,
status_operation_type  type,
uint32_t  value,
uint64_t  duration,
std::string  source 
)
inline
98 : _priority(std::time(nullptr)), _attribute(attribute), _type(type), _value(value), _duration(duration), _source(source) { }

◆ StatusOperation() [3/3]

Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::StatusOperation ( Attribute attribute,
status_operation_type  type,
uint32_t  value,
s_min_max  minmax,
uint64_t  duration,
uint64_t  interval,
std::string  source 
)
inline
100 : _priority(std::time(nullptr)), _attribute(attribute), _type(type), _value(value), _minmax(minmax), _duration(duration), _interval(interval), _source(source) { }

◆ ~StatusOperation()

virtual Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::~StatusOperation ( )
inlinevirtual
102{}

Member Function Documentation

◆ execute()

void Status::StatusRegistry::StatusOperation::execute ( )
142{
144
145 switch (get_type()) {
147 attr.set_base(_value);
149 break;
151 attr.set_base(-_value);
153 break;
155 attr.set_equip(_value);
157 break;
159 attr.set_equip(-_value);
161 break;
163 attr.set_status(_value);
165 break;
167 attr.set_status(-_value);
170 attr.set_base(_value);
172 break;
174 attr.set_base(-_value);
176 break;
178 attr.set_equip(_value);
180 break;
182 attr.set_equip(-_value);
184 break;
186 attr.set_status(_value);
188 break;
190 attr.set_status(-_value);
192 break;
194 attr.set_base(_value);
195 attr.set_max(_minmax.get_max());
196 attr.set_min(_minmax.get_min());
198 break;
200 attr.set_base(-_value);
201 attr.set_max(_minmax.get_max());
202 attr.set_min(_minmax.get_min());
204 break;
206 attr.set_equip(_value);
207 attr.set_max(_minmax.get_max());
208 attr.set_min(_minmax.get_min());
210 break;
212 attr.set_equip(-_value);
213 attr.set_max(_minmax.get_max());
214 attr.set_min(_minmax.get_min());
216 break;
218 attr.set_status(_value);
219 attr.set_max(_minmax.get_max());
220 attr.set_min(_minmax.get_min());
222 break;
224 attr.set_status(-_value);
225 attr.set_max(_minmax.get_max());
226 attr.set_min(_minmax.get_min());
228 break;
229 }
230
231 // notify through walk packet of hp change.
232 if (_attribute != nullptr && _attribute->get_type() == STATUS_CURRENTHP && _attribute->unit()->type() == UNIT_MONSTER && !_attribute->unit()->is_dead()) {
233 _attribute->unit()->notify_nearby_players_of_movement(true);
234 }
235}
@ UNIT_MONSTER
Definition: UnitDefinitions.hpp:50
@ STATUS_CURRENTHP
Definition: UnitDefinitions.hpp:94
void add_temporary_change(s_attribute_change_values change, uint64_t duration, std::string source)
Definition: Attribute.hpp:357
std::shared_ptr< Unit > unit()
Definition: Attribute.hpp:259
void add_permanent_change(s_attribute_change_values change, std::string source)
Definition: Attribute.hpp:347
void add_periodic_change(s_attribute_change_values change, uint64_t duration, uint64_t interval, std::string source)
Definition: Attribute.hpp:367
status_point_type get_type() const
Definition: Attribute.hpp:407
status_operation_type get_type()
Definition: Status.hpp:109
std::string get_source()
Definition: Status.hpp:119
@ STATUS_OPERATION_SUBTRACT_FROM_STATUS_TEMPORARY
Definition: Status.hpp:83
@ STATUS_OPERATION_ADD_TO_BASE_TEMPORARY
Definition: Status.hpp:78
@ STATUS_OPERATION_SUBTRACT_FROM_BASE_TEMPORARY
Definition: Status.hpp:79
@ STATUS_OPERATION_ADD_TO_EQUIP_INTERVAL
Definition: Status.hpp:86
@ STATUS_OPERATION_SUBTRACT_FROM_EQUIP_INTERVAL
Definition: Status.hpp:87
@ STATUS_OPERATION_SUBTRACT_FROM_BASE
Definition: Status.hpp:73
@ STATUS_OPERATION_ADD_TO_BASE
Definition: Status.hpp:72
@ STATUS_OPERATION_ADD_TO_EQUIP_TEMPORARY
Definition: Status.hpp:80
@ STATUS_OPERATION_SUBTRACT_FROM_EQUIP
Definition: Status.hpp:75
@ STATUS_OPERATION_SUBTRACT_FROM_BASE_INTERVAL
Definition: Status.hpp:85
@ STATUS_OPERATION_ADD_TO_BASE_INTERVAL
Definition: Status.hpp:84
@ STATUS_OPERATION_ADD_TO_STATUS_TEMPORARY
Definition: Status.hpp:82
@ STATUS_OPERATION_ADD_TO_STATUS
Definition: Status.hpp:76
@ STATUS_OPERATION_SUBTRACT_FROM_EQUIP_TEMPORARY
Definition: Status.hpp:81
@ STATUS_OPERATION_ADD_TO_EQUIP
Definition: Status.hpp:74
@ STATUS_OPERATION_SUBTRACT_FROM_STATUS_INTERVAL
Definition: Status.hpp:89
@ STATUS_OPERATION_SUBTRACT_FROM_STATUS
Definition: Status.hpp:77
@ STATUS_OPERATION_ADD_TO_STATUS_INTERVAL
Definition: Status.hpp:88
void set_equip(int32_t val)
Definition: Attribute.hpp:127
void set_max(int32_t val)
Definition: Attribute.hpp:133
void set_min(int32_t val)
Definition: Attribute.hpp:136
void set_status(int32_t val)
Definition: Attribute.hpp:130
void set_base(int32_t val)
Definition: Attribute.hpp:124
int get_max()
Definition: Horizon.hpp:91
int get_min()
Definition: Horizon.hpp:90

References Horizon::Zone::Traits::s_attribute_change_values::set_base(), Horizon::Zone::Traits::s_attribute_change_values::set_equip(), Horizon::Zone::Traits::s_attribute_change_values::set_max(), Horizon::Zone::Traits::s_attribute_change_values::set_min(), Horizon::Zone::Traits::s_attribute_change_values::set_status(), STATUS_CURRENTHP, and UNIT_MONSTER.

Referenced by Horizon::Zone::Traits::Status::StatusRegistry::process_queue().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_duration()

uint64_t Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::get_duration ( )
inline
113{ return _duration; }

References _duration.

◆ get_interval()

uint64_t Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::get_interval ( )
inline
116{ return _interval; }

References _interval.

◆ get_priority()

uint16_t Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::get_priority ( )
inline
106{ return _priority; }

References _priority.

Referenced by Horizon::Zone::Traits::Status::StatusRegistry::CompareStatusOperation::operator()().

+ Here is the caller graph for this function:

◆ get_source()

std::string Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::get_source ( )
inline
119{ return _source; }

References _source.

◆ get_type()

status_operation_type Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::get_type ( )
inline
109{ return _type; }

References _type.

◆ get_value()

uint16_t Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::get_value ( )
inline
110{ return _value; }

References _value.

◆ set_duration()

void Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::set_duration ( uint64_t  duration)
inline
112{ _duration = duration; }

References _duration.

◆ set_interval()

void Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::set_interval ( uint64_t  interval)
inline
115{ _interval = interval; }

References _interval.

◆ set_priority()

void Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::set_priority ( uint16_t  priority)
inline
107{ _priority = priority; }

References _priority.

◆ set_source()

void Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::set_source ( const std::string &  source)
inline
118{ _source = source; }

References _source.

Member Data Documentation

◆ _attribute

Attribute* Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::_attribute {nullptr}
protected

◆ _duration

uint64_t Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::_duration {0}
protected

Referenced by get_duration(), and set_duration().

◆ _interval

uint64_t Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::_interval {0}
protected

Referenced by get_interval(), and set_interval().

◆ _minmax

s_min_max Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::_minmax {0, 0}
protected

◆ _priority

uint16_t Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::_priority {0}
protected

Referenced by get_priority(), and set_priority().

◆ _source

std::string Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::_source {""}
protected

Referenced by get_source(), and set_source().

◆ _type

status_operation_type Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::_type {STATUS_OPERATION_ADD_TO_BASE}
protected

Referenced by get_type().

◆ _value

uint32_t Horizon::Zone::Traits::Status::StatusRegistry::StatusOperation::_value {0}
protected

Referenced by get_value().


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