mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
@@ -1166,7 +1166,7 @@ public final class CMatchUI
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayerZoneUpdates openZones(PlayerView controller, final Collection<ZoneType> zones, final Map<PlayerView, Object> playersWithTargetables) {
|
||||
public PlayerZoneUpdates openZones(PlayerView controller, final Collection<ZoneType> zones, final Map<PlayerView, Object> playersWithTargetables, boolean backupLastZones) {
|
||||
final PlayerZoneUpdates zonesToUpdate = new PlayerZoneUpdates();
|
||||
for (final PlayerView view : playersWithTargetables.keySet()) {
|
||||
for(final ZoneType zone : zones) {
|
||||
|
||||
@@ -56,12 +56,7 @@ public class AchievementsScreen extends FScreen {
|
||||
|
||||
cbCollections.setSelectedIndex(0);
|
||||
cbCollections.setAlignment(Align.center);
|
||||
cbCollections.setChangedHandler(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
setAchievements(cbCollections.getSelectedItem());
|
||||
}
|
||||
});
|
||||
cbCollections.setChangedHandler(e -> setAchievements(cbCollections.getSelectedItem()));
|
||||
setAchievements(cbCollections.getSelectedItem());
|
||||
}
|
||||
|
||||
|
||||
@@ -81,6 +81,7 @@ public class MatchController extends AbstractGuiGame {
|
||||
}
|
||||
|
||||
private final Map<PlayerView, InfoTab> zonesToRestore = Maps.newHashMap();
|
||||
private final Map<PlayerView, InfoTab> lastZonesToRestore = Maps.newHashMap();
|
||||
|
||||
public static MatchScreen getView() {
|
||||
return view;
|
||||
@@ -376,7 +377,7 @@ public class MatchController extends AbstractGuiGame {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayerZoneUpdates openZones(PlayerView controller, final Collection<ZoneType> zones, final Map<PlayerView, Object> playersWithTargetables) {
|
||||
public PlayerZoneUpdates openZones(PlayerView controller, final Collection<ZoneType> zones, final Map<PlayerView, Object> playersWithTargetables, boolean backupLastZones) {
|
||||
PlayerZoneUpdates updates = new PlayerZoneUpdates();
|
||||
if (zones.size() == 1) {
|
||||
final ZoneType zoneType = zones.iterator().next();
|
||||
@@ -385,10 +386,13 @@ public class MatchController extends AbstractGuiGame {
|
||||
case Command:
|
||||
playersWithTargetables.clear(); //clear since no zones need to be restored
|
||||
default:
|
||||
lastZonesToRestore.clear();
|
||||
//open zone tab for given zone if needed
|
||||
boolean result = true;
|
||||
for (final PlayerView player : playersWithTargetables.keySet()) {
|
||||
final VPlayerPanel playerPanel = view.getPlayerPanel(player);
|
||||
if (backupLastZones)
|
||||
lastZonesToRestore.put(player, playerPanel.getSelectedTab());
|
||||
playersWithTargetables.put(player, playerPanel.getSelectedTab()); //backup selected tab before changing it
|
||||
final InfoTab zoneTab = playerPanel.getZoneTab(zoneType);
|
||||
updates.add(new PlayerZoneUpdate(player, zoneType));
|
||||
@@ -418,8 +422,14 @@ public class MatchController extends AbstractGuiGame {
|
||||
continue;
|
||||
}
|
||||
|
||||
final InfoTab zoneTab = playerPanel.getZoneTab(zone);
|
||||
playerPanel.setSelectedTab(zoneTab);
|
||||
//final InfoTab zoneTab = playerPanel.getZoneTab(zone);
|
||||
//playerPanel.setSelectedTab(zoneTab);
|
||||
}
|
||||
for (Map.Entry<PlayerView, InfoTab> e : lastZonesToRestore.entrySet()) {
|
||||
if (e.getKey() != null && !e.getKey().getHasLost()) {
|
||||
final VPlayerPanel p = view.getPlayerPanel(e.getKey());
|
||||
p.setSelectedTab(e.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ public class VStack extends FDropDown {
|
||||
}
|
||||
}
|
||||
if (zones.isEmpty() || playersWithValidTargets.isEmpty()) { return; }
|
||||
restorablePlayerZones = MatchController.instance.openZones(player, zones, playersWithValidTargets);
|
||||
restorablePlayerZones = MatchController.instance.openZones(player, zones, playersWithValidTargets, true);
|
||||
}
|
||||
|
||||
//restore old zones when active stack instance changes
|
||||
@@ -288,59 +288,45 @@ public class VStack extends FDropDown {
|
||||
final String key = stackInstance.getKey();
|
||||
final boolean autoYield = gui.shouldAutoYield(key);
|
||||
addItem(new FCheckBoxMenuItem(Forge.getLocalizer().getMessage("cbpAutoYieldMode"), autoYield,
|
||||
new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
gui.setShouldAutoYield(key, !autoYield);
|
||||
if (!autoYield && stackInstance.equals(gameView.peekStack())) {
|
||||
//auto-pass priority if ability is on top of stack
|
||||
controller.passPriority();
|
||||
}
|
||||
}
|
||||
}));
|
||||
e -> {
|
||||
gui.setShouldAutoYield(key, !autoYield);
|
||||
if (!autoYield && stackInstance.equals(gameView.peekStack())) {
|
||||
//auto-pass priority if ability is on top of stack
|
||||
controller.passPriority();
|
||||
}
|
||||
}));
|
||||
if (stackInstance.isOptionalTrigger() && stackInstance.getActivatingPlayer().equals(player)) {
|
||||
final int triggerID = stackInstance.getSourceTrigger();
|
||||
addItem(new FCheckBoxMenuItem(Forge.getLocalizer().getMessage("lblAlwaysYes"),
|
||||
gui.shouldAlwaysAcceptTrigger(triggerID),
|
||||
new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
if (gui.shouldAlwaysAcceptTrigger(triggerID)) {
|
||||
gui.setShouldAlwaysAskTrigger(triggerID);
|
||||
}
|
||||
else {
|
||||
gui.setShouldAlwaysAcceptTrigger(triggerID);
|
||||
if (stackInstance.equals(gameView.peekStack())) {
|
||||
//auto-yes if ability is on top of stack
|
||||
controller.selectButtonOk();
|
||||
e -> {
|
||||
if (gui.shouldAlwaysAcceptTrigger(triggerID)) {
|
||||
gui.setShouldAlwaysAskTrigger(triggerID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}));
|
||||
else {
|
||||
gui.setShouldAlwaysAcceptTrigger(triggerID);
|
||||
if (stackInstance.equals(gameView.peekStack())) {
|
||||
//auto-yes if ability is on top of stack
|
||||
controller.selectButtonOk();
|
||||
}
|
||||
}
|
||||
}));
|
||||
addItem(new FCheckBoxMenuItem(Forge.getLocalizer().getMessage("lblAlwaysNo"),
|
||||
gui.shouldAlwaysDeclineTrigger(triggerID),
|
||||
new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
if (gui.shouldAlwaysDeclineTrigger(triggerID)) {
|
||||
gui.setShouldAlwaysAskTrigger(triggerID);
|
||||
}
|
||||
else {
|
||||
gui.setShouldAlwaysDeclineTrigger(triggerID);
|
||||
if (stackInstance.equals(gameView.peekStack())) {
|
||||
//auto-no if ability is on top of stack
|
||||
controller.selectButtonCancel();
|
||||
e -> {
|
||||
if (gui.shouldAlwaysDeclineTrigger(triggerID)) {
|
||||
gui.setShouldAlwaysAskTrigger(triggerID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}));
|
||||
else {
|
||||
gui.setShouldAlwaysDeclineTrigger(triggerID);
|
||||
if (stackInstance.equals(gameView.peekStack())) {
|
||||
//auto-no if ability is on top of stack
|
||||
controller.selectButtonCancel();
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
addItem(new FMenuItem(Forge.getLocalizer().getMessage("lblZoomOrDetails"), new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
CardZoom.show(stackInstance.getSourceCard());
|
||||
}
|
||||
}));
|
||||
addItem(new FMenuItem(Forge.getLocalizer().getMessage("lblZoomOrDetails"), e -> CardZoom.show(stackInstance.getSourceCard())));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -295,7 +295,7 @@ public class NetGuiGame extends AbstractGuiGame {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayerZoneUpdates openZones(PlayerView controller, final Collection<ZoneType> zones, final Map<PlayerView, Object> players) {
|
||||
public PlayerZoneUpdates openZones(PlayerView controller, final Collection<ZoneType> zones, final Map<PlayerView, Object> players, boolean backupLastZones) {
|
||||
updateGameView();
|
||||
return sendAndWait(ProtocolMethod.openZones, controller, zones, players);
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
||||
}
|
||||
if (showExileUpdate) {
|
||||
showExileUpdate = false;
|
||||
matchController.openZones(activatingPlayer, Collections.singleton(ZoneType.Exile), playersWithValidTargets);
|
||||
matchController.openZones(activatingPlayer, Collections.singleton(ZoneType.Exile), playersWithValidTargets, false);
|
||||
activatingPlayer = null;
|
||||
playersWithValidTargets.clear();
|
||||
}
|
||||
@@ -259,12 +259,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
||||
} else {
|
||||
processEvent();
|
||||
|
||||
final Runnable notifyStackAddition = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
matchController.notifyStackAddition(event);
|
||||
}
|
||||
};
|
||||
final Runnable notifyStackAddition = () -> matchController.notifyStackAddition(event);
|
||||
GuiBase.getInterface().invokeInEdtLater(notifyStackAddition);
|
||||
}
|
||||
return null;
|
||||
@@ -284,12 +279,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
||||
} else {
|
||||
processEvent();
|
||||
|
||||
final Runnable notifyStackAddition = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
matchController.notifyStackRemoval(event);
|
||||
}
|
||||
};
|
||||
final Runnable notifyStackAddition = () -> matchController.notifyStackRemoval(event);
|
||||
GuiBase.getInterface().invokeInEdtLater(notifyStackAddition);
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -165,7 +165,7 @@ public interface IGuiGame {
|
||||
|
||||
void setCard(CardView card);
|
||||
void setPlayerAvatar(LobbyPlayer player, IHasIcon ihi);
|
||||
PlayerZoneUpdates openZones(PlayerView controller, Collection<ZoneType> zones, Map<PlayerView, Object> players);
|
||||
PlayerZoneUpdates openZones(PlayerView controller, Collection<ZoneType> zones, Map<PlayerView, Object> players, boolean backupLastZones);
|
||||
void restoreOldZones(PlayerView playerView, PlayerZoneUpdates playerZoneUpdates);
|
||||
void setHighlighted(PlayerView pv, boolean b);
|
||||
void setUsedToPay(CardView card, boolean value);
|
||||
|
||||
@@ -192,7 +192,7 @@ public class TargetSelection {
|
||||
}
|
||||
|
||||
PlayerView playerView = controller.getLocalPlayerView();
|
||||
PlayerZoneUpdates playerZoneUpdates = controller.getGui().openZones(playerView, zones, playersWithValidTargets);
|
||||
PlayerZoneUpdates playerZoneUpdates = controller.getGui().openZones(playerView, zones, playersWithValidTargets, true);
|
||||
if (!zones.contains(ZoneType.Stack)) {
|
||||
InputSelectTargets inp = new InputSelectTargets(controller, validTargets, ability, mandatory, divisionValues, filter, mustTargetFiltered);
|
||||
inp.showAndWait();
|
||||
|
||||
Reference in New Issue
Block a user