using UnityEngine;

/// <summary>
/// Sert d'inventaire et gère l'accès aux ressources
/// </summary>
public class ResourceManager : MonoBehaviour
{
    private static ResourceManager _instance = null;
    private int _rockAmount = 20;
    private int _woodAmount = 20;
    private int _foodAmount = 20;

    public enum ResourceChoice
    {
        Rock,
        Wood,
        Food
    };

    public enum AddOrRemove
    {
        Add,
        Remove
    };

    private const int MAX = 100;
    private const int MIN = 0;

    public ResourceManager() { }
    public static ResourceManager Instance
    {
        get
        {
            return _instance;
        }
    }

    private void Awake()
    {
        if (_instance != null && _instance != this)
        {
            Destroy(this);
        }
        else
        {
            _instance = this;
        }
    }

    public int RockAmount
    {
        set
        {
            if (_rockAmount + value < MAX)
            {
                _rockAmount += value;
            }
        }
        get { return _rockAmount; }
    }
    public int WoodAmount
    {
        set
        {
            if (_woodAmount + value < MAX)
            {
                _woodAmount += value;
            }
        }
        get { return _woodAmount; }
    }
    public int FoodAmount
    {
        set
        {
            if (_foodAmount + value < MAX)
            {
                _foodAmount += value;
            }
        }
        get { return _foodAmount; }
    }

    public void Remove(int rock, int wood, int food)
    {
        _rockAmount = (_rockAmount - rock) < MIN ? MIN : _rockAmount - rock;
        _woodAmount = (_woodAmount - wood) < MIN ? MIN : _woodAmount - wood;
        _foodAmount = (_foodAmount - food) < MIN ? MIN : _foodAmount - food;
    }

    public bool EnoughFor(int rock, int wood, int food = 0)
    {
        if (_rockAmount >= rock && _woodAmount >= wood && _foodAmount >= food)
        {
            return true;
        }
        return false;
    }
}
