Scriptum/Assets/Scripts/REFACTORING/Models/Chest/Chest.cs

107 lines
2.5 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;
}
}
[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;
public List<IndexValuePair<Item>> Content = new List<IndexValuePair<Item>>();
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<KeyValuePair<int, Item>> _content)
{
this.Name = _name;
this.Description = _description;
this.ChestModel = _chestModel;
this.ChestType = _type;
SetContent(_content);
}
public void SetContent(List<KeyValuePair<int, Item>> _content)
{
Content.Clear();
foreach (KeyValuePair<int, Item> element in _content)
{
Content.Add(new IndexValuePair<Item>(element.Key, element.Value));
}
}
public List<KeyValuePair<int, Item>> GetContent()
{
List<KeyValuePair<int, Item>> castedContent = new List<KeyValuePair<int, Item>>();
foreach (IndexValuePair<Item> element in Content)
{
castedContent.Add(new KeyValuePair<int, Item>(element.Key, element.Value));
}
return castedContent;
}
}