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.ProductionFrontier;
/**
* Change a players production frontier.
*/
class ProductionFrontierChange extends Change {
private final String m_startFrontier;
private final String m_endFrontier;
private final String m_player;
private static final long serialVersionUID = 3336145814067456701L;
ProductionFrontierChange(final ProductionFrontier newFrontier, final PlayerID player) {
m_startFrontier = player.getProductionFrontier().getName();
m_endFrontier = newFrontier.getName();
m_player = player.getName();
}
ProductionFrontierChange(final String startFrontier, final String endFrontier, final String player) {
m_startFrontier = startFrontier;
m_endFrontier = endFrontier;
m_player = player;
}
@Override
protected void perform(final GameData data) {
final PlayerID player = data.getPlayerList().getPlayerID(m_player);
final ProductionFrontier frontier = data.getProductionFrontierList().getProductionFrontier(m_endFrontier);
player.setProductionFrontier(frontier);
}
@Override
public Change invert() {
return new ProductionFrontierChange(m_endFrontier, m_startFrontier, m_player);
}
}