using System.Text.Json; using Godot; [EffectFragment( "PiggyBank", "存钱罐, 使用后返还存入的金币", Arg1 = "(float)返还金币的倍率, 范围0-1" )] public class Eff_PiggyBank : EffectFragment { private float _value; //当前存入的金币数量 private float _currValue; public override void InitParam(JsonElement[] arg) { _value = arg[0].GetSingle(); } public override bool OnCheckUse() { return _currValue > 0; } public override void OnUse() { Gold.CreateGold(Role.Position, Mathf.FloorToInt(_currValue * _value)); _currValue = 0; } public override void OnPickUpItem() { Role.RoleState.CalcGetGoldEvent += OnCalcGetGoldEvent; } public override void OnRemoveItem() { Role.RoleState.CalcGetGoldEvent -= OnCalcGetGoldEvent; } private void OnCalcGetGoldEvent(int origin, RefValue<int> refValue) { _currValue += refValue.Value; refValue.Value = 0; } }