diff --git a/Assets/Scripts/ResourceMaker.cs b/Assets/Scripts/ResourceMaker.cs index 20692d8..f1b6e57 100644 --- a/Assets/Scripts/ResourceMaker.cs +++ b/Assets/Scripts/ResourceMaker.cs @@ -17,35 +17,40 @@ public class ResourceMaker : MonoBehaviour Food }; - public void GenerateResource() + private void Start() { _resourceManager = ResourceManager.Instance; - StartCoroutine(Make()); } - private IEnumerator Make() + public void GenerateResource() { switch (_resourceChoice) { case ResourceChoice.Rock: - _resourceManager.RockAmount = _resourceMakingAmount; + _resourceManager.RockGenerationAmount(_resourceMakingAmount,ResourceManager.AddOrRemove.Add); break; case ResourceChoice.Wood: - _resourceManager.WoodAmount = _resourceMakingAmount; + _resourceManager.WoodGenerationAmount(_resourceMakingAmount, ResourceManager.AddOrRemove.Add); break; case ResourceChoice.Food: - _resourceManager.FoodAmount = _resourceMakingAmount; - break; - default: + _resourceManager.FoodGenerationAmount(_resourceMakingAmount, ResourceManager.AddOrRemove.Add); break; } - Debug.Log("Generating..."); - - yield return new WaitForSeconds(3f); } - public void StopGenerate() + private void OnDestroy() { - StopCoroutine(Make()); + switch (_resourceChoice) + { + case ResourceChoice.Rock: + _resourceManager.RockGenerationAmount(_resourceMakingAmount, ResourceManager.AddOrRemove.Remove); + break; + case ResourceChoice.Wood: + _resourceManager.WoodGenerationAmount(_resourceMakingAmount, ResourceManager.AddOrRemove.Remove); + break; + case ResourceChoice.Food: + _resourceManager.FoodGenerationAmount(_resourceMakingAmount, ResourceManager.AddOrRemove.Remove); + break; + } } } diff --git a/Assets/Scripts/ResourceManager.cs b/Assets/Scripts/ResourceManager.cs index f3c4061..a2b8eaf 100644 --- a/Assets/Scripts/ResourceManager.cs +++ b/Assets/Scripts/ResourceManager.cs @@ -1,4 +1,5 @@ using UnityEngine; +using System.Collections; /// /// Sert d'inventaire et gère l'accès aux ressources @@ -9,6 +10,16 @@ public class ResourceManager : MonoBehaviour private int _rockAmount = 0; private int _woodAmount = 0; private int _foodAmount = 0; + private int _rockGenerationAmount = 0; + private int _woodGenerationAmount = 0; + private int _foodGenerationAmount = 0; + private bool _generatingResources = true; + + public enum AddOrRemove + { + Add, + Remove + }; private const int MAX = 100; private const int MIN = 0; @@ -31,6 +42,7 @@ public class ResourceManager : MonoBehaviour else { _instance = this; + StartCoroutine(Generate()); } } @@ -67,6 +79,39 @@ public class ResourceManager : MonoBehaviour } get { return _foodAmount; } } + public void RockGenerationAmount(int amount, AddOrRemove choice) + { + if (choice == AddOrRemove.Add) + { + _rockAmount += amount; + } + else + { + _rockAmount -= amount; + } + } + public void WoodGenerationAmount(int amount, AddOrRemove choice) + { + if (choice == AddOrRemove.Add) + { + _woodAmount += amount; + } + else + { + _woodAmount -= amount; + } + } + public void FoodGenerationAmount(int amount, AddOrRemove choice) + { + if( choice == AddOrRemove.Add) + { + _foodAmount += amount; + } + else + { + _foodAmount -= amount; + } + } public void Remove(int rock, int wood, int food) { @@ -84,4 +129,23 @@ public class ResourceManager : MonoBehaviour return true; } + private IEnumerator Generate() + { + while (_generatingResources) + { + _rockAmount = _rockGenerationAmount; + _woodAmount = _woodGenerationAmount; + _foodAmount = _foodGenerationAmount; + Debug.Log("Generating..."); + + yield return new WaitForSeconds(3f); + } + } + + private void OnDestroy() + { + _generatingResources = false; + StopCoroutine(Generate()); + } + }