forked from External/mage
Make the handling of counters more consistent.
This dramatically reduces the code duplication around counters handling.
This commit is contained in:
parent
148f633672
commit
bec11804f5
11 changed files with 116 additions and 134 deletions
|
|
@ -1838,19 +1838,30 @@ public abstract class PlayerImpl implements Player, Serializable {
|
|||
|
||||
@Override
|
||||
public boolean addCounters(Counter counter, Game game) {
|
||||
boolean returnState = true;
|
||||
int amount = counter.getCount();
|
||||
for (int i = 0; i < amount; i++) {
|
||||
Counter eventCounter = counter.copy();
|
||||
eventCounter.remove(amount - 1);
|
||||
if (!game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.ADD_COUNTER, playerId, playerId, counter.getName(), counter.getCount()))) {
|
||||
counters.addCounter(eventCounter);
|
||||
game.fireEvent(GameEvent.getEvent(EventType.COUNTER_ADDED, playerId, playerId, counter.getName(), counter.getCount()));
|
||||
} else {
|
||||
returnState = false;
|
||||
boolean returnCode = true;
|
||||
GameEvent countersEvent = GameEvent.getEvent(EventType.ADD_COUNTERS, playerId, playerId, counter.getName(), counter.getCount());
|
||||
if (!game.replaceEvent(countersEvent)) {
|
||||
int amount = countersEvent.getAmount();
|
||||
int finalAmount = amount;
|
||||
for (int i = 0; i < amount; i++) {
|
||||
Counter eventCounter = counter.copy();
|
||||
eventCounter.remove(amount - 1);
|
||||
GameEvent event = GameEvent.getEvent(EventType.ADD_COUNTER, playerId, playerId, counter.getName(), 1);
|
||||
if (!game.replaceEvent(event)) {
|
||||
getCounters().addCounter(eventCounter);
|
||||
game.fireEvent(GameEvent.getEvent(EventType.COUNTER_ADDED, playerId, playerId, counter.getName(), 1));
|
||||
} else {
|
||||
finalAmount--;
|
||||
returnCode = false;
|
||||
}
|
||||
}
|
||||
if(finalAmount > 0) {
|
||||
game.fireEvent(GameEvent.getEvent(EventType.COUNTERS_ADDED, playerId, playerId, counter.getName(), amount));
|
||||
}
|
||||
} else {
|
||||
returnCode = false;
|
||||
}
|
||||
return returnState;
|
||||
return returnCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue