From 51521ff10f1f0efe85dbdfc038c7073ebab078e8 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 17 Mar 2023 14:56:52 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/cond_add.cc | 47 ++++++++++++++++++++++++++++++ server/gameserver/buff/cond_add.h | 11 ++++++- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/server/gameserver/buff/cond_add.cc b/server/gameserver/buff/cond_add.cc index 36ca6891..7a5f34ab 100644 --- a/server/gameserver/buff/cond_add.cc +++ b/server/gameserver/buff/cond_add.cc @@ -15,9 +15,56 @@ void CondAddBuff::Activate() { + switch ((CondAddBuff_e)meta->_int_buff_param1) { + case CondAddBuff_e::kBulletHit: + { + ProcBulletHit(); + } + break; + case CondAddBuff_e::kBulletKill: + { + ProcBulletKill(); + } + break; + case CondAddBuff_e::kBulletEnd: + { + ProcBulletEnd(); + } + break; + } } void CondAddBuff::Deactivate() +{ + for (auto handler : handlers_) { + if (!handler.expired()) { + owner->GetTrigger()->RemoveEventHandler(handler); + } + } + handlers_.clear(); +} + + +void CondAddBuff::ProcBulletHit() +{ + handlers_.push_back + ( + owner->GetTrigger()->AddListener + ( + kBulletHitEvent, + [] (const a8::Args& args) + { + + }) + ); +} + +void CondAddBuff::ProcBulletKill() +{ + +} + +void CondAddBuff::ProcBulletEnd() { } diff --git a/server/gameserver/buff/cond_add.h b/server/gameserver/buff/cond_add.h index fe20edc5..10b53645 100644 --- a/server/gameserver/buff/cond_add.h +++ b/server/gameserver/buff/cond_add.h @@ -1,7 +1,7 @@ #pragma once #include "buff.h" - +#include "trigger.h" A8_DECLARE_CLASS_ENUM(CondAddBuff_e, int, kBulletHit = 11, @@ -17,4 +17,13 @@ class CondAddBuff : public Buff virtual void Activate() override; virtual void Deactivate() override; + private: + + void ProcBulletHit(); + void ProcBulletKill(); + void ProcBulletEnd(); + + private: + std::vector> handlers_; + };