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.Resource;
import games.strategy.engine.data.ResourceCollection;
/**
* Adds/removes resource from a player.
*/
class ChangeResourceChange extends Change {
private static final long serialVersionUID = -2304294240555842126L;
private final String m_player;
private final String m_resource;
private final int m_quantity;
ChangeResourceChange(final PlayerID player, final Resource resource, final int quantity) {
m_player = player.getName();
m_resource = resource.getName();
m_quantity = quantity;
}
private ChangeResourceChange(final String player, final String resource, final int quantity) {
m_player = player;
m_resource = resource;
m_quantity = quantity;
}
@Override
public Change invert() {
return new ChangeResourceChange(m_player, m_resource, -m_quantity);
}
@Override
protected void perform(final GameData data) {
final Resource resource = data.getResourceList().getResource(m_resource);
final ResourceCollection resources = data.getPlayerList().getPlayerID(m_player).getResources();
if (m_quantity > 0) {
resources.addResource(resource, m_quantity);
} else if (m_quantity < 0) {
resources.removeResource(resource, -m_quantity);
}
}
@Override
public String toString() {
return "Change resource. Resource:" + m_resource + " quantity:" + m_quantity + " Player:" + m_player;
}
}