using System.Collections.Generic;
using Net.Eagle0.Eagle.Common;
using UnityEngine;

namespace eagle {
    public abstract class BattalionDisplayInfo {
        public Texture Image { get; }
        public double Cost { get; }
        public int Capacity { get; }
        public abstract int Count { get; }
        public abstract double? Armament { get; }
        public abstract double? Training { get; }
        public abstract BattalionTypeId TypeId { get; }
        public abstract string Name { get; }

        public virtual List<BattalionComponent> Components { get; }

        public bool Open { get; set; }

        public BattalionDisplayInfo(Texture image, double cost, int capacity) {
            Image = image;
            Cost = cost;
            Capacity = capacity;
        }
    }

    public struct BattalionComponent {
        public int count;
        public double armament;
        public double training;

        public enum ComponentSource { originalTroops, mergedTroops, newTroops }

        public ComponentSource? source;
    }
}