Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / buff / effect / Eff_PiggyBank.cs
@小李xl 小李xl on 26 Mar 2024 1 KB 抽出 Gold.CreateGold()
  1.  
  2. using System.Text.Json;
  3. using Godot;
  4.  
  5. [EffectFragment(
  6. "PiggyBank",
  7. "存钱罐, 使用后返还存入的金币",
  8. Arg1 = "(float)返还金币的倍率, 范围0-1"
  9. )]
  10. public class Eff_PiggyBank : EffectFragment
  11. {
  12. private float _value;
  13. //当前存入的金币数量
  14. private float _currValue;
  15. public override void InitParam(JsonElement[] arg)
  16. {
  17. _value = arg[0].GetSingle();
  18. }
  19.  
  20. public override bool OnCheckUse()
  21. {
  22. return _currValue > 0;
  23. }
  24.  
  25. public override void OnUse()
  26. {
  27. Gold.CreateGold(Role.Position, Mathf.FloorToInt(_currValue * _value));
  28.  
  29. _currValue = 0;
  30. }
  31.  
  32. public override void OnPickUpItem()
  33. {
  34. Role.RoleState.CalcGetGoldEvent += OnCalcGetGoldEvent;
  35. }
  36.  
  37. public override void OnRemoveItem()
  38. {
  39. Role.RoleState.CalcGetGoldEvent -= OnCalcGetGoldEvent;
  40. }
  41. private void OnCalcGetGoldEvent(int origin, RefValue<int> refValue)
  42. {
  43. _currValue += refValue.Value;
  44. refValue.Value = 0;
  45. }
  46. }