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>
52 lines
1.4 KiB
C#
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);
|
|
}
|
|
} |