From 5446b06a17866e4bc442aa1d92fedc24b1c82d7e Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Sat, 23 Nov 2024 18:34:04 -0600 Subject: [PATCH] Added ESC key dismissal for arbitrary card dialogs whose minimum is satisified. Fixed stacked cards never getting marked inactive. --- .../src/main/web/js/gemp-022/gameUi.js | 20 ++++++++++++++++++- .../gempukku/lotro/game/state/GameState.java | 12 +++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/gameUi.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/gameUi.js index aed25ee88..be9b75357 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/gameUi.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/gameUi.js @@ -81,6 +81,8 @@ var GempLotrGameUI = Class.extend({ decisionTime: 0, totalTime: 0, countdownIntervalId: 0, + + escFunction: null, init: function (url, replayMode) { this.replayMode = replayMode; @@ -121,6 +123,15 @@ var GempLotrGameUI = Class.extend({ var cardData = $(obj).data("card"); return (cardData != null && ($.inArray(cardData.cardId, cardIds) > -1)); }; + + if(!this.replayMode) { + $(document).keydown(function(e) { + //console.log(e.keyCode); + if(e.keyCode == 27 && that.escFunction != null) { + that.escFunction(); + } + }); + } if (this.replayMode) { var replayDiv = $("
"); @@ -1915,7 +1926,7 @@ var GempLotrGameUI = Class.extend({ this.cardActionDialog .html("
") .dialog("option", "title", text); - + // Create the action cards and fill the dialog with them for (var i = 0; i < blueprintIds.length; i++) { var cardId = cardIds[i]; @@ -1941,11 +1952,18 @@ var GempLotrGameUI = Class.extend({ } var finishChoice = function () { + if (selectedCardIds.length < min) + return; + that.cardActionDialog.dialog("close"); $("#arbitraryChoice").html(""); that.clearSelection(); that.decisionFunction(id, "" + selectedCardIds); + + that.escFunction = null; }; + + this.escFunction = finishChoice; var resetChoice = function () { selectedCardIds = new Array(); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java index f8303b83e..32bc0a3e2 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java @@ -14,6 +14,7 @@ import java.security.InvalidParameterException; import java.util.*; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors; +import java.util.stream.Stream; public class GameState { private static final Logger _log = LogManager.getLogger(GameState.class); @@ -831,7 +832,7 @@ public class GameState { } public Set getInactiveCards() { - return _inPlay.stream() + return Stream.concat(_inPlay.stream(), _stacked.values().stream().flatMap(Collection::stream)) .filter(x -> !isCardInPlayActive(x)) .collect(Collectors.toSet()); } @@ -870,15 +871,18 @@ public class GameState { if (card.getBlueprint().getCardType() == CardType.THE_ONE_RING) return card.getOwner().equals(_currentPlayerId); + if (card.getAttachedTo() != null) + return isCardInPlayActive(card.getAttachedTo()); + + if(card.getStackedOn() != null) + return isCardInPlayActive(card.getStackedOn()); + if (card.getOwner().equals(_currentPlayerId) && side == Side.SHADOW) return false; if (!card.getOwner().equals(_currentPlayerId) && side == Side.FREE_PEOPLE) return false; - if (card.getAttachedTo() != null) - return isCardInPlayActive(card.getAttachedTo()); - return true; }