Scriptum/Assets/Scripts/REFACTORING/Models/Chest/Chest.cs
2022-12-21 17:12:47 +01:00

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;
}
}