diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractNewSite.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractNewSite.java
index 3e394ec75..77ce0faac 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractNewSite.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractNewSite.java
@@ -4,6 +4,6 @@ import com.gempukku.lotro.common.Block;
public abstract class AbstractNewSite extends AbstractSite {
public AbstractNewSite(String name, int twilight, Direction direction) {
- super(name, Block.OTHER, 0, twilight, direction);
+ super(name, Block.SHADOWS, 0, twilight, direction);
}
}
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 dfb7ff894..05e135b92 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,5 @@
package com.gempukku.lotro.common;
public enum Block {
- FELLOWSHIP, TWO_TOWERS, KING, OTHER
+ FELLOWSHIP, TWO_TOWERS, KING, SHADOWS
}
diff --git a/gemp-lotr/gemp-lotr-server/pom.xml b/gemp-lotr/gemp-lotr-server/pom.xml
index 26359df30..52702bd7e 100644
--- a/gemp-lotr/gemp-lotr-server/pom.xml
+++ b/gemp-lotr/gemp-lotr-server/pom.xml
@@ -25,6 +25,11 @@
mysql-connector-java
5.1.17
+
+ com.googlecode.json-simple
+ json-simple
+ 1.1
+
commons-dbcp
commons-dbcp
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 7b598ce7b..0a63f6fde 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
@@ -12,7 +12,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-public abstract class DefaultLotroFormat implements LotroFormat {
+public class DefaultLotroFormat implements LotroFormat {
private LotroCardBlueprintLibrary _library;
private String _name;
private Block _siteBlock;
@@ -38,7 +38,7 @@ public abstract class DefaultLotroFormat implements LotroFormat {
@Override
public final boolean isOrderedSites() {
- return _siteBlock != Block.OTHER;
+ return _siteBlock != Block.SHADOWS;
}
@Override
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/ExpandedFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/ExpandedFormat.java
deleted file mode 100644
index db646798a..000000000
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/ExpandedFormat.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.gempukku.lotro.game.formats;
-
-import com.gempukku.lotro.common.Block;
-import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
-
-public class ExpandedFormat extends DefaultLotroFormat {
- public ExpandedFormat(LotroCardBlueprintLibrary library) {
- super(library, "Expanded", Block.OTHER, true, 60, 4, true, false);
- addValidSet(0);
- addValidSet(1);
- addValidSet(2);
- addValidSet(3);
- addValidSet(4);
- addValidSet(5);
- addValidSet(6);
- addValidSet(7);
- addValidSet(8);
- addValidSet(9);
- addValidSet(10);
- addValidSet(11);
- addValidSet(12);
- addValidSet(13);
- addValidSet(14);
- addValidSet(15);
- addValidSet(16);
- addValidSet(17);
- addValidSet(18);
- addValidSet(19);
-
- addBannedCard("1_45");
- addBannedCard("1_138");
- addBannedCard("1_234");
- addBannedCard("1_311");
- addBannedCard("1_313");
- addBannedCard("1_316");
- addBannedCard("2_121");
- addBannedCard("3_17");
- addBannedCard("3_38");
- addBannedCard("3_42");
- addBannedCard("3_67");
- addBannedCard("3_68");
- addBannedCard("3_108");
- addBannedCard("3_113");
- addBannedCard("4_73");
- addBannedCard("7_49");
- addBannedCard("8_1");
- addBannedCard("10_2");
- addBannedCard("10_11");
- addBannedCard("10_91");
- addBannedCard("11_31");
- addBannedCard("11_100");
- addBannedCard("11_132");
-
- addRestrictedCard("1_40");
- addRestrictedCard("1_80");
- addRestrictedCard("1_108");
- addRestrictedCard("1_139");
- addRestrictedCard("1_195");
- addRestrictedCard("1_248");
- addRestrictedCard("2_32");
- addRestrictedCard("2_75");
- addRestrictedCard("3_106");
- addRestrictedCard("4_276");
- addRestrictedCard("4_304");
- }
-}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/FotRBlockFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/FotRBlockFormat.java
deleted file mode 100644
index b3bcba91d..000000000
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/FotRBlockFormat.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.gempukku.lotro.game.formats;
-
-import com.gempukku.lotro.common.Block;
-import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
-
-public class FotRBlockFormat extends DefaultLotroFormat {
- public FotRBlockFormat(LotroCardBlueprintLibrary library) {
- super(library, "Fellowship block", Block.FELLOWSHIP, true, 60, 4, true, true);
- addRestrictedCard("1_248");
- addValidSet(1);
- addValidSet(2);
- addValidSet(3);
- }
-}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/KingBlockFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/KingBlockFormat.java
deleted file mode 100644
index 5f93cca87..000000000
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/KingBlockFormat.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.gempukku.lotro.game.formats;
-
-import com.gempukku.lotro.common.Block;
-import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
-
-public class KingBlockFormat extends DefaultLotroFormat {
- public KingBlockFormat(LotroCardBlueprintLibrary library) {
- super(library, "King block", Block.KING, true, 60, 4, true, true);
- addRestrictedCard("7_49");
- addValidSet(7);
- addValidSet(8);
- addValidSet(10);
- }
-}
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
new file mode 100644
index 000000000..c6348337a
--- /dev/null
+++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/LotroFormatLibrary.java
@@ -0,0 +1,80 @@
+package com.gempukku.lotro.game.formats;
+
+import com.gempukku.lotro.common.Block;
+import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
+import com.gempukku.lotro.game.LotroFormat;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class LotroFormatLibrary {
+ private Map _allFormats = new HashMap();
+ private Map _hallFormats = new LinkedHashMap();
+
+ public LotroFormatLibrary(LotroCardBlueprintLibrary library) {
+ try {
+ final InputStreamReader reader = new InputStreamReader(LotroFormatLibrary.class.getResourceAsStream("/lotrFormats.json"), "UTF-8");
+ try {
+ JSONParser parser = new JSONParser();
+ JSONArray object = (JSONArray) parser.parse(reader);
+ for (Object formatDefObj : object) {
+ JSONObject formatDef = (JSONObject) formatDefObj;
+ String formatCode = (String) formatDef.get("code");
+ String name = (String) formatDef.get("name");
+ Block block = Block.valueOf((String) formatDef.get("sites"));
+ Boolean cancelRingBearerSkirmish = (Boolean) formatDef.get("cancelRingBearerSkirmish");
+ if (cancelRingBearerSkirmish == null)
+ cancelRingBearerSkirmish = false;
+
+ final DefaultLotroFormat format = new DefaultLotroFormat(library, name, block, true, 60, 4, true, cancelRingBearerSkirmish);
+
+ JSONArray sets = (JSONArray) formatDef.get("set");
+ for (Object set : sets)
+ format.addValidSet(((Number) set).intValue());
+
+ JSONArray bannedCards = (JSONArray) formatDef.get("banned");
+ if (bannedCards != null)
+ for (Object bannedCard : bannedCards) {
+ format.addBannedCard((String) bannedCard);
+ }
+
+ JSONArray restrictedCards = (JSONArray) formatDef.get("restricted");
+ if (restrictedCards != null)
+ for (Object restricted : restrictedCards) {
+ format.addRestrictedCard((String) restricted);
+ }
+
+ _allFormats.put(formatCode, format);
+
+ Boolean hallFormat = (Boolean) formatDef.get("hall");
+ if (hallFormat == null)
+ hallFormat = true;
+ if (hallFormat)
+ _hallFormats.put(formatCode, format);
+ }
+ } catch (ParseException exp) {
+ throw new RuntimeException("Problem loading LotR formats", exp);
+ } finally {
+ reader.close();
+ }
+ } catch (IOException exp) {
+ throw new RuntimeException("Problem loading LotR formats", exp);
+ }
+ }
+
+ public Map getHallFormats() {
+ return Collections.unmodifiableMap(_hallFormats);
+ }
+
+ public LotroFormat getFormat(String formatCode) {
+ return _allFormats.get(formatCode);
+ }
+}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/MovieFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/MovieFormat.java
deleted file mode 100644
index b85912047..000000000
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/MovieFormat.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.gempukku.lotro.game.formats;
-
-import com.gempukku.lotro.common.Block;
-import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
-
-public class MovieFormat extends DefaultLotroFormat {
- public MovieFormat(LotroCardBlueprintLibrary library) {
- super(library, "Movie block", Block.KING, true, 60, 4, true, false);
- addBannedCard("8_1");
- addBannedCard("3_38");
- addBannedCard("3_106");
- addBannedCard("1_40");
- addBannedCard("2_32");
- addBannedCard("1_248");
- addBannedCard("3_108");
- addBannedCard("1_45");
- addBannedCard("7_96");
- addBannedCard("3_42");
- addBannedCard("10_2");
- addBannedCard("10_91");
- addBannedCard("1_108");
- addBannedCard("1_80");
- addBannedCard("3_67");
- addBannedCard("1_195");
- addBannedCard("3_68");
- addBannedCard("1_139");
- addBannedCard("7_49");
- addBannedCard("1_313");
- addBannedCard("1_234");
-
-
- addValidSet(1);
- addValidSet(2);
- addValidSet(3);
- addValidSet(4);
- addValidSet(5);
- addValidSet(6);
- addValidSet(7);
- addValidSet(8);
- addValidSet(9);
- addValidSet(10);
- }
-}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/OpenFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/OpenFormat.java
deleted file mode 100644
index d04cdd1cf..000000000
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/OpenFormat.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.gempukku.lotro.game.formats;
-
-import com.gempukku.lotro.common.Block;
-import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
-
-public class OpenFormat extends DefaultLotroFormat {
- public OpenFormat(LotroCardBlueprintLibrary library) {
- super(library, "Open", Block.OTHER, true, 60, 4, true, false);
- addValidSet(0);
- addValidSet(1);
- addValidSet(2);
- addValidSet(3);
- addValidSet(4);
- addValidSet(5);
- addValidSet(6);
- addValidSet(7);
- addValidSet(8);
- addValidSet(9);
- addValidSet(10);
- addValidSet(11);
- addValidSet(12);
- addValidSet(13);
- addValidSet(14);
- addValidSet(15);
- addValidSet(16);
- addValidSet(17);
- addValidSet(18);
- addValidSet(19);
-
- addRestrictedCard("1_248");
- addRestrictedCard("7_49");
- addRestrictedCard("10_2");
- addRestrictedCard("10_91");
- addRestrictedCard("11_100");
- addRestrictedCard("11_132");
- }
-}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TTTBlockFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TTTBlockFormat.java
deleted file mode 100644
index f7884fab0..000000000
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TTTBlockFormat.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.gempukku.lotro.game.formats;
-
-import com.gempukku.lotro.common.Block;
-import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
-
-public class TTTBlockFormat extends DefaultLotroFormat {
- public TTTBlockFormat(LotroCardBlueprintLibrary library) {
- super(library, "Two Towers block", Block.TWO_TOWERS, true, 60, 4, true, true);
- addValidSet(4);
- addValidSet(5);
- addValidSet(6);
- }
-}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TowersStandardFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TowersStandardFormat.java
deleted file mode 100644
index b35d29fdc..000000000
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TowersStandardFormat.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.gempukku.lotro.game.formats;
-
-import com.gempukku.lotro.common.Block;
-import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
-
-public class TowersStandardFormat extends DefaultLotroFormat {
- public TowersStandardFormat(LotroCardBlueprintLibrary library) {
- super(library, "Towers Standard", Block.TWO_TOWERS, true, 60, 4, true, true);
-
- addBannedCard("1_40");
- addBannedCard("1_45");
- addBannedCard("1_80");
- addBannedCard("1_108");
- addBannedCard("1_139");
- addBannedCard("1_234");
- addBannedCard("1_248");
- addBannedCard("1_313");
- addBannedCard("2_32");
- addBannedCard("2_101");
- addBannedCard("2_108");
- addBannedCard("3_38");
- addBannedCard("3_42");
- addBannedCard("3_68");
- addBannedCard("4_192");
-
- addValidSet(1);
- addValidSet(2);
- addValidSet(3);
- addValidSet(4);
- addValidSet(5);
- addValidSet(6);
- }
-}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/WarOfTheRingBlockFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/WarOfTheRingBlockFormat.java
deleted file mode 100644
index 49674d592..000000000
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/WarOfTheRingBlockFormat.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.gempukku.lotro.game.formats;
-
-import com.gempukku.lotro.common.Block;
-import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
-
-public class WarOfTheRingBlockFormat extends DefaultLotroFormat {
- public WarOfTheRingBlockFormat(LotroCardBlueprintLibrary library) {
- super(library, "War of the Ring block", Block.OTHER, true, 60, 4, true, false);
- addRestrictedCard("11_132");
- addRestrictedCard("11_100");
- addValidSet(11);
- addValidSet(12);
- addValidSet(13);
- }
-}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/WarOfTheRingStandardFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/WarOfTheRingStandardFormat.java
deleted file mode 100644
index 4349ccaed..000000000
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/WarOfTheRingStandardFormat.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.gempukku.lotro.game.formats;
-
-import com.gempukku.lotro.common.Block;
-import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
-
-public class WarOfTheRingStandardFormat extends DefaultLotroFormat {
- public WarOfTheRingStandardFormat(LotroCardBlueprintLibrary library) {
- super(library, "War of the Ring standard", Block.OTHER, true, 60, 4, true, false);
- addValidSet(4);
- addValidSet(5);
- addValidSet(6);
- addValidSet(7);
- addValidSet(8);
- addValidSet(9);
- addValidSet(10);
- addValidSet(11);
- addValidSet(12);
- addValidSet(13);
- addValidSet(14);
-
- addBannedCard("4_73");
- addBannedCard("4_276");
- addBannedCard("4_304");
- addBannedCard("7_49");
- addBannedCard("8_1");
- addBannedCard("10_2");
- addBannedCard("10_11");
- addBannedCard("10_91");
- addBannedCard("11_31");
- addBannedCard("11_100");
- addBannedCard("11_132");
- }
-}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java
index c0118ed79..56cbb2545 100644
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java
+++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java
@@ -6,13 +6,16 @@ import com.gempukku.lotro.collection.CollectionsManager;
import com.gempukku.lotro.db.vo.CollectionType;
import com.gempukku.lotro.db.vo.League;
import com.gempukku.lotro.game.*;
-import com.gempukku.lotro.game.formats.*;
+import com.gempukku.lotro.game.formats.LotroFormatLibrary;
import com.gempukku.lotro.league.LeagueSerieData;
import com.gempukku.lotro.league.LeagueService;
import com.gempukku.lotro.logic.timing.GameResultListener;
import com.gempukku.lotro.logic.vo.LotroDeck;
-import java.util.*;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
@@ -20,6 +23,7 @@ public class HallServer extends AbstractServer {
private ChatServer _chatServer;
private LeagueService _leagueService;
private LotroCardBlueprintLibrary _library;
+ private LotroFormatLibrary _formatLibrary;
private CollectionsManager _collectionsManager;
private LotroServer _lotroServer;
@@ -33,8 +37,6 @@ public class HallServer extends AbstractServer {
private boolean _shutdown;
- private Map _supportedFormats = new LinkedHashMap();
-
private ReadWriteLock _hallDataAccessLock = new ReentrantReadWriteLock(false);
private Map _awaitingTables = new LinkedHashMap();
@@ -42,23 +44,15 @@ public class HallServer extends AbstractServer {
private Map _lastVisitedPlayers = new HashMap();
- public HallServer(LotroServer lotroServer, ChatServer chatServer, LeagueService leagueService, LotroCardBlueprintLibrary library, CollectionsManager collectionsManager, boolean test) {
+ public HallServer(LotroServer lotroServer, ChatServer chatServer, LeagueService leagueService, LotroCardBlueprintLibrary library,
+ LotroFormatLibrary formatLibrary, CollectionsManager collectionsManager, boolean test) {
_lotroServer = lotroServer;
_chatServer = chatServer;
_leagueService = leagueService;
_library = library;
+ _formatLibrary = formatLibrary;
_collectionsManager = collectionsManager;
_chatServer.createChatRoom("Game Hall", 10);
-
- addFormat("fotr_block", new FotRBlockFormat(library));
- addFormat("ttt_block", new TTTBlockFormat(library));
- addFormat("towers_standard", new TowersStandardFormat(library));
- addFormat("king_block", new KingBlockFormat(library));
- addFormat("movie", new MovieFormat(library));
- addFormat("war_block", new WarOfTheRingBlockFormat(library));
- addFormat("war_standard", new WarOfTheRingStandardFormat(library));
- addFormat("open", new OpenFormat(library));
- addFormat("expanded", new ExpandedFormat(library));
}
public void setShutdown(boolean shutdown) {
@@ -75,16 +69,12 @@ public class HallServer extends AbstractServer {
_motd = motd;
}
- private void addFormat(String formatCode, LotroFormat format) {
- _supportedFormats.put(formatCode, format);
- }
-
public int getTablesCount() {
return _awaitingTables.size() + _runningTables.size();
}
public Map getSupportedFormats() {
- return Collections.unmodifiableMap(_supportedFormats);
+ return _formatLibrary.getHallFormats();
}
private void cancelWaitingTables() {
@@ -108,7 +98,7 @@ public class HallServer extends AbstractServer {
League league = null;
LeagueSerieData leagueSerie = null;
CollectionType collectionType = _allCardsCollectionType;
- LotroFormat format = _supportedFormats.get(type);
+ LotroFormat format = _formatLibrary.getHallFormats().get(type);
if (format == null) {
// Maybe it's a league format?
@@ -120,7 +110,7 @@ public class HallServer extends AbstractServer {
if (!_leagueService.canPlayRankedGame(league, leagueSerie, player.getName()))
throw new HallException("You have already played max games in league");
- format = _supportedFormats.get(leagueSerie.getFormat());
+ format = _formatLibrary.getFormat(leagueSerie.getFormat());
collectionType = leagueSerie.getCollectionType();
}
}
diff --git a/gemp-lotr/gemp-lotr-server/src/main/resources/lotrFormats.json b/gemp-lotr/gemp-lotr-server/src/main/resources/lotrFormats.json
new file mode 100644
index 000000000..9fbc0a0ce
--- /dev/null
+++ b/gemp-lotr/gemp-lotr-server/src/main/resources/lotrFormats.json
@@ -0,0 +1,69 @@
+[
+ {
+ "name": "Fellowship block",
+ "code": "fotr_block",
+ "sites": "FELLOWSHIP",
+ "cancelRingBearerSkirmish": true,
+ "restricted": ["1_248"],
+ "set": [1,2,3]
+ },
+ {
+ "name": "Towers block",
+ "code": "ttt_block",
+ "sites": "TWO_TOWERS",
+ "cancelRingBearerSkirmish": true,
+ "set":[4,5,6]
+ },
+ {
+ "name": "Towers standard",
+ "code":"towers_standard",
+ "sites": "TWO_TOWERS",
+ "cancelRingBearerSkirmish": true,
+ "banned": ["1_40","1_45","1_80","1_108","1_139","1_234","1_248","1_313","2_32","2_101","2_108","3_38","3_42","3_68","4_192"],
+ "set":[1,2,3,4,5,6]
+ },
+ {
+ "name": "King block",
+ "code": "king_block",
+ "sites": "KING",
+ "cancelRingBearerSkirmish": true,
+ "restricted": ["7_49"],
+ "set": [7,8,10]
+ },
+ {
+ "name": "Movie block",
+ "code": "movie",
+ "sites": "KING",
+ "banned": ["8_1","3_38","3_106","1_40","2_32","1_248","3_108","1_45","7_96","3_42","10_2","10_91","1_108","1_80","3_67","1_195","3_68","1_139","7_49","1_313","1_234"],
+ "set": [1,2,3,4,5,6,7,8,9,10]
+ },
+ {
+ "name": "War of the Ring block",
+ "code": "war_block",
+ "sites": "SHADOWS",
+ "restricted": ["11_132","11_100"],
+ "set": [11,12,13]
+ },
+ {
+ "name": "War of the Ring standard",
+ "code": "war_standard",
+ "sites": "SHADOWS",
+ "banned": ["4_73","4_276","4_304","7_49","8_1","10_2","10_11","10_91","11_31","11_100","11_132"],
+ "set": [4,5,6,7,8,9,10,11,12,13,14]
+ },
+ {
+ "name": "Open",
+ "code": "open",
+ "sites": "SHADOWS",
+ "restricted": ["1_248","7_49","10_2","10_91","11_100","11_132"],
+ "set": [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
+ },
+ {
+ "name": "Expanded",
+ "code": "expanded",
+ "sites": "SHADOWS",
+ "banned": ["1_45","1_138","1_234","1_311","1_313","1_316","2_121","3_17","3_38","3_42","3_67","3_68","3_108","3_113","4_73","7_49","8_1","10_2","10_11","10_91","11_31","11_100","11_132"],
+ "restricted": ["1_40","1_80","1_108","1_139","1_195","1_248","2_32","2_75","3_106","4_276","4_304"],
+ "set": [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
+ }
+]
\ No newline at end of file
diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AbstractAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AbstractAtTest.java
index e0c204ae5..2a6e3c43b 100644
--- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AbstractAtTest.java
+++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AbstractAtTest.java
@@ -2,8 +2,9 @@ package com.gempukku.lotro.at;
import com.gempukku.lotro.game.DefaultUserFeedback;
import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
+import com.gempukku.lotro.game.LotroFormat;
import com.gempukku.lotro.game.PhysicalCard;
-import com.gempukku.lotro.game.formats.MovieFormat;
+import com.gempukku.lotro.game.formats.LotroFormatLibrary;
import com.gempukku.lotro.logic.actions.SystemQueueAction;
import com.gempukku.lotro.logic.decisions.AwaitingDecision;
import com.gempukku.lotro.logic.decisions.CardActionSelectionDecision;
@@ -12,11 +13,12 @@ import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.DefaultLotroGame;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.vo.LotroDeck;
-import static org.junit.Assert.fail;
import org.junit.BeforeClass;
import java.util.*;
+import static org.junit.Assert.fail;
+
public abstract class AbstractAtTest {
protected static LotroCardBlueprintLibrary _library;
@@ -55,7 +57,8 @@ public abstract class AbstractAtTest {
protected void initializeGameWithDecks(Map decks) throws DecisionResultInvalidException {
_userFeedback = new DefaultUserFeedback();
- MovieFormat format = new MovieFormat(_library);
+ LotroFormatLibrary formatLibrary = new LotroFormatLibrary(_library);
+ LotroFormat format = formatLibrary.getFormat("movie");
_game = new DefaultLotroGame(format, decks, _userFeedback, _library);
_userFeedback.setGame(_game);
diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/game/formats/LotroFormatLibraryTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/game/formats/LotroFormatLibraryTest.java
new file mode 100644
index 000000000..a71eccbf2
--- /dev/null
+++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/game/formats/LotroFormatLibraryTest.java
@@ -0,0 +1,10 @@
+package com.gempukku.lotro.game.formats;
+
+import org.junit.Test;
+
+public class LotroFormatLibraryTest {
+ @Test
+ public void testLoad() {
+ LotroFormatLibrary library = new LotroFormatLibrary(null);
+ }
+}
diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerProvider.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerProvider.java
index 148824450..63bab4239 100644
--- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerProvider.java
+++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerProvider.java
@@ -6,6 +6,7 @@ import com.gempukku.lotro.collection.DeliveryService;
import com.gempukku.lotro.db.*;
import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
import com.gempukku.lotro.game.LotroServer;
+import com.gempukku.lotro.game.formats.LotroFormatLibrary;
import com.gempukku.lotro.hall.HallServer;
import com.gempukku.lotro.league.LeagueService;
import com.gempukku.lotro.trade.TradeServer;
@@ -27,6 +28,7 @@ public class ServerProvider implements InjectableProvider {
private Injectable _tradeServerInjectable;
private Injectable _collectionsManagerInjectable;
private Injectable _deliveryServiceInjectable;
+ private Injectable _lotroFormatLibraryInjectable;
@Context
private PlayerDAO _playerDao;
@@ -61,9 +63,24 @@ public class ServerProvider implements InjectableProvider {
return getTradeServerInjectable();
if (type.equals(DeliveryService.class))
return getDeliveryServiceInjectable();
+ if (type.equals(LotroFormatLibrary.class))
+ return getLotroFormatLibraryInjectable();
return null;
}
+ private synchronized Injectable getLotroFormatLibraryInjectable() {
+ if (_lotroFormatLibraryInjectable == null) {
+ final LotroFormatLibrary lotroFormatLibrary = new LotroFormatLibrary(_library);
+ _lotroFormatLibraryInjectable = new Injectable() {
+ @Override
+ public LotroFormatLibrary getValue() {
+ return lotroFormatLibrary;
+ }
+ };
+ }
+ return _lotroFormatLibraryInjectable;
+ }
+
private synchronized Injectable getLeagueServiceInjectable() {
if (_leagueServerInjectable == null) {
final LeagueService leagueService = new LeagueService(_leagueDao, _leaguePointsDao, _leagueMatchDao, getCollectionsManagerInjectable().getValue());
@@ -92,7 +109,8 @@ public class ServerProvider implements InjectableProvider {
private synchronized Injectable getHallServerInjectable() {
if (_hallServerInjectable == null) {
- final HallServer hallServer = new HallServer(getLotroServerInjectable().getValue(), getChatServerInjectable().getValue(), getLeagueServiceInjectable().getValue(), _library, getCollectionsManagerInjectable().getValue(), false);
+ final HallServer hallServer = new HallServer(getLotroServerInjectable().getValue(), getChatServerInjectable().getValue(), getLeagueServiceInjectable().getValue(), _library,
+ getLotroFormatLibraryInjectable().getValue(), getCollectionsManagerInjectable().getValue(), false);
hallServer.startServer();
_hallServerInjectable = new Injectable() {
@Override