using UnityEngine;
///
/// Sert d'inventaire et gère l'accès aux ressources
///
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;
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
Vector2 clickPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast(clickPoint, transform.up);
if (hit.collider != null)
{
if (hit.collider.CompareTag("Resource"))
{
hit.collider.GetComponent().GenerateResource();
}
}
}
}
}