Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / buff / fragment / Buff_BulletSpeed.cs
@小李xl 小李xl on 15 Mar 2024 1 KB buff系统重构中
  1.  
  2. [Buff("BulletSpeed",
  3. "子弹速度 buff, " +
  4. "参数‘1’为射速增加类型: 1:具体射速, 2:百分比射速(小数), " +
  5. "参数‘2’为子弹增加的射速值")]
  6. public class Buff_BulletSpeed : BuffFragment
  7. {
  8. private int _type;
  9. private float _value;
  10.  
  11. public override void InitParam(float arg1, float arg2)
  12. {
  13. _type = (int)arg1;
  14. _value = arg2;
  15. }
  16. public override void OnPickUpItem()
  17. {
  18. if (_type == 1)
  19. {
  20. Role.RoleState.CalcBulletSpeedEvent += CalcBulletSpeedEvent1;
  21. }
  22. else
  23. {
  24. Role.RoleState.CalcBulletSpeedEvent += CalcBulletSpeedEvent2;
  25. }
  26. }
  27. public override void OnRemoveItem()
  28. {
  29. if (_type == 1)
  30. {
  31. Role.RoleState.CalcBulletSpeedEvent -= CalcBulletSpeedEvent1;
  32. }
  33. else
  34. {
  35. Role.RoleState.CalcBulletSpeedEvent -= CalcBulletSpeedEvent2;
  36. }
  37. }
  38. private void CalcBulletSpeedEvent1(float originSpeed, RefValue<float> speed)
  39. {
  40. speed.Value += _value;
  41. }
  42. private void CalcBulletSpeedEvent2(float originSpeed, RefValue<float> speed)
  43. {
  44. speed.Value += originSpeed * _value;
  45. }
  46. }