package flyweight;

import java.util.LinkedList;
import java.util.List;

public class CompositeItem extends SimpleItem {
	private List<Item> components;

	public CompositeItem() {
		super();
		components = new LinkedList<Item>();
	}

	public CompositeItem(String name, String description) {
		super(0, 0.0, name, description);
	}

	@Override
	public double getWeight() {
		double weight = 0.0;
		for (Item i : components) {
			weight += i.getWeight();
		}
		return weight;
	}

	@Override
	public int getHitPoints() {
		int hp = 0;
		for (Item i : components) {
			hp += i.getHitPoints();
		}
		return hp;
	}

	@Override
	public int getAge() {
		int maxAge = 0;
		for (Item i : components) {
			if (i.getAge() > maxAge) {
				maxAge = i.getAge();
			}
		}
		return maxAge;
	}

	@Override
	public double getValue() {
		double value = 0.0;
		for (Item i : components) {
			value += i.getValue();
		}
		return value;
	}

	@Override
	public void setDamage(int damage) {
		for (Item i : components) {
			i.setDamage(damage);
		}
	}
}