From bb851f6c572aa692c8caf7852a8bd003d3585216 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Mon, 2 Apr 2012 08:49:02 +0000 Subject: [PATCH] - Added Standard format and format result are generated. --- .../java/com/gempukku/lotro/common/Block.java | 12 ++++- .../com/gempukku/lotro/game/LotroFormat.java | 11 ++++ .../game/formats/DefaultLotroFormat.java | 51 +++++++++++++++---- .../src/main/resources/lotrFormats.json | 2 +- .../gempukku/lotro/server/HallResource.java | 47 +++++++++++++++++ .../gemp-lotr-web/src/main/webapp/hall.html | 2 +- 6 files changed, 113 insertions(+), 12 deletions(-) diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Block.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Block.java index 05e135b92..e094a7a4a 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Block.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Block.java @@ -1,5 +1,15 @@ package com.gempukku.lotro.common; public enum Block { - FELLOWSHIP, TWO_TOWERS, KING, SHADOWS + FELLOWSHIP("Fellowship"), TWO_TOWERS("Towers"), KING("King"), SHADOWS("Shadows"); + + private String _humanReadable; + + private Block(String humanReadable) { + _humanReadable = humanReadable; + } + + public String getHumanReadable() { + return _humanReadable; + } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java index 08de84515..9b42a7d1f 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java @@ -1,7 +1,10 @@ package com.gempukku.lotro.game; +import com.gempukku.lotro.common.Block; import com.gempukku.lotro.logic.vo.LotroDeck; +import java.util.List; + public interface LotroFormat { public boolean isOrderedSites(); @@ -12,4 +15,12 @@ public interface LotroFormat { public String getName(); public void validateDeck(Player player, LotroDeck deck) throws DeckInvalidException; + + public List getValidSets(); + + public List getBannedCards(); + + public List getRestrictedCards(); + + public Block getSiteBlock(); } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/DefaultLotroFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/DefaultLotroFormat.java index 473078d66..7e06dce47 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/DefaultLotroFormat.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/DefaultLotroFormat.java @@ -8,10 +8,7 @@ import com.gempukku.lotro.game.*; import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.vo.LotroDeck; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; public class DefaultLotroFormat implements LotroFormat { private LotroCardBlueprintLibrary _library; @@ -22,9 +19,9 @@ public class DefaultLotroFormat implements LotroFormat { private boolean _mulliganRule; private boolean _canCancelRingBearerSkirmish; private int _minimumDeckSize = 60; - private Set _bannedCards = new HashSet(); - private Set _restrictedCards = new HashSet(); - private Set _validSets = new HashSet(); + private List _bannedCards = new ArrayList(); + private List _restrictedCards = new ArrayList(); + private List _validSets = new ArrayList(); public DefaultLotroFormat(LotroCardBlueprintLibrary library, String name, Block siteBlock, boolean validateShadowFPCount, int minimumDeckSize, int maximumSameName, boolean mulliganRule, boolean canCancelRingBearerSkirmish) { _library = library; @@ -57,12 +54,48 @@ public class DefaultLotroFormat implements LotroFormat { return _canCancelRingBearerSkirmish; } + @Override + public List getValidSets() { + return Collections.unmodifiableList(_validSets); + } + + @Override + public List getBannedCards() { + return Collections.unmodifiableList(_bannedCards); + } + + @Override + public List getRestrictedCards() { + return Collections.unmodifiableList(_restrictedCards); + } + + @Override + public Block getSiteBlock() { + return _siteBlock; + } + protected void addBannedCard(String baseBlueprintId) { - _bannedCards.add(baseBlueprintId); + if (baseBlueprintId.contains("-")) { + String[] parts = baseBlueprintId.split("_"); + String set = parts[0]; + int from = Integer.parseInt(parts[1].split("-")[0]); + int to = Integer.parseInt(parts[1].split("-")[1]); + for (int i = from; i <= to; i++) + _bannedCards.add(set + "_" + i); + } else + _bannedCards.add(baseBlueprintId); } protected void addRestrictedCard(String baseBlueprintId) { - _restrictedCards.add(baseBlueprintId); + if (baseBlueprintId.contains("-")) { + String[] parts = baseBlueprintId.split("_"); + String set = parts[0]; + int from = Integer.parseInt(parts[1].split("-")[0]); + int to = Integer.parseInt(parts[1].split("-")[1]); + for (int i = from; i <= to; i++) + _restrictedCards.add(set + "_" + i); + } else + _restrictedCards.add(baseBlueprintId); } protected void addValidSet(int setNo) { diff --git a/gemp-lotr/gemp-lotr-server/src/main/resources/lotrFormats.json b/gemp-lotr/gemp-lotr-server/src/main/resources/lotrFormats.json index 5cacf9fa7..da4495568 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/resources/lotrFormats.json +++ b/gemp-lotr/gemp-lotr-server/src/main/resources/lotrFormats.json @@ -89,7 +89,7 @@ "name": "Standard", "code": "standard", "sites": "SHADOWS", - "banned": ["0_62","0_63","0_64","0_65","0_66","0_67","8_1","13_188","11_114","11_31","10_11","15_64","10_2","10_91","11_132","7_49","11_100"], + "banned": ["0_1-19","0_21","0_22","0_30-47","0_62-67","8_1","13_188","11_114","11_31","10_11","15_64","10_2","10_91","11_132","7_49","11_100"], "set": [0,7,8,9,10,11,12,13,14,15,16,17,18,19] }, { diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/HallResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/HallResource.java index afd79b2ce..b1b70cf88 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/HallResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/HallResource.java @@ -1,13 +1,16 @@ package com.gempukku.lotro.server; import com.gempukku.lotro.db.vo.League; +import com.gempukku.lotro.game.LotroCardBlueprintLibrary; import com.gempukku.lotro.game.LotroFormat; import com.gempukku.lotro.game.Player; +import com.gempukku.lotro.game.formats.LotroFormatLibrary; import com.gempukku.lotro.hall.HallException; import com.gempukku.lotro.hall.HallInfoVisitor; import com.gempukku.lotro.hall.HallServer; import com.gempukku.lotro.league.LeagueSerieData; import com.gempukku.lotro.league.LeagueService; +import com.gempukku.lotro.logic.GameUtils; import com.sun.jersey.spi.resource.Singleton; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -30,6 +33,50 @@ public class HallResource extends AbstractResource { private HallServer _hallServer; @Context private LeagueService _leagueService; + @Context + private LotroFormatLibrary _formatLibrary; + @Context + private LotroCardBlueprintLibrary _library; + + @Path("/formats/html") + @GET + @Produces(MediaType.TEXT_HTML) + public String getFormats( + @Context HttpServletResponse response) { + + response.setCharacterEncoding("UTF-8"); + + StringBuilder result = new StringBuilder(); + for (LotroFormat lotroFormat : _formatLibrary.getHallFormats().values()) { + result.append("" + lotroFormat.getName() + ""); + result.append("
    "); + result.append("
  • valid sets: "); + for (Integer integer : lotroFormat.getValidSets()) + result.append(integer + ", "); + result.append("
  • "); + result.append("
  • sites from block: " + lotroFormat.getSiteBlock().getHumanReadable() + "
  • "); + result.append("
  • Ring-bearer skirmish can be cancelled: " + (lotroFormat.canCancelRingBearerSkirmish() ? "yes" : "no") + "
  • "); + result.append("
  • X-listed: "); + for (String blueprintId : lotroFormat.getBannedCards()) { + String fullName = GameUtils.getFullName(_library.getLotroCardBlueprint(blueprintId)); + result.append("" + fullName + ", "); + } + if (lotroFormat.getBannedCards().size() == 0) + result.append("none,"); + result.append("
  • "); + result.append("
  • R-listed: "); + for (String blueprintId : lotroFormat.getRestrictedCards()) { + String fullName = GameUtils.getFullName(_library.getLotroCardBlueprint(blueprintId)); + result.append("" + fullName + ", "); + } + if (lotroFormat.getRestrictedCards().size() == 0) + result.append("none,"); + result.append("
  • "); + result.append("
"); + } + + return result.toString(); + } @GET @Produces(MediaType.APPLICATION_XML) diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/hall.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/hall.html index 026bc0f41..41f669ecf 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/hall.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/hall.html @@ -229,7 +229,7 @@
  • Leagues
  • League Rules (updated)
  • Manual
  • -
  • Format Rules
  • +
  • Format Rules
  • Contribute