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