public UnitData(UnitDataSO unitDataSO, List <UnitAbility> unitAbilities, List <Goal> goals, Color color, Vector3 initialPosition)
 {
     MaxHp         = unitDataSO.health;
     BaseDamage    = unitDataSO.baseDamage;
     Color         = color;
     UnitAbilities = unitAbilities;
     Goals         = goals;
     Position      = initialPosition;
 }
    public static List <UnitAbility> GetUnitAbilities(UnitDataSO unitDataSO)
    {
        List <UnitAbility> unitAbilities = new List <UnitAbility>();

        foreach (var abilitySetup in unitDataSO.abilities)
        {
            var unitAbility = GetUnitAbility(abilitySetup);
            unitAbilities.Add(unitAbility);
        }

        return(unitAbilities);
    }
 public static Unit GetUnit(UnitIdentifier unitIdentifier, UnitDataSO unitDataSO, Vector3 initialPosition)
 {
     return
         (new Unit(unitIdentifier,
                   new UnitData(unitDataSO,
                                UnitAbilityFactory.GetUnitAbilities(unitDataSO),
                                unitDataSO.goalOrientedBehaviourPresetSO.goals,
                                unitIdentifier.TeamId == 0
                     ? Color.green
                     : Color.red,
                                initialPosition)
                   ));
 }