Felix Boucher 0aa3327433 appliquer global config aux différents endroits
PROBLÈME :

la config existait mais n'était pas appliquée nulle part

SOLUTION :

maintenant elle l'est

NOTES :

Elle n'est pas encore appliquée au flash de dégat
2023-08-05 15:55:54 -04:00

78 lines
2.7 KiB
C#

using System.Collections;
using UnityEngine;
/// <summary>
/// Manages resource production, and serves as a countdown to leave a resource on the ground
/// </summary>
public class ResourceMaker : MonoBehaviour
{
[SerializeField]
private int _resourceMakingAmount;
[SerializeField]
private Enum.ResourceChoice _resourceChoice;
private ResourceManager _resourceManagerInstance;
[SerializeField]
private Vector2 _endPosition;
private Vector2 _startPosition;
private Rigidbody2D _rigidbody;
private float _desiredTime = 1.5f;
private float _timePassed = 0f;
private bool _isPlaying = false;
public Enum.ResourceChoice ResourceChoice => _resourceChoice;
private void Start()
{
_resourceManagerInstance = ResourceManager.Instance;
_startPosition = transform.position;
transform.position = new Vector2(transform.position.x, transform.position.y + 0.5f);
_rigidbody = GetComponent<Rigidbody2D>();
_rigidbody.AddForce(transform.up * 20.0f);
_rigidbody.gravityScale = 0.1f;
}
/// <summary>
/// Depending on the resource choice, chooses the prefab it should instantiate
/// </summary>
private void Update()
{
if (Vector2.Distance(transform.position, _startPosition) < 0.01f)
{
_rigidbody.gravityScale = 0.0f;
_rigidbody.velocity = Vector2.zero;
}
if (_isPlaying)
{
var amountMult = GlobalConfig.Instance.Current.baseHarvestAmount;
_timePassed += Time.deltaTime;
float duration = _timePassed / _desiredTime;
duration = duration * duration * (3.0f - 2.0f * duration);
transform.position = Vector2.Lerp(transform.position, _endPosition, duration);
if(Vector2.Distance(transform.position,_endPosition) < 0.001f)
{
_isPlaying = false;
switch (_resourceChoice)
{
case Enum.ResourceChoice.Rock:
_resourceManagerInstance.RockAmount = (int)(_resourceMakingAmount * amountMult);
break;
case Enum.ResourceChoice.Wood:
_resourceManagerInstance.WoodAmount = (int)(_resourceMakingAmount * amountMult);
break;
case Enum.ResourceChoice.Food:
_resourceManagerInstance.FoodAmount = (int)(_resourceMakingAmount * amountMult);
break;
}
Destroy(gameObject);
}
}
}
public void GenerateResource()
{
_isPlaying = true;
_rigidbody.gravityScale = 0.0f;
_rigidbody.velocity = Vector2.zero;
}
}