LevelManager prefab comporte aussi ResourceManager et ClickBehavior Modification de la vitesse de création des yields Création des yields prefabs
117 lines
2.5 KiB
C#
117 lines
2.5 KiB
C#
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;
|
|
}
|
|
|
|
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<ResourceMaker>().GenerateResource();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|