using Framework.ItemSystem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;

namespace Framework.ItemSystem
{
    /// <summary>
    /// An object that contains information about a specific item 'class'
    /// as opposed to an instance. 
    /// </summary>
    public interface ItemDefinitionlike
    {
        /// <summary>
        /// Gets the name of this item.
        /// </summary>
        /// <returns></returns>
        string GetName();

        /// <summary>
        /// Gets the type of this item, identified by a <see cref="ItemType.Id"/>.
        /// </summary>
        /// <returns></returns>
        ItemType.Id GetItemType();

        /// <summary>
        /// Gets the description of this item.
        /// </summary>
        /// <returns></returns>
        string GetDescription();

        /// <summary>
        /// Creates a new instance of an item that has this definition
        /// an belongs to a specific owner.
        /// </summary>
        /// <param name="owner"></param>
        Itemlike CreateItemInstance(GameObject owner);
    }
}
