package games.strategy.engine.data.changefactory;
import games.strategy.engine.data.Change;
import games.strategy.engine.data.GameData;
import games.strategy.engine.data.PlayerID;
import games.strategy.engine.data.TechnologyFrontier;
import games.strategy.triplea.delegate.TechAdvance;
class RemoveAvailableTech extends Change {
private static final long serialVersionUID = 6131447662760022521L;
private final TechAdvance m_tech;
private final TechnologyFrontier m_frontier;
private final PlayerID m_player;
public RemoveAvailableTech(final TechnologyFrontier front, final TechAdvance tech, final PlayerID player) {
if (front == null) {
throw new IllegalArgumentException("Null tech category");
}
if (tech == null) {
throw new IllegalArgumentException("Null tech");
}
m_tech = tech;
m_frontier = front;
m_player = player;
}
@Override
public void perform(final GameData data) {
final TechnologyFrontier front = m_player.getTechnologyFrontierList().getTechnologyFrontier(m_frontier.getName());
front.removeAdvance(m_tech);
}
@Override
public Change invert() {
return new AddAvailableTech(m_frontier, m_tech, m_player);
}
}