Fixed Corrupted Factory Speed Issue

Fixed the issue where the Production Speed didn't apply to the Corrupted Factory.
This commit is contained in:
MaximilienBizien 2026-02-01 14:46:25 -05:00
parent 4acb02fb33
commit bb82c4e068
14 changed files with 109 additions and 11 deletions

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c600d43f63096264391f008ee593ad11
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e8e522bd1638e1d41b54f58896041ee0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2109b1496efd35c4cb299c29b223480d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9e63d811db9104443a2e9b77be80c6d7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 16476b5ee9ff78f4984ef8fffb24d601
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 57bf5ff10983291468c87e714b50672d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2708064ba72d3ae48b25c7955dec3128
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 73178500426f29c44847ab2a50e529e2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d01228fd516e86641a1cf536c2577cd9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 183f7ea9c6b90dd4390a6b8852d11590
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -104,7 +104,7 @@ MonoBehaviour:
_enemy: {fileID: 0} _enemy: {fileID: 0}
rangeOutline: {fileID: 0} rangeOutline: {fileID: 0}
_range: 0 _range: 0
_multiplier: 0 _multiplier: 1.15
_yieldPrefabs: _yieldPrefabs:
- {fileID: 6962989255644195630, guid: a2dc5d9672c10074fa9c35c12f6339c1, type: 3} - {fileID: 6962989255644195630, guid: a2dc5d9672c10074fa9c35c12f6339c1, type: 3}
- {fileID: 6962989255644195630, guid: 484f0eca1c74ae34694692de56a36739, type: 3} - {fileID: 6962989255644195630, guid: 484f0eca1c74ae34694692de56a36739, type: 3}

View File

