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