From 9ce0315c3ea8814feb635d06dbd99815b9f50057 Mon Sep 17 00:00:00 2001 From: "Jamin W. Collins" Date: Wed, 21 Feb 2018 17:10:51 -0700 Subject: [PATCH 1/3] give remote players 5 minutes per question Signed-off-by: Jamin W. Collins --- forge-gui/src/main/java/forge/net/ReplyPool.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/src/main/java/forge/net/ReplyPool.java b/forge-gui/src/main/java/forge/net/ReplyPool.java index bea35cfe8cd..ce1431b6002 100644 --- a/forge-gui/src/main/java/forge/net/ReplyPool.java +++ b/forge-gui/src/main/java/forge/net/ReplyPool.java @@ -34,7 +34,7 @@ public class ReplyPool { future = pool.get(Integer.valueOf(index)); } try { - return future.get(1, TimeUnit.MINUTES); + return future.get(5, TimeUnit.MINUTES); } catch (final InterruptedException | ExecutionException e) { throw new RuntimeException(e); } From 5b0b719ce974c9bd97c012980f2a8be3241c5014 Mon Sep 17 00:00:00 2001 From: "Jamin W. Collins" Date: Wed, 21 Feb 2018 17:13:33 -0700 Subject: [PATCH 2/3] use SpellAbilityView for generic effect choice(s) Signed-off-by: Jamin W. Collins --- .../java/forge/player/PlayerControllerHuman.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 8fac6cca207..76fabee21ec 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -51,6 +51,7 @@ import forge.match.input.*; import forge.model.FModel; import forge.properties.ForgeConstants; import forge.properties.ForgePreferences.FPref; +import forge.trackable.TrackableObject; import forge.util.ITriggerEvent; import forge.util.Lang; import forge.util.MessageUtil; @@ -468,9 +469,18 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont // Show the card that asked for this choice getGui().setCard(CardView.get(sa.getHostCard())); + // create a mapping between a spell's view and the spell itself + HashMap spellViewCache = new HashMap<>(); + for (SpellAbility spellAbility : spells) { + spellViewCache.put(spellAbility.getView(), spellAbility); + } + List choices = new ArrayList<>(); + choices.addAll(spellViewCache.keySet()); + Object choice = getGui().one(title, choices); + // Human is supposed to read the message and understand from it what to // choose - return getGui().one(title, spells); + return spellViewCache.get(choice); } /* From 21d6b02410d2b7692bcfda38be35fe2cd7d4c025 Mon Sep 17 00:00:00 2001 From: "Jamin W. Collins" Date: Wed, 21 Feb 2018 17:16:28 -0700 Subject: [PATCH 3/3] submit previous deck if sideboarding timeout occurs Signed-off-by: Jamin W. Collins --- .../java/forge/player/PlayerControllerHuman.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 76fabee21ec..ed3481dd817 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -252,7 +252,19 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont // Sideboard rules have changed for M14, just need to consider min // maindeck and max sideboard sizes // No longer need 1:1 sideboarding in non-limited formats - newMain = getGui().sideboard(sideboard, main); + Object resp = getGui().sideboard(sideboard, main); + if (resp instanceof List && + !((List) resp).isEmpty() && + ((List) resp).get(0) instanceof PaperCard) { + newMain = (List) resp; + } else if (resp == null) { + // if we got here, the user took too long to reply + newMain = main.toFlatList(); + } else { + System.err.println("PlayerControllerHuman.sideboard -- FAILED!"); + System.err.println("resp instanceof " + resp.getClass().toString()); + System.err.println("resp = " + resp.toString()); + } } while (conform && (newMain.size() < deckMinSize || combinedDeckSize - newMain.size() > sbMax)); return newMain;