using System.Linq; using Sirenix.OdinInspector; using UnityEngine; namespace Cielonos.MainGame.Characters.Inventory { public abstract partial class SupportEquipmentBase : ItemBase { [TitleGroup("Data")] public AttributeData activeAttributeData; } public partial class SupportEquipmentBase { [TitleGroup("Submodules")] public AttributeSubmodule activeAttributeSm; } public partial class SupportEquipmentBase { public virtual void OnEquipped() { SpawnViewObjects(); } public virtual void OnUnequipped() { RemoveAllRegisteredFunctions(); DespawnViewObjects(); } public override void OnObtained() { base.OnObtained(); // 如果玩家当前装备的支援装备栏有空位,则自动装备 int index = -1; index = player.inventorySc.equipmentSm.currentSupportEquipments.FindIndex(x => x is null); if (index >= 0) { player.inventorySc.equipmentSm.currentSupportEquipments[index] = this; player.inventorySc.equipmentSm.EquipSupportEquipment(this, index); } else { Debug.LogWarning($"[SupportEquipmentBase] No empty slot to equip {name}."); } } } public partial class SupportEquipmentBase { protected override void Update() { if (player.inventorySc.equipmentSm.currentSupportEquipments.Contains(this)) { base.Update(); } } } public partial class SupportEquipmentBase { public virtual void OnPress() { } public virtual void OnHold() { } public virtual void OnRelease() { } } }