126 lines
3.0 KiB
C#
126 lines
3.0 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
|
|
[System.Serializable]
|
|
public struct IndexValuePair<T>
|
|
{
|
|
[SerializeField] public int Key;
|
|
[SerializeField] public T Value;
|
|
|
|
public IndexValuePair(int key, T value)
|
|
{
|
|
Key = key;
|
|
Value = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Alias for ValueTouple class, pure touple (V, T) and also KeyValuePair
|
|
/// </summary>
|
|
/// <typeparam name="V"></typeparam>
|
|
/// <typeparam name="T"></typeparam>
|
|
[System.Serializable]
|
|
public struct IndexValuePair<V, T>
|
|
{
|
|
[SerializeField] public V Key;
|
|
[SerializeField] public T Value;
|
|
|
|
public IndexValuePair(V key, T value)
|
|
{
|
|
Key = key;
|
|
Value = value;
|
|
}
|
|
}
|
|
|
|
[System.Serializable]
|
|
//[CreateAssetMenu(fileName = "New Chest", menuName = "Inventory/Chest")]
|
|
public class Chest
|
|
{
|
|
public int id;
|
|
public int Id
|
|
{
|
|
get { return id; }
|
|
set { id = value; }
|
|
}
|
|
|
|
public string name;
|
|
public string Name
|
|
{
|
|
get { return name; }
|
|
set { name = value; }
|
|
}
|
|
|
|
public string description;
|
|
public string Description
|
|
{
|
|
get { return description; }
|
|
set { description = value; }
|
|
}
|
|
|
|
public GameObject chestModel;
|
|
public GameObject ChestModel
|
|
{
|
|
get { return chestModel; }
|
|
set { chestModel = value; }
|
|
}
|
|
|
|
public ChestTypeEnum ChestType;
|
|
|
|
[SerializeField]
|
|
public List<IndexValuePair<EquippableItem>> Content = new List<IndexValuePair<EquippableItem>>();
|
|
|
|
|
|
public Chest() { }
|
|
|
|
public Chest(Chest _chest)
|
|
{
|
|
this.Name = _chest.Name;
|
|
this.Description = _chest.Description;
|
|
this.ChestModel = _chest.ChestModel;
|
|
this.ChestType = _chest.ChestType;
|
|
this.Content = _chest.Content;
|
|
}
|
|
|
|
public Chest(string _name, string _description, GameObject _chestModel, ChestTypeEnum _type)
|
|
{
|
|
this.Name = _name;
|
|
this.Description = _description;
|
|
this.ChestModel = _chestModel;
|
|
this.ChestType = _type;
|
|
}
|
|
|
|
public Chest(string _name, string _description, GameObject _chestModel, ChestTypeEnum _type, List<IndexValuePair<int, EquippableItem>> _content)
|
|
{
|
|
this.Name = _name;
|
|
this.Description = _description;
|
|
this.ChestModel = _chestModel;
|
|
this.ChestType = _type;
|
|
|
|
SetContent(_content);
|
|
}
|
|
|
|
public void SetContent(List<IndexValuePair<int, EquippableItem>> _content)
|
|
{
|
|
Content.Clear();
|
|
|
|
foreach (IndexValuePair<int, EquippableItem> element in _content)
|
|
{
|
|
Content.Add(new IndexValuePair<EquippableItem>(element.Key, element.Value));
|
|
}
|
|
}
|
|
|
|
public List<IndexValuePair<int, EquippableItem>> GetContent()
|
|
{
|
|
List<IndexValuePair<int, EquippableItem>> castedContent = new List<IndexValuePair<int, EquippableItem>>();
|
|
|
|
foreach (IndexValuePair<EquippableItem> element in Content)
|
|
{
|
|
castedContent.Add(new IndexValuePair<int, EquippableItem>(element.Key, element.Value));
|
|
}
|
|
|
|
return castedContent;
|
|
}
|
|
}
|