2025-05-18 01:04:31 +08:00

146 lines
2.9 KiB
C#

// Created : 2020-06-05
// Description :
// Last Modified By : Kimch
// Last Modified On :
// ***********************************************************************
// <copyright file= "EntityItem" company="kunpo"></copyright>
// <summary></summary>
// ***********************************************************************
namespace G
{
using F.Item;
public interface IEntityItem : IItem
{
int itemId { get; }
}
public abstract class EntityItem : IEntityItem
{
/// <summary>
///
/// </summary>
public abstract int id { get; }
/// <summary>
///
/// </summary>
public abstract int itemId { get; }
/// <summary>
/// 道具数量
/// </summary>
public abstract int count { get; set; }
/// <summary>
/// 当前实体等级
/// </summary>
public abstract int level { get; }
/// <summary>
///
/// </summary>
public abstract int quality { get; }
/// <summary>
///
/// </summary>
public abstract int sortOrder { get; }
/// <summary>
/// 关联道具
/// </summary>
public virtual ItemProp propItem
{
get { return ItemProxy.Instance.GetStaticItem<ItemProp>(itemId); }
}
}
/// <summary>
///
/// </summary>
/// <typeparam name="TItem"></typeparam>
public class EntityItem<TItem> : EntityItem, IEntityItem where TItem : class, IItem
{
protected int _id;
protected int _itemId;
protected ItemProp _propItem;
/// <summary>
///
/// </summary>
public override int id => _id;
/// <summary>
/// 配置Id
/// </summary>
public override int itemId => _itemId;
/// <summary>
/// 统一
/// </summary>
public override int count
{
get { return ArchiveProxy.Instance.GetInt(id); }
set { ArchiveProxy.Instance.SetInt(id, value); }
}
/// <summary>
/// 排序
/// </summary>
public override int sortOrder => 0;
/// <summary>
///
/// </summary>
public override int level => 1;
/// <summary>
///
/// </summary>
public override int quality => propItem.quality;
/// <summary>
/// 配置数据
/// </summary>
public virtual TItem item
{
get { return ItemProxy.Instance.GetStaticItem<TItem>(_itemId); }
}
public override ItemProp propItem => _propItem;
protected virtual void Init()
{
_propItem = ItemProxy.Instance.GetStaticItem<ItemProp>(_itemId);
}
/// <summary>
///
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <param name="id"></param>
/// <param name="itemId"></param>
/// <returns></returns>
public static TEntity Create<TEntity>(int id, int itemId) where TEntity : EntityItem<TItem>, new()
{
var entity = new TEntity
{
_id = id,
_itemId = itemId,
};
entity.Init();
return entity;
}
public static TEntity Create<TEntity>(int itemId) where TEntity : EntityItem<TItem>, new()
{
var entity = new TEntity
{
_id = itemId,
_itemId = itemId,
};
entity.Init();
return entity;
}
}
}