using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;

public class Inventory : MonoBehaviour, IDataPersistence
{

    public static Inventory instance;
    public int space = 15;
    public List<Item> items;
    public delegate void OnItemChanged();
    public OnItemChanged onItemChangedCallback;

    void Awake(){
        if(instance != null){
            Debug.LogWarning("Precakal si ne6to pak");
            Destroy(this.gameObject);
            return;
        }
        instance = this;
    }

    /*void Update(){
        if(instance == null){
            instance = this;
        }
    }*/

    public void LoadData(GameData data){
        //items = data.itemsSave;
        /*foreach(KeyValuePair<string, bool> pair in data.coinsCollected) 
        {
            if (pair.Value) 
            {
                coinsAmount++;
            }
        }*/
    }

    public void SaveData(GameData data){
        //data.itemsSave = items;
    }

    //public List<Item> items = new List<Item>();
    //public SerializableDictionary<Item, bool> 


    public bool Add (Item item){
        if(item.isDefaultItem == false){
            if (items.Count >= space)
            {
                Debug.Log("Not enough Space");
                return false;
            }

            items.Add(item);

            if (onItemChangedCallback != null)
            {
                onItemChangedCallback.Invoke();
            }   
        }
        return true;
    }

    public void Remove(Item item){
        items.Remove(item);
            if (onItemChangedCallback != null)
            {
                onItemChangedCallback.Invoke();
            }   
    }

    public void SimpleAdd(Item item){
        items.Add(item);
        if (onItemChangedCallback != null)
        {
            onItemChangedCallback.Invoke();
        }   
    }

    public bool Contains(Item item){
        if(items.Contains(item)){
            return true;
        }else{
            return false;
        }
    }
}