la config des ennemis influencait la config des alliés, ce qui était un bug maintenant, il y a une config différente pour les alliés et les ennemis. l'animation d'attaque ne se terminait pas à temps pour faire le dégat, il a donc fallu multiplier la vitesse d'animation par le attack speed quand on attaque j'en ai profité pour faire la même chose pour le walk animation et le speed j'ai changé l'attribut des unités "attack speed" pour un "attack interval", pour que ça représente mieux son utilisation. Le multiplicateur reste sur la vitesse, et non sur l'interval. Les configs pour les ressources sont les valeurs des ressources directement (pas des multiplicateurs)
59 lines
1.9 KiB
C#
59 lines
1.9 KiB
C#
using UnityEngine;
|
|
using System.Collections.Generic;
|
|
using static Enum;
|
|
|
|
public class Harvester : Entity
|
|
{
|
|
[SerializeField] [Tooltip("helps choose the right skin for the harvester depending on resource")]
|
|
private List<HarvesterResourcePair> _harvesterResourcePairs;
|
|
protected ResourceChoice ResourceChoice => _resourceChoice;
|
|
|
|
public override Vector2 RangeMultiplier { get; }
|
|
|
|
public override float HpMultiplier { get; }
|
|
|
|
public override float SpeedMultiplier { get; }
|
|
|
|
public override float DamageMultiplier { get; }
|
|
|
|
public override float AttackSpeedMultiplier { get; }
|
|
|
|
[SerializeField]
|
|
private ResourceChoice _resourceChoice;
|
|
public override sealed void Start()
|
|
{
|
|
base.Start();
|
|
|
|
ChooseSkinForHarvester();
|
|
}
|
|
|
|
/// <summary>
|
|
/// changes the harvester's appearance depending on the resource they're harvesting
|
|
/// </summary>
|
|
private void ChooseSkinForHarvester()
|
|
{
|
|
//get the tile we're on
|
|
var tile = LevelManager.Instance.Get<ResourceTile>(t => t.Position == Position);
|
|
if (tile == default) return;
|
|
|
|
//get the resource of the tile we're on
|
|
var yieldPrefab = tile.YieldPrefab;
|
|
if (!yieldPrefab) return;
|
|
|
|
var resourceMaker = yieldPrefab.GetComponent<ResourceMaker>();
|
|
if (!resourceMaker) return;
|
|
|
|
//if we already have the right harvester for the resource, no need to change
|
|
var resourceChoice = resourceMaker.ResourceChoice;
|
|
if (resourceChoice == this.ResourceChoice) return;
|
|
|
|
//get the right pair for the resource we're on
|
|
var harvResPair = _harvesterResourcePairs.Find(hrp => hrp.Resource == resourceChoice);
|
|
if (harvResPair == null) return;
|
|
|
|
//exchange harvesters
|
|
var newHarvester = Instantiate(harvResPair.HarvesterPrefab, transform.position, Quaternion.identity);
|
|
newHarvester.transform.SetParent(transform.parent);
|
|
Destroy(gameObject);
|
|
}
|
|
} |