@ -105,7 +105,7 @@ MonoBehaviour:
_enemy: {fileID: 0} _enemy: {fileID: 0}
rangeOutline: {fileID: 4877144423808268021} rangeOutline: {fileID: 4877144423808268021}
_range: 1 _range: 1
_multiplier: 10 _multiplier: 100000
--- !u!114 &5887580710472258969 --- !u!114 &5887580710472258969
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -3,7 +3,7 @@ using UnityEngine;
public class CorruptedFactory : ProductionBuilding 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. //Détermine le type de resources dont la production sera boosté.
protected override Enum.ResourceNodeType[] RessourceNodeType { get { return new Enum.ResourceNodeType [] { Enum.ResourceNodeType.Forest, Enum.ResourceNodeType.Rock, Enum.ResourceNodeType.BerryBush, Enum.ResourceNodeType.Farm}; } } protected override Enum.ResourceNodeType[] RessourceNodeType { get { return new Enum.ResourceNodeType [] { Enum.ResourceNodeType.Forest, Enum.ResourceNodeType.Rock, Enum.ResourceNodeType.BerryBush, Enum.ResourceNodeType.Farm}; } }
/** /**
@ -21,11 +21,27 @@ public class CorruptedFactory : ProductionBuilding
private int _yieldAmountPerResource = 1; private int _yieldAmountPerResource = 1;
private float _yieldCounter = 0; private float _yieldCounter = 0;
private float _yieldSpeedMultiplier = 1.0f; private ResourceTile tile;
public override void Start()
{
base.Start();
for (int i = -_range; i <= _range; i++)
{
for (int j = -_range; j <= _range; j++)
{
Vector3 checkPosition = new Vector3(Mathf.Floor(_position.x) + i, Mathf.Floor(_position.y) + j, 0.0f);
this.tile = LevelManager.Instance.Get<ResourceTile>(t => t.Position == checkPosition);
}
}
}
public override void LevelStart() public override void LevelStart()
{ {
base.LevelStart(); base.LevelStart();
ResetYieldDuration(); ResetYieldDuration();
} }
public override void Update() public override void Update()
@ -34,8 +50,6 @@ public class CorruptedFactory : ProductionBuilding
_yieldCounter -= Time.deltaTime; _yieldCounter -= Time.deltaTime;
if (_yieldCounter > 0) return; if (_yieldCounter > 0) return;
ResetYieldDuration();
if (_yieldPrefabs.Count > 0) if (_yieldPrefabs.Count > 0)
{ {
for (int i = 0; i < _yieldPrefabs.Count; i++) for (int i = 0; i < _yieldPrefabs.Count; i++)
@ -45,6 +59,7 @@ public class CorruptedFactory : ProductionBuilding
YieldResource(_yieldPrefabs[i]); YieldResource(_yieldPrefabs[i]);
} }
} }
ResetYieldDuration();
} }
} }
private void YieldResource(GameObject yield) private void YieldResource(GameObject yield)
@ -54,8 +69,9 @@ public class CorruptedFactory : ProductionBuilding
var yielded = Instantiate(yield, yieldPosition, Quaternion.identity); var yielded = Instantiate(yield, yieldPosition, Quaternion.identity);
yielded.transform.SetParent(LevelManager.Instance.LevelTransform); yielded.transform.SetParent(LevelManager.Instance.LevelTransform);
} }
private void ResetYieldDuration() private void ResetYieldDuration()
{ {
_yieldCounter = _harvestDuration / _yieldSpeedMultiplier; _yieldCounter = _harvestDuration / this.tile.YieldSpeedMultiplier;
} }
} }

View File

@ -3,7 +3,7 @@
public abstract class ProductionBuilding : House public abstract class ProductionBuilding : House
{ {
[SerializeField] [SerializeField]
private int _range; protected int _range;
[SerializeField] [SerializeField]
private float _multiplier; private float _multiplier;
@ -11,7 +11,7 @@ public abstract class ProductionBuilding : House
protected abstract Enum.ResourceNodeType[] RessourceNodeType { get; } protected abstract Enum.ResourceNodeType[] RessourceNodeType { get; }
public int Range { get => _range; set => _range = value; } public int Range { get => _range; set => _range = value; }
private Vector3 _position; protected Vector3 _position;
public override void Start() public override void Start()
{ {
@ -27,7 +27,7 @@ public abstract class ProductionBuilding : House
public override void LevelDestroy() public override void LevelDestroy()
{ {
ApplyMultiplier(1 / _multiplier); ApplyMultiplier(_multiplier);
base.LevelDestroy(); base.LevelDestroy();
} }
@ -39,10 +39,11 @@ public abstract class ProductionBuilding : House
{ {
Vector3 checkPosition = new Vector3(Mathf.Floor(_position.x) + i, Mathf.Floor(_position.y) + j, 0.0f); Vector3 checkPosition = new Vector3(Mathf.Floor(_position.x) + i, Mathf.Floor(_position.y) + j, 0.0f);
var tile = LevelManager.Instance.Get<ResourceTile>(t => t.Position == checkPosition); var tile = LevelManager.Instance.Get<ResourceTile>(t => t.Position == checkPosition);
if (tile == default) continue; if (tile == default) continue;
var checkResourceType = tile.ResourceNodeType; var checkResourceType = tile.ResourceNodeType;
if (!isValidResourceType(tile.ResourceNodeType)) continue; if (!isValidResourceType(checkResourceType)) continue;
tile.YieldSpeedMultiplier *= multiplier; tile.YieldSpeedMultiplier *= multiplier;
} }
@ -51,6 +52,7 @@ public abstract class ProductionBuilding : House
private bool isValidResourceType (Enum.ResourceNodeType tileRessourceType) private bool isValidResourceType (Enum.ResourceNodeType tileRessourceType)
{ {
for(int i = 0; i < RessourceNodeType.Length; i++) for(int i = 0; i < RessourceNodeType.Length; i++)
{ {
if (tileRessourceType == RessourceNodeType[i]) return true; if (tileRessourceType == RessourceNodeType[i]) return true;