Files
hw-pixelone-course-creating…/Platformer/Assets/Scripts/ItemBase.cs

79 lines
1.9 KiB
C#
Raw Normal View History

2023-06-11 00:35:07 +03:00
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "New Item Database", menuName = "Databases/Items")]
public class ItemBase : ScriptableObject {
[SerializeField, HideInInspector] private List<Item> items;
[SerializeField] private Item currentItem;
private int currentIndex;
public void CreateItem() {
if (items == null) {
items = new List<Item>();
}
var item = new Item();
items.Add(item);
currentItem = item;
currentIndex = items.Count - 1;
}
public void RemoveItem() {
if (items == null || currentItem == null) {
return;
}
items.Remove(currentItem);
if (items.Count > 0) {
currentItem = items[0];
} else {
CreateItem();
}
currentIndex = 0;
}
public void NextItem() {
if (currentIndex + 1 < items.Count) {
currentIndex++;
currentItem = items[currentIndex];
}
}
public void PrevItem() {
if (currentIndex > 0) {
currentIndex--;
currentItem = items[currentIndex];
}
}
public Item GetItemOfId(int id) {
return items.Find(t => t.Id == id);
}
}
[System.Serializable]
public class Item {
[SerializeField] private int id;
public int Id => id;
[SerializeField] private string itemName;
public string ItemName => itemName;
[SerializeField] private string description;
public string Description => description;
[SerializeField] private Sprite icon;
public Sprite Icon => icon;
[SerializeField] private BuffType type;
public BuffType Type => type;
[SerializeField] private float value;
public float Value => value;
public override string ToString() {
return $"[id: {id}, itemName: {itemName}, description: {description}, type: {type.ToString()}, value {value}";
}
}