This commit is contained in:
aozhiwei 2023-02-25 09:19:48 +08:00
parent 1c94dc6148
commit 147bff1082

View File

@ -5,6 +5,7 @@
#include "battledatacontext.h"
#include "trigger.h"
#include "room.h"
#include "effect.h"
#include "mt/GraspBuff.h"
#include "mt/Grasp.h"
@ -21,7 +22,7 @@ struct GraspBuff
std::tuple<const mt::GraspBuff*, const mt::GraspBuff*> buffs;
std::function<void()> on_remove;
a8::Attacher xtimer_attacher;
std::vector<std::tuple<CreatureWeakPtr, std::weak_ptr<Effect>>> effect_list;
std::vector<std::weak_ptr<Effect>> effect_list;
void ProcSignet(GunGrasp* gun_grasp, int count, Creature* enemy)
{
@ -92,15 +93,16 @@ private:
void ProcEffectList(Creature* target, const mt::GraspBuff* buff, int buff_time, int attr_num)
{
for (int effect_id : buff->_effect_list) {
effect_list.push_back(std::make_tuple(target->GetWeakPtrRef(), target->AddEffect(effect_id)));
effect_list.push_back(target->AddEffect(effect_id));
}
}
void ClearEffectList()
{
for (auto& tuple : effect_list) {
if (std::get<0>(tuple).Get()) {
std::get<0>(tuple).Get()->RemoveEffect(std::get<1>(tuple));
for (auto& effect : effect_list) {
if (!effect.expired()) {
auto p = effect.lock();
p->owner->RemoveEffect(effect);
}
}
effect_list.clear();