This commit is contained in:
aozhiwei 2023-03-26 18:31:29 +08:00
parent dc42d58485
commit d9682382b9
2 changed files with 26 additions and 8 deletions

View File

@ -371,20 +371,38 @@ float Ability::GetFixedSped()
AttrAdditionHandle Ability::AddAttr(int attr_id, float rate)
{
if (IsValidHumanAttr(attr_id)) {
auto p = std::make_shared<AttrAddition>();
p->value = rate;
INIT_LIST_HEAD(&p->entry);
list_add_tail(&p->entry, &std::get<1>(attr_add_[attr_id]));
return p;
}
return nullptr;
}
void Ability::RemoveAttrAddition(AttrAdditionHandle handler)
void Ability::RemoveAttrAddition(AttrAdditionHandle handle)
{
if (handle && !list_empty(&handle->entry)) {
list_del_init(&handle->entry);
}
}
AttrRuduceHandle Ability::DecAttr(int attr_id, float rate)
{
if (IsValidHumanAttr(attr_id)) {
auto p = std::make_shared<AttrRuduce>();
p->value = rate;
INIT_LIST_HEAD(&p->entry);
list_add_tail(&p->entry, &std::get<1>(attr_dec_[attr_id]));
return p;
}
return nullptr;
}
void Ability::RemoveAttrRuduce(AttrRuduceHandle handler)
void Ability::RemoveAttrRuduce(AttrRuduceHandle handle)
{
if (handle && !list_empty(&handle->entry)) {
list_del_init(&handle->entry);
}
}

View File

@ -3,8 +3,8 @@
#include "attrdefine.h"
#include "weakptr.h"
typedef std::weak_ptr<struct AttrAddition> AttrAdditionHandle;
typedef std::weak_ptr<struct AttrRuduce> AttrRuduceHandle;
typedef std::shared_ptr<struct AttrAddition> AttrAdditionHandle;
typedef std::shared_ptr<struct AttrRuduce> AttrRuduceHandle;
class Room;
class Human;