Added Yield production

This commit is contained in:
Ader Alisma 01 2025-11-12 21:23:52 -05:00
parent bb144275d5
commit 4acb02fb33
2 changed files with 72 additions and 11 deletions

View File

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

View File

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