mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
- Counters moved from being on Card to on GameEntity allowing Poison + Experience Counters to work the same as other counter types
- Improved some PlayerView updates which weren't re-writing player detail hoverbox often enough
This commit is contained in:
@@ -14,35 +14,7 @@ import forge.game.Game;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardCollection;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.event.GameEvent;
|
||||
import forge.game.event.GameEventAnteCardsSelected;
|
||||
import forge.game.event.GameEventAttackersDeclared;
|
||||
import forge.game.event.GameEventBlockersDeclared;
|
||||
import forge.game.event.GameEventCardAttachment;
|
||||
import forge.game.event.GameEventCardChangeZone;
|
||||
import forge.game.event.GameEventCardCounters;
|
||||
import forge.game.event.GameEventCardDamaged;
|
||||
import forge.game.event.GameEventCardPhased;
|
||||
import forge.game.event.GameEventCardStatsChanged;
|
||||
import forge.game.event.GameEventCardTapped;
|
||||
import forge.game.event.GameEventCombatChanged;
|
||||
import forge.game.event.GameEventCombatEnded;
|
||||
import forge.game.event.GameEventGameFinished;
|
||||
import forge.game.event.GameEventGameOutcome;
|
||||
import forge.game.event.GameEventManaPool;
|
||||
import forge.game.event.GameEventPlayerControl;
|
||||
import forge.game.event.GameEventPlayerLivesChanged;
|
||||
import forge.game.event.GameEventPlayerPoisoned;
|
||||
import forge.game.event.GameEventPlayerPriority;
|
||||
import forge.game.event.GameEventPlayerStatsChanged;
|
||||
import forge.game.event.GameEventShuffle;
|
||||
import forge.game.event.GameEventSpellAbilityCast;
|
||||
import forge.game.event.GameEventSpellRemovedFromStack;
|
||||
import forge.game.event.GameEventSpellResolved;
|
||||
import forge.game.event.GameEventTurnBegan;
|
||||
import forge.game.event.GameEventTurnPhase;
|
||||
import forge.game.event.GameEventZone;
|
||||
import forge.game.event.IGameEventVisitor;
|
||||
import forge.game.event.*;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.zone.PlayerZone;
|
||||
@@ -210,6 +182,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
||||
@Override
|
||||
public Void visit(final GameEventTurnBegan event) {
|
||||
turnUpdate = event.turnOwner.getView();
|
||||
processPlayer(event.turnOwner, livesUpdate);
|
||||
if (FModel.getPreferences().getPrefBoolean(FPref.UI_STACK_CREATURES) && event.turnOwner != null) {
|
||||
// anything except stack will get here
|
||||
updateZone(event.turnOwner, ZoneType.Battlefield);
|
||||
@@ -374,7 +347,9 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
||||
final CardCollection cards = new CardCollection();
|
||||
for (final Player p : event.players) {
|
||||
cards.addAll(p.getAllCards());
|
||||
processPlayer(p, livesUpdate);
|
||||
}
|
||||
|
||||
return processCards(cards, cardsRefreshDetails);
|
||||
}
|
||||
|
||||
@@ -397,4 +372,9 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
||||
public Void visit(final GameEventPlayerPoisoned event) {
|
||||
return processPlayer(event.receiver, livesUpdate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void visit(final GameEventPlayerCounters event) {
|
||||
return processPlayer(event.receiver, livesUpdate);
|
||||
}
|
||||
}
|
||||
@@ -31,12 +31,7 @@ public final class InputProliferate extends InputSelectManyBase<GameEntity> {
|
||||
}
|
||||
else {
|
||||
for (final Entry<GameEntity, CounterType> ge : chosenCounters.entrySet()) {
|
||||
if (ge.getKey() instanceof Player) {
|
||||
sb.append("* A poison counter to player ").append(ge.getKey()).append("\n");
|
||||
}
|
||||
else {
|
||||
sb.append("* ").append(ge.getKey()).append(" -> ").append(ge.getValue()).append("counter\n");
|
||||
}
|
||||
sb.append("* ").append(ge.getKey()).append(" -> ").append(ge.getValue()).append("counter\n");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,7 +74,8 @@ public final class InputProliferate extends InputSelectManyBase<GameEntity> {
|
||||
|
||||
@Override
|
||||
protected final void onPlayerSelected(final Player player, final ITriggerEvent triggerEvent) {
|
||||
if (player.getPoisonCounters() == 0 || player.hasKeyword("You can't get poison counters")) {
|
||||
if (!player.hasCounters()) {
|
||||
// Can't select a player without counters
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -87,7 +83,21 @@ public final class InputProliferate extends InputSelectManyBase<GameEntity> {
|
||||
if (entityWasSelected) {
|
||||
this.chosenCounters.remove(player);
|
||||
} else {
|
||||
this.chosenCounters.put(player, null /* POISON counter is meant */);
|
||||
final List<CounterType> choices = new ArrayList<CounterType>();
|
||||
|
||||
for (final CounterType ct : player.getCounters().keySet()) {
|
||||
if (player.getCounters(ct) > 0) {
|
||||
choices.add(ct);
|
||||
}
|
||||
}
|
||||
if (player.hasKeyword("You can't get poison counters")) {
|
||||
choices.remove(CounterType.POISON);
|
||||
}
|
||||
|
||||
final CounterType toAdd = choices.size() == 1 ? choices.get(0) : getController().getGui().one("Select counter type", choices);
|
||||
chosenCounters.put(player, toAdd);
|
||||
|
||||
this.chosenCounters.put(player, CounterType.POISON);
|
||||
}
|
||||
|
||||
refresh();
|
||||
|
||||
Reference in New Issue
Block a user