89 lines
2.3 KiB
C#
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()
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|