Cyber/Assets/Scripts/Items/Item.cs

78 lines
2.4 KiB
C#

using Cyber.Entities.SyncBases;
namespace Cyber.Items {
/// <summary>
/// An item, containing itemmy information.
/// </summary>
public class Item {
/// <summary>
/// Delegate for actions that items can do.
/// </summary>
public delegate void ItemAction(Character host);
/// <summary>
/// ID of the item, used in <see cref="ItemDB"/>.
/// </summary>
public readonly int ID;
/// <summary>
/// Model ID of this item.
/// </summary>
public int ModelID;
/// <summary>
/// Name of the item.
/// </summary>
public string Name;
/// <summary>
/// Description of the item.
/// </summary>
public string Description;
/// <summary>
/// The weight of the item (in kg).
/// </summary>
public float Weight;
/// <summary>
/// The slot in which the item can be equipped to.
/// </summary>
public EquipSlot Slot;
/// <summary>
/// The function that is ran when the item is used.
/// </summary>
public ItemAction Action;
/// <summary>
/// Creates an item. This should technically be only called by ItemDB, but it's public because of "reasons".
/// </summary>
/// <param name="id">ID of the item.</param>
/// <param name="modelId">ModelID of the item, see ModelDB.</param>
/// <param name="name">The name if the item.</param>
/// <param name="weight">The Weight of the item.</param>
/// <param name="slot">The equip slot of the item.</param>
/// <param name="description">The description of the item.</param>
/// <param name="action">The action which is ran when the item is used.</param>
public Item(int id, int modelId, string name, float weight, EquipSlot slot, string description, ItemAction action = null) {
ID = id;
ModelID = modelId;
Name = name;
Weight = weight;
Slot = slot;
Description = description;
Action = action;
}
/// <summary>
/// Clones the item, used mostly for <see cref="ItemDB.Get(int)"/>.
/// </summary>
/// <returns></returns>
public Item Clone() {
return new Item(ID, ModelID, Name, Weight, Slot, Description, Action);
}
}
}