Files
Cielonos/Assets/Scripts/MainGame/Items/Base/SupportEquipmentBase.cs

89 lines
2.3 KiB
C#
Raw Normal View History

2026-07-18 03:16:20 -04:00
using System.Collections.Generic;
2026-05-10 11:47:55 -04:00
using System.Linq;
2026-07-18 03:16:20 -04:00
using Cielonos.MainGame.Characters;
2026-01-03 18:19:39 -05:00
using Sirenix.OdinInspector;
using UnityEngine;
2026-05-23 08:27:50 -04:00
namespace Cielonos.MainGame.Inventory
2026-01-03 18:19:39 -05:00
{
public abstract partial class SupportEquipmentBase : ItemBase
{
[TitleGroup("Data")]
public AttributeData activeAttributeData;
}
public partial class SupportEquipmentBase
{
[TitleGroup("Submodules")]
public AttributeSubmodule activeAttributeSm;
}
public partial class SupportEquipmentBase
{
2026-07-18 03:16:20 -04:00
/// <summary>
/// 是否允许玩家通过常规装备操作卸下该支援装备。
/// run 清理可通过 EquipmentSubmodule 的 force 参数绕过此限制。
/// </summary>
public virtual bool CanUnequip => true;
2026-01-03 18:19:39 -05:00
public virtual void OnEquipped()
{
SpawnViewObjects();
}
public virtual void OnUnequipped()
{
RemoveAllRegisteredFunctions();
DespawnViewObjects();
}
2026-05-10 11:47:55 -04:00
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}.");
}
}
2026-01-03 18:19:39 -05:00
}
public partial class SupportEquipmentBase
{
protected override void Update()
{
if (player.inventorySc.equipmentSm.currentSupportEquipments.Contains(this))
{
2026-04-18 13:57:19 -04:00
base.Update();
2026-01-03 18:19:39 -05:00
}
}
}
public partial class SupportEquipmentBase
{
2026-07-18 03:16:20 -04:00
public virtual void OnPress(List<PlayerInputModifierType> modifiers = default)
2026-01-03 18:19:39 -05:00
{
}
public virtual void OnHold()
{
}
public virtual void OnRelease()
{
}
}
2026-07-18 03:16:20 -04:00
}