fixed mill production boost with farms

This commit is contained in:
Adam Salah 2025-07-27 16:46:54 -04:00
parent cd1ebf968d
commit 0c6a21ba6a
2 changed files with 31 additions and 18 deletions

View File

@ -2,5 +2,5 @@
public class Mill : ProductionBuilding public class Mill : ProductionBuilding
{ {
protected override Enum.ResourceNodeType RessourceNodeType { get { return Enum.ResourceNodeType.BerryBush; } } protected override Enum.ResourceNodeType RessourceNodeType { get { return Enum.ResourceNodeType.Farm; } }
} }

View File

@ -1,4 +1,6 @@
using UnityEngine; using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public abstract class ProductionBuilding : House public abstract class ProductionBuilding : House
{ {
@ -7,31 +9,24 @@ public abstract class ProductionBuilding : House
[SerializeField] [SerializeField]
private float _multiplier; private float _multiplier;
private const float _pollNearbyTilesInterval = 1.0f;
public override float PopulationGiven => GlobalConfig.Instance.Current.populationGivenPerHouseUpgrade; public override float PopulationGiven => GlobalConfig.Instance.Current.populationGivenPerHouseUpgrade;
protected abstract Enum.ResourceNodeType RessourceNodeType { get; } protected abstract Enum.ResourceNodeType RessourceNodeType { get; }
private Vector3 _position; private Vector3 _position;
private List<ResourceTile> _tilesInRange = new List<ResourceTile>();
public override void Start() public override void Start()
{ {
base.Start(); base.Start();
_position = Position; _position = Position;
ApplyMultiplier(_multiplier);
StartCoroutine(PollNearbyTiles());
} }
public override void LevelStart() IEnumerator PollNearbyTiles()
{
base.LevelStart();
}
public override void LevelDestroy()
{ {
ApplyMultiplier(1 / _multiplier); ApplyMultiplier(1 / _multiplier);
base.LevelDestroy();
}
private void ApplyMultiplier(float multiplier)
{
int x = 0;
for (int i = -_range; i <= _range; i++) for (int i = -_range; i <= _range; i++)
{ {
for (int j = -_range; j <= _range; j++) for (int j = -_range; j <= _range; j++)
@ -43,10 +38,28 @@ public abstract class ProductionBuilding : House
var checkResourceType = tile.ResourceNodeType; var checkResourceType = tile.ResourceNodeType;
if (checkResourceType != RessourceNodeType) continue; if (checkResourceType != RessourceNodeType) continue;
if (!_tilesInRange.Contains(tile))
{
_tilesInRange.Add(tile);
}
}
}
ApplyMultiplier(_multiplier);
yield return new WaitForSeconds(_pollNearbyTilesInterval);
StartCoroutine(PollNearbyTiles());
}
public override void LevelDestroy()
{
ApplyMultiplier(1 / _multiplier);
base.LevelDestroy();
}
private void ApplyMultiplier(float multiplier)
{
foreach (var tile in _tilesInRange)
{
tile.YieldSpeedMultiplier *= multiplier; tile.YieldSpeedMultiplier *= multiplier;
x++;
} }
} }
Debug.Log(x);
}
} }