From 7bcc48041c6e39ec6723842c57fb088e7d3709ce Mon Sep 17 00:00:00 2001 From: "jakub.salavec" Date: Tue, 17 Jun 2025 14:57:00 +0200 Subject: [PATCH] Added - choosing sealed formats for open play can be done by json modification + json reload --- .../handler/TournamentRequestHandler.java | 14 ++------------ .../resources/sealed/sealed_formats.hjson | 7 +++++++ .../com/gempukku/lotro/common/JSONDefs.java | 1 + .../game/formats/LotroFormatLibrary.java | 19 ++++++++++++++++++- .../lotro/league/SealedEventDefinition.java | 5 ++++- 5 files changed, 32 insertions(+), 14 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/TournamentRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/TournamentRequestHandler.java index 998a49d45..7333aaa11 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/TournamentRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/TournamentRequestHandler.java @@ -97,15 +97,6 @@ public class TournamentRequestHandler extends LotroServerRequestHandler implemen private void getTournamentFormats(HttpRequest request, ResponseWriter responseWriter) { JSONDefs.PlayerMadeTournamentAvailableFormats data = new JSONDefs.PlayerMadeTournamentAvailableFormats(); - Map availableSealedFormats = new HashMap<>(); - availableSealedFormats.put("single_fotr_block_sealed", "Fellowship Block Sealed"); - availableSealedFormats.put("single_ttt_block_sealed", "Towers Block Sealed"); - availableSealedFormats.put("single_ts_sealed", "Towers Standard Sealed"); - availableSealedFormats.put("single_rotk_block_sealed", "King Block Sealed"); - availableSealedFormats.put("single_movie_sealed", "Movie Sealed"); - availableSealedFormats.put("single_wotr_block_sealed", "War of the Ring Block Sealed"); - availableSealedFormats.put("single_th_block_sealed", "Hunters Block Sealed"); - Map availableSoloDraftFormats = new HashMap<>(); availableSoloDraftFormats.put("fotr_draft", "Fellowship Block"); availableSoloDraftFormats.put("ttt_draft", "Towers Block"); @@ -115,9 +106,8 @@ public class TournamentRequestHandler extends LotroServerRequestHandler implemen data.constructed = _formatLibrary.getHallFormats().values().stream() .map(constructedFormat -> new JSONDefs.ItemStub(constructedFormat.getCode(), constructedFormat.getName())) .collect(Collectors.toList()); - data.sealed = _formatLibrary.GetAllSealedTemplates().values().stream() - .filter(sealedEventDefinition -> availableSealedFormats.containsKey(sealedEventDefinition.GetID())) - .map(sealed -> new JSONDefs.ItemStub(sealed.GetID(), availableSealedFormats.get(sealed.GetID()))) + data.sealed = _formatLibrary.getAllHallSealedTemplates().values().stream() + .map(sealed -> new JSONDefs.ItemStub(sealed.GetID(), sealed.GetName().substring(3))) .collect(Collectors.toList()); data.soloDrafts = orderedSoloDrafts.stream() .filter(code -> _soloDraftDefinitions.getAllSoloDrafts().values().stream().anyMatch(soloDraft -> code.equals(soloDraft.getCode()))).map(code -> new JSONDefs.ItemStub(code, availableSoloDraftFormats.get(code))) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/sealed/sealed_formats.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/sealed/sealed_formats.hjson index 08db00cb2..c44920a3c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/sealed/sealed_formats.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/sealed/sealed_formats.hjson @@ -492,6 +492,7 @@ name: 15 Single Series Fellowship Block Sealed id: single_fotr_block_sealed format: limited_fotr + hall: true seriesProduct: [ [ 1x(S)FotR Block Choice - Starter @@ -509,6 +510,7 @@ name: 16 Single Series Towers Block Sealed id: single_ttt_block_sealed format: limited_ttt + hall: true seriesProduct: [ [ 1x(S)TTT Block Choice - Starter @@ -526,6 +528,7 @@ name: 17 Single Series Towers Standard Sealed id: single_ts_sealed format: limited_ttt + hall: true seriesProduct: [ [ 1x(S)TS Special Choice - Starter @@ -544,6 +547,7 @@ name: 18 Single Series King Block Sealed id: single_rotk_block_sealed format: limited_king + hall: true seriesProduct: [ [ 1x(S)RotK Block Choice - Starter @@ -567,6 +571,7 @@ name: 19 Single Series Movie Sealed id: single_movie_sealed format: limited_king + hall: true seriesProduct: [ [ 1x(S)Movie Special Choice - Starter @@ -588,6 +593,7 @@ name: 20 Single Series War of the Ring Block Sealed id: single_wotr_block_sealed format: limited_shadows + hall: true seriesProduct: [ [ 1x(S)WotR Choice - Starter @@ -611,6 +617,7 @@ name: 21 Single Series Hunters Block Sealed id: single_th_block_sealed format: limited_hunters + hall: true seriesProduct: [ [ 1x(S)HU Block Choice - Starter diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/JSONDefs.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/JSONDefs.java index a2582fb5b..3a2bb1623 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/JSONDefs.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/JSONDefs.java @@ -20,6 +20,7 @@ public class JSONDefs { public String id; public String format; public List> seriesProduct; + public boolean hall = false; } public static class ItemStub { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/LotroFormatLibrary.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/LotroFormatLibrary.java index 0dd3ea55f..4bcf866ea 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/LotroFormatLibrary.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/LotroFormatLibrary.java @@ -21,6 +21,7 @@ public class LotroFormatLibrary { private final Map _hallFormats = new LinkedHashMap<>(); private final Map _sealedTemplates = new LinkedHashMap<>(); + private final Map _hallSealedTemplates = new LinkedHashMap<>(); private final AdventureLibrary _adventureLibrary; private final LotroCardBlueprintLibrary _cardLibrary; @@ -48,6 +49,7 @@ public class LotroFormatLibrary { try { collectionReady.acquire(); _sealedTemplates.clear(); + _hallSealedTemplates.clear(); loadSealedTemplates(_sealedPath); collectionReady.release(); } catch (InterruptedException e) { @@ -88,12 +90,15 @@ public class LotroFormatLibrary { for (var def : defs) { if(def == null) continue; - var sealed = new SealedEventDefinition(def.name, def.id, _allFormats.get(def.format), def.seriesProduct); + var sealed = new SealedEventDefinition(def.name, def.id, _allFormats.get(def.format), def.seriesProduct, def.hall); if(_sealedTemplates.containsKey(def.id)) { System.out.println("Overwriting existing sealed definition '" + def.id + "'!"); } _sealedTemplates.put(def.id, sealed); + if (def.hall) { + _hallSealedTemplates.put(def.id, sealed); + } } } catch (IOException e) { @@ -224,6 +229,18 @@ public class LotroFormatLibrary { } } + public Map getAllHallSealedTemplates() { + try { + collectionReady.acquire(); + var data = Collections.unmodifiableMap(_hallSealedTemplates); + collectionReady.release(); + return data; + } + catch (InterruptedException exp) { + throw new RuntimeException("FormatLibrary.getAllHallSealedTemplates() interrupted: ", exp); + } + } + public SealedEventDefinition GetSealedTemplateByFormatCode(String formatCode) { try { collectionReady.acquire(); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/SealedEventDefinition.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/SealedEventDefinition.java index 8a60f9133..c296abc1c 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/SealedEventDefinition.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/SealedEventDefinition.java @@ -14,11 +14,13 @@ public class SealedEventDefinition { private final String _id; private final LotroFormat _format; private final List> _seriesProduct = new ArrayList<>(); + private final boolean _hallVisible; - public SealedEventDefinition(String name, String id, LotroFormat format, List> product) { + public SealedEventDefinition(String name, String id, LotroFormat format, List> product, boolean hallVisible) { _name = name; _id = id; _format = format; + _hallVisible = hallVisible; for(var serie : product) { List items = new ArrayList<>(); @@ -47,6 +49,7 @@ public class SealedEventDefinition { seriesProduct = _seriesProduct.stream() .map(x->x.stream().map(CardCollection.Item::toString).collect(Collectors.toList())) .collect(Collectors.toList()); + hall = _hallVisible; }}; } }