using System.Collections.Generic; using System.Linq; using Cielonos.MainGame.Characters; using Sirenix.OdinInspector; using UnityEngine; namespace Cielonos.MainGame.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 { /// /// 是否允许玩家通过常规装备操作卸下该支援装备。 /// run 清理可通过 EquipmentSubmodule 的 force 参数绕过此限制。 /// public virtual bool CanUnequip => true; 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(List modifiers = default) { } public virtual void OnHold() { } public virtual void OnRelease() { } } }