if (_bank.takeAwayMoney(p, penalty) == false) {
List<ILand> confiscated = new ArrayList<ILand>();
ILand lastLand = _bank.confiscateLand(p);
while (lastLand != null) {
GameModelEvent event = new GameModelEvent(this, lastLand,
p, _bank);
fireLandChangedOwner(event);
confiscated.add(lastLand);
if (_bank.takeAwayMoney(p, penalty)) {
break;
}
lastLand = _bank.confiscateLand(p);
}
if (confiscated.isEmpty() == false) {
GameModelEvent event = new GameModelEvent(this, p, confiscated);
firePlayerLandsConfiscated(event);
}
if (lastLand == null) {
finishGamePlayer(p);
} else {
GameModelEvent event = new GameModelEvent(this, p, penalty);
firePlayerReceivedPenalty(event);
}
} else {
GameModelEvent event = new GameModelEvent(this, p, penalty);
firePlayerReceivedPenalty(event);
}
identifyGameOver();
}