Files
Cielonos/Assets/Scripts/MainGame/Items/Base/SupportEquipmentBase.cs
SoulliesOfficial 39b43680a9 爆更
2026-07-18 03:16:20 -04:00

89 lines
2.3 KiB
C#

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
{
/// <summary>
/// 是否允许玩家通过常规装备操作卸下该支援装备。
/// run 清理可通过 EquipmentSubmodule 的 force 参数绕过此限制。
/// </summary>
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<PlayerInputModifierType> modifiers = default)
{
}
public virtual void OnHold()
{
}
public virtual void OnRelease()
{
}
}
}