aozhiwei 9a460eecba 1
2023-11-08 15:56:22 +08:00

79 lines
2.4 KiB
C++

#pragma once
#include "buff.h"
A8_DECLARE_CLASS_ENUM(BuffCallFunc_e, int,
kAddMinorMode = 1,
kInternalRangeAddBuff = 3,
kDecHp = 4,
kMarkTag = 5,
kRemoveBuff = 7,
kFlashMove = 8,
kAddEnergyShield = 10,
kAddHp = 11,
kFlashMoveToPos = 12,
kLightCircle = 13,
kSyncProp = 16,
kSetBulletBornOffset = 17,
kSummonHeroSepcPoint = 18,
kSummonHeroSpecDistance = 19,
kClearSummonHero = 20,
kImmuneAllMove = 21,
kDmgForward = 22,
kSetGunBuffId = 23,
kSummonObstacleSepcPoint = 24,
kSummonObstacleSpecDistance = 25,
kClearSummonObstacle = 26,
kDecSkillCd = 27,
kRefreshHp = 28,
kAddMaxHp = 29,
kSummonCarSpecPoint = 30,
kBossAnimi = 31,
kAntiHide = 32,
kDisableClientSkill = 33,
kRangeHoldBuff = 34,
kPlayFlyEffect = 35,
kLispEval = 36,
kSpecCenterRangeHoldBuff = 37,
);
class CallFuncBuff : public Buff
{
public:
virtual void Activate() override;
virtual void Deactivate() override;
private:
void ProcIntervalRangeAddBuffFunc();
void ProcAddMinorMode();
void ProcMarkTag();
void ProcRemoveBuff();
void ProcFlashMove();
void ProcAddEnergyShield();
void ProcAddHp();
void ProcAddMaxHp();
void ProcFlashMoveToPos();
void ProcLightCircle();
void ProcSyncProp();
void SummonHeroSpecPoint();
void SummonHeroSpecDistance();
void ClearSummonHero();
void SummonObstacleSpecPoint();
void SummonObstacleSpecDistance();
void ClearSummonObstacle();
void DecSkillCd();
void SummonCarSpecPoint();
void RangeHoldBuff();
void PlayFlyEffect();
void LispEval();
void SpecCenterRangeHoldBuff();
void InternalRangeHoldBuff(std::function<bool(glm::vec3&)> get_center_func);
float hold_param2_ = 0.0;
Weapon* hold_weapon_ = nullptr;
std::function<void()> deactivate_cb_ = nullptr;
};