using Cielonos.MainGame.Characters;
using UnityEngine;
namespace Cielonos.MainGame.Inventory.Collections
{
///
/// 量子护盾发生器 / Quantum Shield Generator
/// 每次首次进入新区域时,将护盾补至 ShieldRecover 下限。
/// Shield 可超量累积,无上限。
///
public class QuantumShieldGenerator : PassiveEquipmentBase
{
private const string ItemAttrShieldRecover = "ShieldRecover";
public override void OnObtained()
{
base.OnObtained();
RunManager.Instance.OnZoneEntered += OnZoneEntered;
}
public override void OnDiscarded()
{
RunManager.Instance.OnZoneEntered -= OnZoneEntered;
base.OnDiscarded();
}
///
/// 玩家进入区域时触发。
/// 仅首次进入该区域时将护盾补至 ShieldRecover 下限。
///
private void OnZoneEntered(ZoneEntryContext context)
{
if (!context.isFirstVisit) return;
float shieldRecover = passiveAttributeSm.GetItemAttribute(ItemAttrShieldRecover);
if (shieldRecover <= 0f) return;
float currentShield = player.attributeSm[CharacterAttribute.Shield];
if (currentShield < shieldRecover)
{
int addValue = Mathf.RoundToInt(shieldRecover - currentShield);
player.attributeSm[CharacterAttribute.Shield] = shieldRecover;
MainGameBaseCollection.Instance.InfoText()?.Spawn(player.centerPosition, "+" + addValue);
}
}
}
}