First commit for private source control. Older commits available on Github.
This commit is contained in:
82
Assets/Scripts/Framework/Managers/Player/Data/ItemDataSO.cs
Normal file
82
Assets/Scripts/Framework/Managers/Player/Data/ItemDataSO.cs
Normal file
@@ -0,0 +1,82 @@
|
||||
using BriarQueen.Data.Identifiers;
|
||||
using BriarQueen.Framework.Managers.Interaction.Data;
|
||||
using NaughtyAttributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BriarQueen.Framework.Managers.Player.Data
|
||||
{
|
||||
[CreateAssetMenu(menuName = "Briar Queen/Items/New Item Data", fileName = "New Item Data")]
|
||||
public class ItemDataSo : ScriptableObject
|
||||
{
|
||||
public enum ItemIdType
|
||||
{
|
||||
None = 0,
|
||||
Pickup = 1,
|
||||
Environment = 2,
|
||||
PuzzleSlot = 3
|
||||
}
|
||||
|
||||
[Header("Item Type")]
|
||||
[SerializeField]
|
||||
private ItemIdType _idType;
|
||||
|
||||
[Header("Item Details")]
|
||||
[Tooltip("Pickup key used for inventory items.")]
|
||||
[SerializeField]
|
||||
[ShowIf(nameof(IsPickup))]
|
||||
private ItemKey _itemKey;
|
||||
|
||||
[Tooltip("Environment key used for world interactables.")]
|
||||
[SerializeField]
|
||||
[ShowIf(nameof(IsEnvironment))]
|
||||
private EnvironmentKey _environmentKey;
|
||||
|
||||
[Tooltip("Puzzle slot key used for puzzle slot interactables.")]
|
||||
[SerializeField]
|
||||
[ShowIf(nameof(IsPuzzleSlot))]
|
||||
private PuzzleSlotKey _puzzleSlotKey;
|
||||
|
||||
[SerializeField]
|
||||
private Sprite _icon;
|
||||
|
||||
[SerializeField]
|
||||
private string _itemName;
|
||||
|
||||
[Header("Inventory Interaction (serialized inline, no extra SO assets)")]
|
||||
[SerializeReference]
|
||||
private BaseInteraction _interaction = new NoOpItemInteraction();
|
||||
|
||||
public Sprite Icon => _icon;
|
||||
public string ItemName => _itemName;
|
||||
public BaseInteraction Interaction => _interaction;
|
||||
|
||||
public bool IsPickup => _idType == ItemIdType.Pickup;
|
||||
public bool IsEnvironment => _idType == ItemIdType.Environment;
|
||||
public bool IsPuzzleSlot => _idType == ItemIdType.PuzzleSlot;
|
||||
|
||||
public ItemIdType IdType => _idType;
|
||||
public ItemKey ItemKey => _itemKey;
|
||||
public EnvironmentKey EnvironmentKey => _environmentKey;
|
||||
public PuzzleSlotKey PuzzleSlotKey => _puzzleSlotKey;
|
||||
|
||||
public string UniqueID
|
||||
{
|
||||
get
|
||||
{
|
||||
return _idType switch
|
||||
{
|
||||
ItemIdType.Pickup when _itemKey != ItemKey.None =>
|
||||
ItemIDs.Get(_itemKey),
|
||||
|
||||
ItemIdType.Environment when _environmentKey != EnvironmentKey.None =>
|
||||
ItemIDs.Get(_environmentKey),
|
||||
|
||||
ItemIdType.PuzzleSlot when _puzzleSlotKey != PuzzleSlotKey.None =>
|
||||
ItemIDs.Get(_puzzleSlotKey),
|
||||
|
||||
_ => string.Empty
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user