mirror of
https://github.com/correl/mage.git
synced 2024-12-26 11:09:27 +00:00
* Implemented handling of up to for TargetAmount.
This commit is contained in:
parent
ac2a59fdc2
commit
e91639a478
2 changed files with 16 additions and 25 deletions
|
@ -52,7 +52,10 @@ public abstract class TargetAmount extends TargetImpl {
|
|||
|
||||
@Override
|
||||
public boolean doneChosing() {
|
||||
return amountWasSet && remainingAmount == 0;
|
||||
return amountWasSet
|
||||
&& (remainingAmount == 0
|
||||
|| (getMinNumberOfTargets() < getMaxNumberOfTargets()
|
||||
&& getTargets().size() >= getMinNumberOfTargets()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -85,9 +88,9 @@ public abstract class TargetAmount extends TargetImpl {
|
|||
|
||||
@Override
|
||||
public void remove(UUID id) {
|
||||
int amount = getTargetAmount(id);
|
||||
int usedAmount = getTargetAmount(id);
|
||||
super.remove(id);
|
||||
this.remainingAmount += amount;
|
||||
this.remainingAmount += usedAmount;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -95,16 +98,16 @@ public abstract class TargetAmount extends TargetImpl {
|
|||
if (!amountWasSet) {
|
||||
setAmount(source, game);
|
||||
}
|
||||
chosen = remainingAmount == 0;
|
||||
chosen = isChosen();
|
||||
while (remainingAmount > 0) {
|
||||
if (!getTargetController(game, playerId).chooseTargetAmount(outcome, this, source, game)) {
|
||||
if (!getTargetController(game, playerId).chooseTargetAmount(outcome, this, source, game)) {
|
||||
return chosen;
|
||||
}
|
||||
chosen = remainingAmount == 0;
|
||||
chosen = isChosen();
|
||||
}
|
||||
return chosen = true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<? extends TargetAmount> getTargetOptions(Ability source, Game game) {
|
||||
List<TargetAmount> options = new ArrayList<>();
|
||||
|
|
|
@ -78,26 +78,14 @@ public abstract class TargetPermanentAmount extends TargetAmount {
|
|||
|
||||
@Override
|
||||
public boolean canChoose(UUID sourceId, UUID sourceControllerId, Game game) {
|
||||
int count = 0;
|
||||
for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, sourceControllerId, sourceId, game)) {
|
||||
count++;
|
||||
if (count >= this.minNumberOfTargets) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return game.getBattlefield().getActivePermanents(filter, sourceControllerId, sourceId, game).size()
|
||||
>= this.minNumberOfTargets;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canChoose(UUID sourceControllerId, Game game) {
|
||||
int count = 0;
|
||||
for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, sourceControllerId, game)) {
|
||||
count++;
|
||||
if (count >= this.minNumberOfTargets) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return game.getBattlefield().getActivePermanents(filter, sourceControllerId, game).size()
|
||||
>= this.minNumberOfTargets;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -136,12 +124,12 @@ public abstract class TargetPermanentAmount extends TargetAmount {
|
|||
@Override
|
||||
public String getTargetedName(Game game) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (UUID targetId : getTargets()) {
|
||||
getTargets().forEach((targetId) -> {
|
||||
Permanent permanent = game.getPermanent(targetId);
|
||||
if (permanent != null) {
|
||||
sb.append(permanent.getLogName()).append('(').append(getTargetAmount(targetId)).append(") ");
|
||||
}
|
||||
}
|
||||
});
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue