Avancement sur coroutine de génération de ressources.

Changé la coroutine de ResourceMaker vers ResourceManager.

Changé ResourceMaker pour permettre d'augmenter ou de réduire la quantité de resources produites.
This commit is contained in:
Ader Alisma 01 2023-05-21 19:18:35 -04:00
parent 3e00af6067
commit e03abf24ec
2 changed files with 82 additions and 13 deletions

View File

@ -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;
}
}
}

View File

@ -1,4 +1,5 @@
using UnityEngine;
using System.Collections;
/// <summary>
/// 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());
}
}