gather-and-defend/Assets/Scripts/Ally/CorruptedFactory.cs
2025-11-12 21:23:52 -05:00

61 lines
2.0 KiB
C#

using System.Collections.Generic;
using UnityEngine;
public class CorruptedFactory : ProductionBuilding
{
//TODO: Si ceci détermine la resource produite, modifier pour que ce soit un tableau des trois différent types de resources.
protected override Enum.ResourceNodeType[] RessourceNodeType { get { return new Enum.ResourceNodeType [] { Enum.ResourceNodeType.Forest, Enum.ResourceNodeType.Rock, Enum.ResourceNodeType.BerryBush, Enum.ResourceNodeType.Farm}; } }
/**
* Yield Production
*/
[SerializeField]
private List<GameObject> _yieldPrefabs = new List<GameObject>(3);
[SerializeField]
[Range(0.0f, 5.0f)]
private float _randomPositionConfig = 0.5f;
[SerializeField]
private float _harvestDuration = 5.0f;
[SerializeField]
private int _yieldAmountPerResource = 1;
private float _yieldCounter = 0;
private float _yieldSpeedMultiplier = 1.0f;
public override void LevelStart()
{
base.LevelStart();
ResetYieldDuration();
}
public override void Update()
{
base.Update();
_yieldCounter -= Time.deltaTime;
if (_yieldCounter > 0) return;
ResetYieldDuration();
if (_yieldPrefabs.Count > 0)
{
for (int i = 0; i < _yieldPrefabs.Count; i++)
{
for (int j = 0; j < _yieldAmountPerResource; j++)
{
YieldResource(_yieldPrefabs[i]);
}
}
}
}
private void YieldResource(GameObject yield)
{
float rangeConfig = 0.5f + _randomPositionConfig;
Vector3 yieldPosition = new Vector3(Position.x + Random.Range(-rangeConfig, rangeConfig), Position.y, Position.z);
var yielded = Instantiate(yield, yieldPosition, Quaternion.identity);
yielded.transform.SetParent(LevelManager.Instance.LevelTransform);
}
private void ResetYieldDuration()
{
_yieldCounter = _harvestDuration / _yieldSpeedMultiplier;
}
}