package com.bernard.greposimu.model.simulator;

import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import com.bernard.greposimu.model.game.units.Unit;

public class Troupes {

	Map<Unit,Integer> unites;

	public Troupes(Map<Unit, Integer> unites) {
		this.unites = unites;
	}
	
	public Map<Unit, Integer> getUnites() {
		return unites;
	}
	
	public static final Troupes add(Troupes a, Troupes b) {
		return new Troupes(
			Stream.concat(a.unites.keySet().stream(), b.unites.keySet().stream())
			.distinct().collect(Collectors.toMap(Function.identity(),
					u -> a.unites.getOrDefault(u, 0)+b.unites.getOrDefault(u, 0)))
		);
	}
	
	public int pop() {
		return unites.entrySet().stream().mapToInt(e -> e.getValue()*e.getKey().getPopulation()).sum();
	}

	@Override
	public String toString() {
		return "Troupes [unites=" + unites + "]";
	}
	
	
}
