diff --git a/Assets/Prefabs/Buildings/CorruptedFactory.prefab b/Assets/Prefabs/Buildings/CorruptedFactory.prefab index 3d0bdaa..21fc071 100644 --- a/Assets/Prefabs/Buildings/CorruptedFactory.prefab +++ b/Assets/Prefabs/Buildings/CorruptedFactory.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 7635908653065262707} - component: {fileID: 4893380182456950857} - component: {fileID: 5051996996752872273} - - component: {fileID: 3252807573666191813} + - component: {fileID: -1239601138929197919} m_Layer: 0 m_Name: CorruptedFactory m_TagString: Ally @@ -84,7 +84,7 @@ Rigidbody2D: m_SleepingMode: 1 m_CollisionDetection: 0 m_Constraints: 4 ---- !u!114 &3252807573666191813 +--- !u!114 &-1239601138929197919 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -93,18 +93,25 @@ MonoBehaviour: m_GameObject: {fileID: 1038659306882990064} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1edffd18a1fa37246afd15d5dc6a18f0, type: 3} + m_Script: {fileID: 11500000, guid: f02fef000728c82449ae7993a564e37c, type: 3} m_Name: m_EditorClassIdentifier: _lifeBar: {fileID: 4795252161776368380} _hp: 0 _speed: 0 - _attack_damage: 0 - _attack_interval: 0 + _attack_damage: 2 + _attack_interval: 2 _enemy: {fileID: 0} - rangeOutline: {fileID: 4877144423808268021} - _range: 1 - _multiplier: 10 + rangeOutline: {fileID: 0} + _range: 0 + _multiplier: 0 + _yieldPrefabs: + - {fileID: 6962989255644195630, guid: a2dc5d9672c10074fa9c35c12f6339c1, type: 3} + - {fileID: 6962989255644195630, guid: 484f0eca1c74ae34694692de56a36739, type: 3} + - {fileID: 6962989255644195630, guid: f20569b5452c2b341a95d656b7534b7e, type: 3} + _randomPositionConfig: 0.5 + _harvestDuration: 5 + _yieldAmountPerResource: 5 --- !u!1 &5799165302180276253 GameObject: m_ObjectHideFlags: 0 @@ -176,7 +183,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 531d7966d86bd0c4d83baf58bcb56cd5, type: 3} m_Name: m_EditorClassIdentifier: - _entityLinked: {fileID: 3252807573666191813} + _entityLinked: {fileID: 0} --- !u!1 &6453988705367329854 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Ally/CorruptedFactory.cs b/Assets/Scripts/Ally/CorruptedFactory.cs index bf328a9..6ee4a3e 100644 --- a/Assets/Scripts/Ally/CorruptedFactory.cs +++ b/Assets/Scripts/Ally/CorruptedFactory.cs @@ -1,7 +1,61 @@ -using UnityEngine; +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}; } } + 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 _yieldPrefabs = new List(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; + } } \ No newline at end of file