using System.Collections; using System.Collections.Generic; using UnityEngine; using Unity.Mathematics; using BITKit; using System.IO; using System; namespace BITFALL { [Serializable] public record ItemWeight : IProperty { public float Weight=1; public static implicit operator float(ItemWeight self) { return self.Weight; } } [Serializable] public record AddInventoryMaxWeight: IProperty { public float AddWeight = 1; } [Serializable] public record Cellable : IProperty { public float2 size; } public class AssetableItem : ScriptableObject,IAssetableItem { #region 字段 [Header(Constant.Header.Settings)] [SerializeField] string displayName; [SerializeField] string description; [SerializeField] string adressablePath; [SerializeField] WorldableItem prefab; [SerializeField] Texture2D squareIcon; [SerializeField] Texture2D rectangleIcon; [SerializeField] ItemQuality quality; [Header(Constant.Header.Property)] [SerializeReference, SubclassSelector] public IProperty[] factoryProperties; Property property => new(factoryProperties); #endregion #region 接口实现 public int Id => -1; public ItemQuality Quality => quality; public string Name => displayName; public string Description => description; public string AdressablePath => adressablePath; public bool Contains() => property.Contains(); public T GetOrAddProperty(Func addFactory) =>throw new NotImplementedException("资产不支持动态更改"); public T GetOrCreateProperty() => throw new NotImplementedException("资产不支持动态更改"); public object[] GetProperties() => property.GetProperties(); public bool TryGetProperty(out T value) => property.TryGetProperty(out value); public bool TryRemoveProperty() => throw new NotImplementedException("资产不支持动态更改"); public bool TrySetProperty(T value) => throw new NotImplementedException(); public void Read(BinaryReader r) { throw new NotImplementedException(); } public void Write(BinaryWriter w) { throw new NotImplementedException(); } public bool CopyItemsFrom(IBasicItem item) { throw new NotImplementedException(); } public bool ClearProperties() { throw new NotImplementedException(); } public bool CopyPropertiesFrom(IPropertable propertable) { throw new NotImplementedException(); } #endregion #region 本地方法 public WorldableItem GetPrefab() => prefab; public Texture2D SquareIcon => squareIcon; public Texture2D RectangleIcon=>rectangleIcon; #endregion } }