using UnityEngine; public abstract class ProductionBuilding : House { [SerializeField] private int _range; [SerializeField] private float _multiplier; public override float PopulationGiven => GlobalConfig.Instance.Current.populationGivenPerHouseUpgrade; protected abstract Enum.ResourceNodeType RessourceNodeType { get; } private Vector3 _position; public override void Start() { base.Start(); _position = Position; ApplyMultiplier(_multiplier); } public override void LevelDestroy() { ApplyMultiplier(1 / _multiplier); base.LevelDestroy(); } private void ApplyMultiplier(float multiplier) { for (int i = -_range; i <= _range; i++) { for (int j = -_range; j <= _range; j++) { Vector3 checkPosition = new Vector3(_position.x + i, _position.y + j, _position.z); var tile = LevelManager.Instance.Get(t => t.Position == checkPosition); if (tile == default) continue; var checkResourceType = tile.ResourceNodeType; if (checkResourceType != RessourceNodeType) continue; tile.YieldSpeedMultiplier *= multiplier; } } } }