package games.strategy.engine.data.changefactory; import java.util.ArrayList; import java.util.Collection; import games.strategy.engine.data.Change; import games.strategy.engine.data.GameData; import games.strategy.engine.data.Unit; import games.strategy.engine.data.UnitCollection; import games.strategy.engine.data.UnitHolder; /** * Add units. */ class AddUnits extends Change { private static final long serialVersionUID = 2694342784633196289L; private final String m_name; private final Collection<Unit> m_units; private final String m_type; AddUnits(final UnitCollection collection, final Collection<Unit> units) { m_units = new ArrayList<>(units); m_name = collection.getHolder().getName(); m_type = collection.getHolder().getType(); } AddUnits(final String name, final String type, final Collection<Unit> units) { m_units = new ArrayList<>(units); m_type = type; m_name = name; } @Override public Change invert() { return new RemoveUnits(m_name, m_type, m_units); } @Override protected void perform(final GameData data) { final UnitHolder holder = data.getUnitHolder(m_name, m_type); holder.getUnits().addAllUnits(m_units); } @Override public String toString() { return "Add unit change. Add to:" + m_name + " units:" + m_units; } }