From 2899e4e3729cc696c01cb503cc53c0177bdd1610 Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Thu, 4 Jan 2018 05:57:11 -0800 Subject: [PATCH] Started working on solo draft --- .../lotro/draft2/DefaultSoloDraft.java | 35 +++++++++ .../lotro/draft2/SoloDraftDefinitions.java | 52 +++++++++++++- .../gempukku/lotro/draft2/SoloDraftPicks.java | 13 ++++ .../src/main/resources/draft/hobbit.json | 71 +++++++++++++++++++ .../src/main/resources/lotrDrafts.json | 6 ++ 5 files changed, 175 insertions(+), 2 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft2/DefaultSoloDraft.java create mode 100644 gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft2/SoloDraftPicks.java create mode 100644 gemp-lotr/gemp-lotr-server/src/main/resources/draft/hobbit.json create mode 100644 gemp-lotr/gemp-lotr-server/src/main/resources/lotrDrafts.json diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft2/DefaultSoloDraft.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft2/DefaultSoloDraft.java new file mode 100644 index 000000000..ba581af1b --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft2/DefaultSoloDraft.java @@ -0,0 +1,35 @@ +package com.gempukku.lotro.draft2; + +import com.gempukku.lotro.game.CardCollection; + +public class DefaultSoloDraft implements SoloDraft { + private String _format; + private SoloDraftStartingPool _startingPool; + private SoloDraftPicks _picks; + + public DefaultSoloDraft(String format, SoloDraftStartingPool startingPool, SoloDraftPicks picks) { + _format = format; + _startingPool = startingPool; + _picks = picks; + } + + @Override + public CardCollection initializeNewCollection(long seed) { + return _startingPool.getCardCollection(seed); + } + + @Override + public CardCollection getAvailableChoices(long seed, int stage) { + return _picks.getChoices(seed, stage); + } + + @Override + public boolean hasNextStage(long seed, int stage) { + return _picks.hasNextStage(seed, stage); + } + + @Override + public String getFormat() { + return _format; + } +} diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft2/SoloDraftDefinitions.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft2/SoloDraftDefinitions.java index 347611db4..3bcd19013 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft2/SoloDraftDefinitions.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft2/SoloDraftDefinitions.java @@ -1,8 +1,56 @@ package com.gempukku.lotro.draft2; +import com.gempukku.lotro.game.LotroCardBlueprintLibrary; +import com.gempukku.lotro.game.formats.LotroFormatLibrary; +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.HashMap; +import java.util.Map; + public class SoloDraftDefinitions { + private Map draftTypes = new HashMap(); + + public SoloDraftDefinitions(LotroCardBlueprintLibrary library) { + try { + final InputStreamReader reader = new InputStreamReader(LotroFormatLibrary.class.getResourceAsStream("/lotrDrafts.json"), "UTF-8"); + try { + JSONParser parser = new JSONParser(); + JSONArray object = (JSONArray) parser.parse(reader); + for (Object draftDefObj : object) { + String type = (String)((JSONObject) draftDefObj).get("type"); + String location = (String) ((JSONObject) draftDefObj).get("location"); + draftTypes.put(type, loadDraft(location)); + } + } catch (ParseException exp) { + throw new RuntimeException("Problem loading solo drafts", exp); + } + } catch (IOException exp) { + throw new RuntimeException("Problem loading solo drafts", exp); + } + } + + private SoloDraft loadDraft(String file) { + try { + final InputStreamReader reader = new InputStreamReader(LotroFormatLibrary.class.getResourceAsStream(file), "UTF-8"); + try { + JSONParser parser = new JSONParser(); + JSONObject object = (JSONObject) parser.parse(reader); + String format = (String) object.get("format"); + return null; + } catch (ParseException exp) { + throw new RuntimeException("Problem loading solo draft "+file, exp); + } + } catch (IOException exp) { + throw new RuntimeException("Problem loading solo draft "+file, exp); + } + } + public SoloDraft getSoloDraft(String draftType) { - // TODO - return null; + return draftTypes.get(draftType); } } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft2/SoloDraftPicks.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft2/SoloDraftPicks.java new file mode 100644 index 000000000..609831594 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft2/SoloDraftPicks.java @@ -0,0 +1,13 @@ +package com.gempukku.lotro.draft2; + +import com.gempukku.lotro.game.CardCollection; + +public class SoloDraftPicks { + public CardCollection getChoices(long seed, int stage) { + return null; + } + + public boolean hasNextStage(long seed, int stage) { + return false; + } +} diff --git a/gemp-lotr/gemp-lotr-server/src/main/resources/draft/hobbit.json b/gemp-lotr/gemp-lotr-server/src/main/resources/draft/hobbit.json new file mode 100644 index 000000000..e66451ccc --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/main/resources/draft/hobbit.json @@ -0,0 +1,71 @@ +{ + "format": "limited_hobbit", + "startingPool": [ + { + "type": "random", + "data": [ + { + "type": "cardPool", + "data": [ + "card1", "card2" + ] + }, + { + "type": "cardPool", + "data": [ + "card1", "card2" + ] + } + ] + } + ], + "picks": [ + { + "type": "random", + "data": [ + { + "type": "sequence", + "data": [ + { + "type": "multiple", + "data": { + "count": 10, + "type": "randomPick", + "data": ["card1", "card2"] + } + }, + { + "type": "multiple", + "data": { + "count": 5, + "type": "randomPick", + "data": ["card1", "card2"] + } + } + ] + }, + { + "type": "sequence", + "data": [ + { + "type": "multiple", + "data": { + "count": 10, + "type": "randomPick", + "data": ["card1", "card2"] + } + }, + { + "type": "multiple", + "data": { + "count": 5, + "type": "randomPick", + "data": ["card1", "card2"] + } + } + ] + } + ] + } + ] +} diff --git a/gemp-lotr/gemp-lotr-server/src/main/resources/lotrDrafts.json b/gemp-lotr/gemp-lotr-server/src/main/resources/lotrDrafts.json new file mode 100644 index 000000000..d90f0c1e1 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/main/resources/lotrDrafts.json @@ -0,0 +1,6 @@ +[ + { + "type": "Hobbit Draft", + "location": "/draft/hobbit.json" + } +] \ No newline at end of file