gather-and-defend/Assets/Scripts/Ally/ProductionBuilding.cs
Adam e66e1089a6 Production buildings (Mill, Workshop, Blacksmith) (#10)
Les valeurs de productions sont boostées pour tester.
L'outline drag and drop doit être redimensionner manuellement dû à des contraintes d'ordre d'éxecution (l'outline est créé avant qu'on puisse modifier la taille dans un script).
L'art est placeholder.

Reviewed-on: #10
Reviewed-by: Ader_Alisma <ader.alisma.1@ens.etsmtl.ca>
Co-authored-by: Adam <adam-hamid.salah-salah.1@ens.etsmtl.ca>
Co-committed-by: Adam <adam-hamid.salah-salah.1@ens.etsmtl.ca>
2025-07-14 22:28:00 +00:00

52 lines
1.4 KiB
C#

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 LevelStart()
{
base.LevelStart();
}
public override void LevelDestroy()
{
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++)
{
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);
if (tile == default) continue;
var checkResourceType = tile.ResourceNodeType;
if (checkResourceType != RessourceNodeType) continue;
tile.YieldSpeedMultiplier *= multiplier;
x++;
}
}
Debug.Log(x);
}
}