diff --git a/Assets/Scripts/Resource/ResourceMaker.cs b/Assets/Scripts/Resource/ResourceMaker.cs index aa2f870..db117ae 100644 --- a/Assets/Scripts/Resource/ResourceMaker.cs +++ b/Assets/Scripts/Resource/ResourceMaker.cs @@ -10,29 +10,49 @@ public class ResourceMaker : MonoBehaviour [SerializeField] private Enum.ResourceChoice _resourceChoice; private ResourceManager _resourceManagerInstance; + [SerializeField] + private Vector2 _endPosition; + private Vector2 _startPosition; + private float _desiredTime = 1.5f; + private float _timePassed = 0f; + private bool _isPlaying = false; private void Start() { _resourceManagerInstance = ResourceManager.Instance; + _startPosition = transform.position; + } + + private void Update() + { + if (_isPlaying) + { + _timePassed += Time.deltaTime; + float duration = _timePassed / _desiredTime; + duration = duration * duration * (3.0f - 2.0f * duration); + transform.position = Vector2.Lerp(_startPosition, _endPosition, duration); + if(Vector2.Distance(transform.position,_endPosition) < 0.01f) + { + _isPlaying = false; + switch (_resourceChoice) + { + case Enum.ResourceChoice.Rock: + _resourceManagerInstance.RockAmount = _resourceMakingAmount; + break; + case Enum.ResourceChoice.Wood: + _resourceManagerInstance.WoodAmount = _resourceMakingAmount; + break; + case Enum.ResourceChoice.Food: + _resourceManagerInstance.FoodAmount = _resourceMakingAmount; + break; + } + Destroy(gameObject); + } + } } /// /// D'après le choix de resource à générer, choisi le prefab à instancier /// - public void GenerateResource() - { - switch (_resourceChoice) - { - case Enum.ResourceChoice.Rock: - _resourceManagerInstance.RockAmount = _resourceMakingAmount; - break; - case Enum.ResourceChoice.Wood: - _resourceManagerInstance.WoodAmount = _resourceMakingAmount; - break; - case Enum.ResourceChoice.Food: - _resourceManagerInstance.FoodAmount = _resourceMakingAmount; - break; - } - Destroy(gameObject); - } + public void GenerateResource(){_isPlaying = true;} } diff --git a/Assets/Scripts/Tiles/ResourceTile.cs b/Assets/Scripts/Tiles/ResourceTile.cs index 7a7ab28..6f594a1 100644 --- a/Assets/Scripts/Tiles/ResourceTile.cs +++ b/Assets/Scripts/Tiles/ResourceTile.cs @@ -23,12 +23,14 @@ public class ResourceTile : LevelTile { _yieldCounter += Time.deltaTime * _yieldSpeed; if (_yieldCounter < 1) return; - - _yieldCounter = 0; - float rangeConfig = 0.5f + _randomPositionConfig; - Vector3 yieldPosition = new Vector3(Position.x + Random.Range(-rangeConfig, rangeConfig), Position.y, Position.z); - var yielded = Instantiate(_yieldPrefab, yieldPosition, Quaternion.identity); - yielded.transform.SetParent(LevelManager.Instance.LevelTransform); + if(_yieldPrefab != null) + { + _yieldCounter = 0; + float rangeConfig = 0.5f + _randomPositionConfig; + Vector3 yieldPosition = new Vector3(Position.x + Random.Range(-rangeConfig, rangeConfig), Position.y, Position.z); + var yielded = Instantiate(_yieldPrefab, yieldPosition, Quaternion.identity); + yielded.transform.SetParent(LevelManager.Instance.LevelTransform); + } } public override bool Equals(ILevelObject other) {