mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
Merge pull request #1560 from TrueFuFLeaderG/adventure
issue #1340 made it possible to create custom adventures from the use…
This commit is contained in:
@@ -233,11 +233,6 @@
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.github.jetopto1</groupId>
|
||||
<artifactId>cling</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.badlogicgames.gdx</groupId>
|
||||
<artifactId>gdx</artifactId>
|
||||
|
||||
@@ -18,8 +18,11 @@ public class DifficultyData {
|
||||
public float sellFactor=0.2f;
|
||||
public float goldLoss=0.2f;
|
||||
public float lifeLoss=0.2f;
|
||||
|
||||
public float rewardMaxFactor=1f;
|
||||
public String[] startItems=new String[0];
|
||||
public ObjectMap<String,String> starterDecks = null;
|
||||
public ObjectMap<String,String> constructedStarterDecks= null;
|
||||
public ObjectMap<String,String> pileDecks= null;
|
||||
|
||||
}
|
||||
|
||||
@@ -108,7 +108,8 @@ public class RewardData {
|
||||
if(probability == 0 || WorldSave.getCurrentSave().getWorld().getRandom().nextFloat() <= probability) {
|
||||
if(type==null || type.isEmpty())
|
||||
type="randomCard";
|
||||
int addedCount = (addMaxCount > 0 ? WorldSave.getCurrentSave().getWorld().getRandom().nextInt(addMaxCount) : 0);
|
||||
int maxCount=Math.round(addMaxCount*Current.player().getDifficulty().rewardMaxFactor);
|
||||
int addedCount = (maxCount > 0 ? WorldSave.getCurrentSave().getWorld().getRandom().nextInt(maxCount) : 0);
|
||||
if( colors != null && colors.length > 0 ) { //Filter special "colorID" case.
|
||||
String C = Current.player().getColorIdentityLong();
|
||||
for(int i = 0; i < colors.length; i++){
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.github.tommyettinger.textra.TextraLabel;
|
||||
import forge.Forge;
|
||||
import forge.adventure.data.DifficultyData;
|
||||
import forge.adventure.data.HeroListData;
|
||||
import forge.adventure.util.AdventureModes;
|
||||
import forge.adventure.util.Config;
|
||||
import forge.adventure.util.Selector;
|
||||
import forge.adventure.util.UIActor;
|
||||
@@ -43,12 +44,10 @@ public class NewGameScene extends UIScene {
|
||||
private final Selector gender;
|
||||
private final Selector mode;
|
||||
private final Selector difficulty;
|
||||
private final Array<String> stringList;
|
||||
private final Array<String> random;
|
||||
private final Array<String> custom;
|
||||
private final TextraLabel colorLabel;
|
||||
private final int selected = -1;
|
||||
|
||||
private final Array<AdventureModes> modes=new Array<>();
|
||||
private NewGameScene() {
|
||||
|
||||
super(Forge.isLandscapeMode() ? "ui/new_game.json" : "ui/new_game_portrait.json");
|
||||
@@ -71,34 +70,65 @@ public class NewGameScene extends UIScene {
|
||||
colorLabel = ui.findActor("colorIdL");
|
||||
String colorIdLabel = colorLabel.storedText;
|
||||
custom = new Array<>();
|
||||
for (DeckProxy deckProxy : DeckProxy.getAllCustomStarterDecks())
|
||||
custom.add(deckProxy.getName());
|
||||
mode.setTextList(custom.isEmpty() ? new String[]{"Standard", "Constructed", "Chaos"} : new String[]{"Standard", "Constructed", "Chaos", "Custom"});
|
||||
gender.setTextList(new String[]{"Male", "Female"});
|
||||
gender.addListener(event -> NewGameScene.this.updateAvatar());
|
||||
Random rand = new Random();
|
||||
colorId = ui.findActor("colorId");
|
||||
String[] colorSet = Config.instance().colorIds();
|
||||
String[] colorIdNames = Config.instance().colorIdNames();
|
||||
colorIds = new ColorSet[colorSet.length];
|
||||
for (int i = 0; i < colorIds.length; i++)
|
||||
colorIds[i] = ColorSet.fromNames(colorSet[i].toCharArray());
|
||||
stringList = new Array<>(colorIds.length);
|
||||
Array<String> colorNames = new Array<>(colorIds.length);
|
||||
for (String idName : colorIdNames)
|
||||
stringList.add(UIActor.localize(idName));
|
||||
colorId.setTextList(stringList);
|
||||
random = new Array<>();
|
||||
random.add(Forge.getLocalizer().getMessage("lblRandomDeck"));
|
||||
colorNames.add(UIActor.localize(idName));
|
||||
colorId.setTextList(colorNames);
|
||||
|
||||
for (DifficultyData diff : Config.instance().getConfigData().difficulties)//check first difficulty if exists
|
||||
{
|
||||
if(diff.starterDecks!=null)
|
||||
{
|
||||
modes.add(AdventureModes.Standard);
|
||||
AdventureModes.Standard.setSelectionName(colorIdLabel);
|
||||
AdventureModes.Standard.setModes(colorNames);
|
||||
}
|
||||
|
||||
if(diff.constructedStarterDecks!=null)
|
||||
{
|
||||
modes.add(AdventureModes.Constructed);
|
||||
AdventureModes.Constructed.setSelectionName(colorIdLabel);
|
||||
AdventureModes.Constructed.setModes(colorNames);
|
||||
}
|
||||
if(diff.pileDecks!=null)
|
||||
{
|
||||
modes.add(AdventureModes.Pile);
|
||||
AdventureModes.Pile.setSelectionName(colorIdLabel);
|
||||
AdventureModes.Pile.setModes(colorNames);
|
||||
}
|
||||
break;
|
||||
}
|
||||
modes.add(AdventureModes.Chaos);
|
||||
AdventureModes.Chaos.setSelectionName("[BLACK]"+Forge.getLocalizer().getMessage("lblDeck")+":");
|
||||
AdventureModes.Chaos.setModes(new Array<>(new String[]{Forge.getLocalizer().getMessage("lblRandomDeck")}));
|
||||
for (DeckProxy deckProxy : DeckProxy.getAllCustomStarterDecks())
|
||||
custom.add(deckProxy.getName());
|
||||
if(!custom.isEmpty())
|
||||
{
|
||||
modes.add(AdventureModes.Custom);
|
||||
AdventureModes.Custom.setSelectionName("[BLACK]"+Forge.getLocalizer().getMessage("lblDeck")+":");
|
||||
AdventureModes.Custom.setModes(custom);
|
||||
}
|
||||
String[] modeNames=new String[modes.size];
|
||||
for(int i=0;i<modes.size;i++)
|
||||
modeNames[i]=modes.get(i).getName();
|
||||
mode.setTextList(modeNames);
|
||||
|
||||
gender.setTextList(new String[]{"Male", "Female"});
|
||||
gender.addListener(event -> NewGameScene.this.updateAvatar());
|
||||
|
||||
mode.addListener(new ChangeListener() {
|
||||
@Override
|
||||
public void changed(ChangeEvent changeEvent, Actor actor) {
|
||||
colorLabel.setText(mode.getCurrentIndex() < 2 ? colorIdLabel : "[BLACK]"+Forge.getLocalizer().getMessage("lblDeck")+":");
|
||||
if (mode.getCurrentIndex() == 3)
|
||||
colorId.setTextList(custom);
|
||||
if (mode.getCurrentIndex() == 2)
|
||||
colorId.setTextList(random);
|
||||
if (mode.getCurrentIndex() < 2)
|
||||
colorId.setTextList(stringList);
|
||||
AdventureModes smode=modes.get(mode.getCurrentIndex());
|
||||
colorLabel.setText(smode.getSelectionName());
|
||||
colorId.setTextList(smode.getModes());
|
||||
}
|
||||
});
|
||||
race = ui.findActor("race");
|
||||
@@ -117,6 +147,8 @@ public class NewGameScene extends UIScene {
|
||||
}
|
||||
difficulty.setTextList(diffList);
|
||||
difficulty.setCurrentIndex(startingDifficulty);
|
||||
|
||||
Random rand = new Random();
|
||||
avatarIndex = rand.nextInt();
|
||||
updateAvatar();
|
||||
gender.setCurrentIndex(rand.nextInt());
|
||||
@@ -149,7 +181,7 @@ public class NewGameScene extends UIScene {
|
||||
avatarIndex,
|
||||
colorIds[colorId.getCurrentIndex()],
|
||||
Config.instance().getConfigData().difficulties[difficulty.getCurrentIndex()],
|
||||
mode.getCurrentIndex() == 2, mode.getCurrentIndex() == 1, mode.getCurrentIndex() == 3, colorId.getCurrentIndex(), 0);//maybe replace with enum
|
||||
modes.get(mode.getCurrentIndex()), colorId.getCurrentIndex(), 0);//maybe replace with enum
|
||||
GamePlayerUtil.getGuiPlayer().setName(selectedName.getText());
|
||||
Forge.switchScene(GameScene.instance());
|
||||
};
|
||||
@@ -197,7 +229,7 @@ public class NewGameScene extends UIScene {
|
||||
avatarIndex,
|
||||
colorIds[colorId.getCurrentIndex()],
|
||||
Config.instance().getConfigData().difficulties[difficulty.getCurrentIndex()],
|
||||
mode.getCurrentIndex() == 2, mode.getCurrentIndex() == 1, mode.getCurrentIndex() == 3, colorId.getCurrentIndex(), 0);//maybe replace with enum
|
||||
modes.get(mode.getCurrentIndex()), colorId.getCurrentIndex(), 0);
|
||||
GamePlayerUtil.getGuiPlayer().setName(selectedName.getText());
|
||||
Forge.switchScene(GameScene.instance());
|
||||
}
|
||||
|
||||
@@ -3,45 +3,117 @@ package forge.adventure.scene;
|
||||
import com.badlogic.gdx.Input;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||
import com.badlogic.gdx.scenes.scene2d.Stage;
|
||||
import com.badlogic.gdx.scenes.scene2d.InputEvent;
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
||||
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
||||
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
|
||||
import com.badlogic.gdx.utils.Align;
|
||||
import com.github.tommyettinger.textra.TextraButton;
|
||||
import com.github.tommyettinger.textra.TextraLabel;
|
||||
import forge.Forge;
|
||||
import forge.adventure.util.Config;
|
||||
import forge.adventure.util.Controls;
|
||||
import forge.adventure.util.UIActor;
|
||||
import forge.gui.GuiBase;
|
||||
import forge.localinstance.properties.ForgePreferences;
|
||||
import forge.model.FModel;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
|
||||
|
||||
/**
|
||||
* Scene to handle settings of the base forge and adventure mode
|
||||
*/
|
||||
public class SettingsScene extends UIScene {
|
||||
static public ForgePreferences Preference;
|
||||
Stage stage;
|
||||
Texture Background;
|
||||
private final Table settingGroup;
|
||||
TextraButton backButton;
|
||||
TextraButton newPlane;
|
||||
ScrollPane scrollPane;
|
||||
|
||||
SelectBox selectSourcePlane;
|
||||
TextField newPlaneName;
|
||||
private void copyNewPlane() {
|
||||
String plane=(String) selectSourcePlane.getSelected();
|
||||
Path source= Paths.get(Config.instance().getPlanePath(plane));
|
||||
Path destination= Paths.get(Config.instance().getPlanePath("<user>"+newPlaneName.getText()));
|
||||
AtomicBoolean somethingWentWrong= new AtomicBoolean(false);
|
||||
try (Stream<Path> stream = Files.walk(source))
|
||||
{
|
||||
Files.createDirectories(destination);
|
||||
stream.forEach(s -> {
|
||||
try { Files.copy(s, destination.resolve(source.relativize(s)), REPLACE_EXISTING); }
|
||||
catch (IOException e) {
|
||||
somethingWentWrong.set(true);
|
||||
}
|
||||
});
|
||||
} catch (IOException e) {
|
||||
somethingWentWrong.set(true);
|
||||
}
|
||||
if(somethingWentWrong.get())
|
||||
{
|
||||
Dialog dialog=ui.showDialog(stage,"Something went wrong", UIActor.ButtonOk|UIActor.ButtonAbort,null);
|
||||
dialog.text("Copy was not successful check your access right\n and if the folder is in use");
|
||||
dialog.show(stage);
|
||||
}
|
||||
else
|
||||
{
|
||||
Dialog dialog=ui.showDialog(stage,"Copied plane", UIActor.ButtonOk|UIActor.ButtonAbort,null);
|
||||
dialog.text("New plane "+newPlaneName.getText()+" was created\nYou can now start the editor to change the plane\n" +
|
||||
"or edit it manually from the folder\n" +
|
||||
Config.instance().getPlanePath("<user>"+newPlaneName.getText()));
|
||||
Config.instance().getSettingData().plane = "<user>"+newPlaneName.getText();
|
||||
Config.instance().saveSettings();
|
||||
dialog.show(stage);
|
||||
}
|
||||
|
||||
}
|
||||
private void createNewPlane() {
|
||||
Dialog dialog=ui.showDialog(stage,"Create your own Plane", UIActor.ButtonOk|UIActor.ButtonAbort,()->copyNewPlane());
|
||||
dialog.text("Select a plane to copy");
|
||||
dialog.getContentTable().row();
|
||||
dialog.getContentTable().add(selectSourcePlane);
|
||||
dialog.getContentTable().row();
|
||||
dialog.text("Set new plane name");
|
||||
dialog.getContentTable().row();
|
||||
dialog.getContentTable().add(newPlaneName);
|
||||
newPlaneName.setText(selectSourcePlane.getSelected().toString()+"_copy");
|
||||
dialog.show(stage);
|
||||
}
|
||||
|
||||
private SettingsScene() {
|
||||
super(Forge.isLandscapeMode() ? "ui/settings.json" : "ui/settings_portrait.json");
|
||||
|
||||
selectSourcePlane = new SelectBox<String>(Controls.getSkin());
|
||||
newPlaneName = Controls.newTextField("");
|
||||
settingGroup = new Table();
|
||||
if (Preference == null) {
|
||||
Preference = new ForgePreferences();
|
||||
}
|
||||
|
||||
selectSourcePlane.setItems(Config.instance().getAllAdventures());
|
||||
SelectBox plane = Controls.newComboBox(Config.instance().getAllAdventures(), Config.instance().getSettingData().plane, o -> {
|
||||
Config.instance().getSettingData().plane = (String) o;
|
||||
Config.instance().saveSettings();
|
||||
return null;
|
||||
});
|
||||
newPlane=Controls.newTextButton("Create own plane");
|
||||
newPlane.addListener(new ClickListener() {
|
||||
@Override
|
||||
public void clicked(InputEvent event, float x, float y) {
|
||||
createNewPlane();
|
||||
}
|
||||
});
|
||||
addLabel(Forge.getLocalizer().getMessage("lblWorld"));
|
||||
settingGroup.add(plane).align(Align.right).pad(2);
|
||||
addLabel(Forge.getLocalizer().getMessage("lblCreate")+Forge.getLocalizer().getMessage("lblWorld"));
|
||||
settingGroup.add(newPlane).align(Align.right).pad(2);
|
||||
|
||||
if (!GuiBase.isAndroid()) {
|
||||
SelectBox videomode = Controls.newComboBox(new String[]{"720p", "768p", "900p", "1080p"}, Config.instance().getSettingData().videomode, o -> {
|
||||
|
||||
@@ -28,7 +28,7 @@ import forge.adventure.util.UIActor;
|
||||
*/
|
||||
public class UIScene extends Scene {
|
||||
protected UIActor ui;
|
||||
Stage stage;
|
||||
protected Stage stage;
|
||||
|
||||
String uiFile;
|
||||
private final Dialog keyboardDialog;
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package forge.adventure.util;
|
||||
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
|
||||
public enum AdventureModes {
|
||||
Standard("Standard"),
|
||||
Constructed("Constructed"),
|
||||
Chaos("[RED]Chaos"),
|
||||
Pile("Pile"),
|
||||
Custom("Custom");
|
||||
|
||||
private final String name;
|
||||
private String selectionName;
|
||||
private Array<String> modes;
|
||||
AdventureModes(String name)
|
||||
{
|
||||
this.name=name;
|
||||
}
|
||||
public String getName()
|
||||
{
|
||||
return name.isEmpty()?toString():name;
|
||||
}
|
||||
public void setSelectionName(String selectionName)
|
||||
{
|
||||
this.selectionName=selectionName;
|
||||
}
|
||||
public void setModes( Array<String> modes)
|
||||
{
|
||||
this.modes=modes;
|
||||
}
|
||||
|
||||
public String getSelectionName() {
|
||||
return selectionName;
|
||||
}
|
||||
|
||||
public Array<String> getModes() {
|
||||
return modes;
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package forge.adventure.util;
|
||||
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
import com.badlogic.gdx.utils.Json;
|
||||
import com.badlogic.gdx.utils.JsonWriter;
|
||||
import com.badlogic.gdx.utils.ObjectMap;
|
||||
@@ -11,6 +12,8 @@ import forge.adventure.data.DifficultyData;
|
||||
import forge.adventure.data.SettingData;
|
||||
import forge.card.ColorSet;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckProxy;
|
||||
import forge.deck.DeckgenUtil;
|
||||
import forge.gui.GuiBase;
|
||||
import forge.localinstance.properties.ForgeConstants;
|
||||
import forge.localinstance.properties.ForgePreferences;
|
||||
@@ -43,7 +46,7 @@ public class Config {
|
||||
}
|
||||
private Config() {
|
||||
|
||||
String path= GuiBase.isAndroid() ? ForgeConstants.ASSETS_DIR : Files.exists(Paths.get("./res"))?"./":"../forge-gui/";
|
||||
String path= resPath();
|
||||
adventures = new File(GuiBase.isAndroid() ? ForgeConstants.ADVENTURE_DIR : path + "/res/adventure").list();
|
||||
try
|
||||
{
|
||||
@@ -59,6 +62,7 @@ public class Config {
|
||||
if(adventures!=null&&adventures.length>=1)
|
||||
settingsData.plane=adventures[0];
|
||||
}
|
||||
plane=settingsData.plane;
|
||||
|
||||
if(settingsData.width==0||settingsData.height==0)
|
||||
{
|
||||
@@ -80,10 +84,9 @@ public class Config {
|
||||
if(settingsData.cardTooltipAdjLandscape == null || settingsData.cardTooltipAdjLandscape == 0f)
|
||||
settingsData.cardTooltipAdjLandscape=1f;
|
||||
|
||||
this.plane = settingsData.plane;
|
||||
currentConfig = this;
|
||||
prefix = getPlanePath(settingsData.plane);
|
||||
|
||||
prefix = path + "/res/adventure/" + plane + "/";
|
||||
currentConfig = this;
|
||||
if (FModel.getPreferences() != null)
|
||||
Lang = FModel.getPreferences().getPref(ForgePreferences.FPref.UI_LANGUAGE);
|
||||
try
|
||||
@@ -99,6 +102,22 @@ public class Config {
|
||||
|
||||
}
|
||||
|
||||
private String resPath() {
|
||||
|
||||
return GuiBase.isAndroid() ? ForgeConstants.ASSETS_DIR : Files.exists(Paths.get("./res"))?"./":"../forge-gui/";
|
||||
}
|
||||
|
||||
public String getPlanePath(String plane) {
|
||||
if(plane.startsWith("<user>"))
|
||||
{
|
||||
return ForgeConstants.USER_ADVENTURE_DIR + "/userplanes/" + plane.substring("<user>".length()) + "/";
|
||||
}
|
||||
else
|
||||
{
|
||||
return resPath() + "/res/adventure/" + plane + "/";
|
||||
}
|
||||
}
|
||||
|
||||
public ConfigData getConfigData() {
|
||||
return configData;
|
||||
}
|
||||
@@ -130,7 +149,7 @@ public class Config {
|
||||
|
||||
|
||||
public String getPlane() {
|
||||
return plane;
|
||||
return plane.replace("<user>","user_");
|
||||
}
|
||||
|
||||
public String[] colorIdNames() {
|
||||
@@ -141,23 +160,38 @@ public class Config {
|
||||
|
||||
return configData.colorIds;
|
||||
}
|
||||
public Deck starterDeck(ColorSet color, DifficultyData difficultyData, boolean constructed) {
|
||||
if(constructed)
|
||||
public Deck starterDeck(ColorSet color, DifficultyData difficultyData, AdventureModes mode,int index) {
|
||||
switch (mode)
|
||||
{
|
||||
for(ObjectMap.Entry<String, String> entry:difficultyData.constructedStarterDecks)
|
||||
{
|
||||
if(ColorSet.fromNames(entry.key.toCharArray()).getColor()==color.getColor())
|
||||
case Constructed:
|
||||
for(ObjectMap.Entry<String, String> entry:difficultyData.constructedStarterDecks)
|
||||
{
|
||||
return CardUtil.getDeck(entry.value, false, false, "", false, false);
|
||||
if(ColorSet.fromNames(entry.key.toCharArray()).getColor()==color.getColor())
|
||||
{
|
||||
return CardUtil.getDeck(entry.value, false, false, "", false, false);
|
||||
}
|
||||
}
|
||||
case Standard:
|
||||
|
||||
for(ObjectMap.Entry<String, String> entry:difficultyData.starterDecks)
|
||||
{
|
||||
if(ColorSet.fromNames(entry.key.toCharArray()).getColor()==color.getColor())
|
||||
{
|
||||
return CardUtil.getDeck(entry.value, false, false, "", false, false);
|
||||
}
|
||||
}
|
||||
case Chaos:
|
||||
return DeckgenUtil.getRandomOrPreconOrThemeDeck("", false, false, false);
|
||||
case Custom:
|
||||
return DeckProxy.getAllCustomStarterDecks().get(index).getDeck();
|
||||
case Pile:
|
||||
for(ObjectMap.Entry<String, String> entry:difficultyData.pileDecks)
|
||||
{
|
||||
if(ColorSet.fromNames(entry.key.toCharArray()).getColor()==color.getColor())
|
||||
{
|
||||
return CardUtil.getDeck(entry.value, false, false, "", false, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for(ObjectMap.Entry<String, String> entry:difficultyData.starterDecks)
|
||||
{
|
||||
if(ColorSet.fromNames(entry.key.toCharArray()).getColor()==color.getColor())
|
||||
{
|
||||
return CardUtil.getDeck(entry.value, false, false, "", false, false);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -174,8 +208,17 @@ public class Config {
|
||||
{
|
||||
return settingsData;
|
||||
}
|
||||
public String[] getAllAdventures()
|
||||
public Array<String> getAllAdventures()
|
||||
{
|
||||
String path=ForgeConstants.USER_ADVENTURE_DIR + "/userplanes/";
|
||||
Array<String> adventures = new Array<String>();
|
||||
if(new File(path).exists())
|
||||
adventures.addAll(new File(path).list());
|
||||
for(int i=0;i<adventures.size;i++)
|
||||
{
|
||||
adventures.set(i,"<user>"+adventures.get(i));
|
||||
}
|
||||
adventures.addAll(this.adventures);
|
||||
return adventures;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.*;
|
||||
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
||||
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
|
||||
import com.badlogic.gdx.utils.Align;
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
import com.badlogic.gdx.utils.Null;
|
||||
import com.github.tommyettinger.textra.Font;
|
||||
import com.github.tommyettinger.textra.TextraButton;
|
||||
@@ -99,6 +100,26 @@ public class Controls {
|
||||
return ret;
|
||||
}
|
||||
|
||||
static public SelectBox newComboBox(Array<String> text, String item, Function<Object, Void> func) {
|
||||
SelectBox ret = new SelectBox<String>(getSkin());
|
||||
ret.getStyle().listStyle.selection.setTopHeight(4);
|
||||
ret.setItems(text);
|
||||
ret.addListener(new ChangeListener() {
|
||||
@Override
|
||||
public void changed(ChangeEvent event, Actor actor) {
|
||||
try {
|
||||
func.apply(((SelectBox) actor).getSelected());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
func.apply(item);
|
||||
ret.getList().setAlignment(Align.center);
|
||||
ret.setSelected(item);
|
||||
ret.setAlignment(Align.right);
|
||||
return ret;
|
||||
}
|
||||
static public SelectBox newComboBox(Float[] text, float item, Function<Object, Void> func) {
|
||||
SelectBox ret = new SelectBox<Float>(getSkin());
|
||||
ret.getStyle().listStyle.selection.setTopHeight(4);
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||
import com.badlogic.gdx.scenes.scene2d.Group;
|
||||
import com.badlogic.gdx.scenes.scene2d.InputEvent;
|
||||
import com.badlogic.gdx.scenes.scene2d.Stage;
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
||||
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
|
||||
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
|
||||
@@ -286,4 +287,31 @@ public class UIActor extends Group {
|
||||
}
|
||||
});
|
||||
}
|
||||
static final public int ButtonYes=0x1;
|
||||
static final public int ButtonNo=0x2;
|
||||
static final public int ButtonOk=0x4;
|
||||
static final public int ButtonAbort=0x8;
|
||||
public Dialog showDialog(Stage stage, String header, int buttons, Runnable onOkOrYes) {
|
||||
Dialog dialog =new Dialog(header, Controls.getSkin())
|
||||
{
|
||||
protected void result(Object object)
|
||||
{
|
||||
if(onOkOrYes!=null&&object!=null&&object.equals(true))
|
||||
onOkOrYes.run();
|
||||
this.hide();
|
||||
removeActor(this);
|
||||
}
|
||||
};
|
||||
if((buttons&ButtonYes)!=0)
|
||||
dialog.button(Forge.getLocalizer().getMessage("lblYes"), true);
|
||||
if((buttons&ButtonNo)!=0)
|
||||
dialog.button(Forge.getLocalizer().getMessage("lblNo"), false);
|
||||
if((buttons&ButtonOk)!=0)
|
||||
dialog.button(Forge.getLocalizer().getMessage("lblOk"), true);
|
||||
if((buttons&ButtonAbort)!=0)
|
||||
dialog.button(Forge.getLocalizer().getMessage("lblAbort"), false);
|
||||
addActor(dialog);
|
||||
dialog.show(stage);
|
||||
return dialog;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,13 +4,12 @@ import forge.adventure.data.DifficultyData;
|
||||
import forge.adventure.player.AdventurePlayer;
|
||||
import forge.adventure.pointofintrest.PointOfInterestChanges;
|
||||
import forge.adventure.stage.WorldStage;
|
||||
import forge.adventure.util.AdventureModes;
|
||||
import forge.adventure.util.Config;
|
||||
import forge.adventure.util.SaveFileData;
|
||||
import forge.adventure.util.SignalList;
|
||||
import forge.card.ColorSet;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckProxy;
|
||||
import forge.deck.DeckgenUtil;
|
||||
import forge.localinstance.properties.ForgeConstants;
|
||||
import forge.player.GamePlayerUtil;
|
||||
|
||||
@@ -123,10 +122,12 @@ public class WorldSave {
|
||||
return currentSave;
|
||||
}
|
||||
|
||||
public static WorldSave generateNewWorld(String name, boolean male, int race, int avatarIndex, ColorSet startingColorIdentity, DifficultyData diff, boolean chaos, boolean constructed, boolean custom, int customDeckIndex, long seed) {
|
||||
public static WorldSave generateNewWorld(String name, boolean male, int race, int avatarIndex, ColorSet startingColorIdentity, DifficultyData diff, AdventureModes mode, int customDeckIndex, long seed) {
|
||||
currentSave.world.generateNew(seed);
|
||||
currentSave.pointOfInterestChanges.clear();
|
||||
Deck starterDeck = chaos ? DeckgenUtil.getRandomOrPreconOrThemeDeck("", false, false, false) : custom ? DeckProxy.getAllCustomStarterDecks().get(customDeckIndex).getDeck() : Config.instance().starterDeck(startingColorIdentity,diff,constructed);
|
||||
boolean chaos=mode==AdventureModes.Chaos;
|
||||
boolean custom=mode==AdventureModes.Custom;
|
||||
Deck starterDeck = Config.instance().starterDeck(startingColorIdentity,diff,mode,customDeckIndex);
|
||||
currentSave.player.create(name, starterDeck, male, race, avatarIndex, chaos, custom, diff);
|
||||
currentSave.player.setWorldPosY((int) (currentSave.world.getData().playerStartPosY * currentSave.world.getData().height * currentSave.world.getTileSize()));
|
||||
currentSave.player.setWorldPosX((int) (currentSave.world.getData().playerStartPosX * currentSave.world.getData().width * currentSave.world.getTileSize()));
|
||||
|
||||
@@ -73,9 +73,9 @@
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.jetopto1.cling</groupId>
|
||||
<groupId>org.fourthline.cling</groupId>
|
||||
<artifactId>cling-core</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<version>2.1.2</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
@@ -62,7 +62,8 @@
|
||||
"enemyLifeFactor": 0.8,
|
||||
"spawnRank": 0,
|
||||
"goldLoss": 0.02,
|
||||
"lifeLoss": 0.1,
|
||||
"lifeLoss": 0.1,
|
||||
"rewardMaxFactor" : 1.5,
|
||||
"sellFactor": 0.6,
|
||||
"starterDecks": {
|
||||
"W":"decks/starter/white_e.json",
|
||||
@@ -78,6 +79,13 @@
|
||||
"R":"decks/starter/Adventure - Low Red.dck",
|
||||
"G":"decks/starter/Adventure - Low Green.dck"
|
||||
},
|
||||
"pileDecks": {
|
||||
"W":"decks/starter/pile_white_e.json",
|
||||
"B":"decks/starter/pile_black_e.json",
|
||||
"U":"decks/starter/pile_blue_e.json",
|
||||
"R":"decks/starter/pile_red_e.json",
|
||||
"G":"decks/starter/pile_green_e.json"
|
||||
},
|
||||
"startItems": [
|
||||
"Manasight Amulet",
|
||||
"Leather Boots"
|
||||
@@ -89,6 +97,7 @@
|
||||
"staringMoney": 250,
|
||||
"startingDifficulty": true,
|
||||
"enemyLifeFactor": 1.0,
|
||||
"rewardMaxFactor" : 1.0,
|
||||
"spawnRank": 1,
|
||||
"goldLoss": 0.1,
|
||||
"lifeLoss": 0.2,
|
||||
@@ -107,6 +116,13 @@
|
||||
"R":"decks/starter/Adventure - Low Gruul.dck",
|
||||
"G":"decks/starter/Adventure - Low Selesnya.dck"
|
||||
},
|
||||
"pileDecks": {
|
||||
"W":"decks/starter/pile_white_n.json",
|
||||
"B":"decks/starter/pile_black_n.json",
|
||||
"U":"decks/starter/pile_blue_n.json",
|
||||
"R":"decks/starter/pile_red_n.json",
|
||||
"G":"decks/starter/pile_green_n.json"
|
||||
},
|
||||
"startItems": [
|
||||
"Leather Boots"
|
||||
]
|
||||
@@ -116,8 +132,9 @@
|
||||
"startingMana": 10,
|
||||
"staringMoney": 125,
|
||||
"enemyLifeFactor": 1.5,
|
||||
"rewardMaxFactor" : 0.5,
|
||||
"spawnRank": 2,
|
||||
"goldLoss": 0.5,
|
||||
"goldLoss": 0.3,
|
||||
"lifeLoss": 0.3,
|
||||
"sellFactor": 0.25,
|
||||
"starterDecks": {
|
||||
@@ -133,6 +150,45 @@
|
||||
"U":"decks/starter/Adventure - Low Izzet.dck",
|
||||
"R":"decks/starter/Adventure - Low Boros.dck",
|
||||
"G":"decks/starter/Adventure - Low Simic.dck"
|
||||
},
|
||||
"pileDecks": {
|
||||
"W":"decks/starter/pile_white_h.json",
|
||||
"B":"decks/starter/pile_black_h.json",
|
||||
"U":"decks/starter/pile_blue_h.json",
|
||||
"R":"decks/starter/pile_red_h.json",
|
||||
"G":"decks/starter/pile_green_h.json"
|
||||
}
|
||||
},{
|
||||
"name": "Insane",
|
||||
"startingLife": 7,
|
||||
"startingMana": 10,
|
||||
"staringMoney": 0,
|
||||
"enemyLifeFactor": 2.5,
|
||||
"rewardMaxFactor" : 0.0,
|
||||
"spawnRank": 2,
|
||||
"goldLoss": 0.5,
|
||||
"lifeLoss": 0.3,
|
||||
"sellFactor": 0.05,
|
||||
"starterDecks": {
|
||||
"W":"decks/starter/white_h.json",
|
||||
"B":"decks/starter/black_h.json",
|
||||
"U":"decks/starter/blue_h.json",
|
||||
"R":"decks/starter/red_h.json",
|
||||
"G":"decks/starter/green_h.json"
|
||||
},
|
||||
"constructedStarterDecks": {
|
||||
"W":"decks/starter/Adventure - Low Orzhov.dck",
|
||||
"B":"decks/starter/Adventure - Low Golgari.dck",
|
||||
"U":"decks/starter/Adventure - Low Izzet.dck",
|
||||
"R":"decks/starter/Adventure - Low Boros.dck",
|
||||
"G":"decks/starter/Adventure - Low Simic.dck"
|
||||
},
|
||||
"pileDecks": {
|
||||
"W":"decks/starter/pile_white_h.json",
|
||||
"B":"decks/starter/pile_black_h.json",
|
||||
"U":"decks/starter/pile_blue_h.json",
|
||||
"R":"decks/starter/pile_red_h.json",
|
||||
"G":"decks/starter/pile_green_h.json"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name":"Black",
|
||||
"mainDeck": [
|
||||
{
|
||||
"count":12,
|
||||
"cardName": "Swamp"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"cardName": "Mountain"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["black"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["red"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["black"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["red"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["black"],
|
||||
"rarity": ["rare"],
|
||||
"manaCosts": [5,6,7,8,9]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name":"Black",
|
||||
"mainDeck": [
|
||||
{
|
||||
"count":10,
|
||||
"cardName": "Swamp"
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"cardName": "Mountain"
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"cardName": "Island"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["black"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["red","blue"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["black"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["red","blue"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["black"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [5,6]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -17,37 +17,31 @@
|
||||
"count":6,
|
||||
"colors": ["black"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["red","blue"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["black"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["red","blue"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":5,
|
||||
"colors": ["black"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [5,6]
|
||||
},
|
||||
{
|
||||
"count":1,
|
||||
"count":6,
|
||||
"colors": ["black"],
|
||||
"rarity": ["rare"],
|
||||
"manaCosts": [7,8,9]
|
||||
"manaCosts": [5,6,7,8,9]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name":"Blue",
|
||||
"mainDeck": [
|
||||
{
|
||||
"count":12,
|
||||
"cardName": "Island"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"cardName": "Swamp"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["blue"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["black"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["blue"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["black"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["blue"],
|
||||
"rarity": ["rare"],
|
||||
"manaCosts": [5,6,7,8,9]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name":"Blue",
|
||||
"mainDeck": [
|
||||
{
|
||||
"count":10,
|
||||
"cardName": "Island"
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"cardName": "Plains"
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"cardName": "Swamp"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["blue"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["white","black"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["blue"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["white","black"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["blue"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [5,6]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -17,37 +17,31 @@
|
||||
"count":6,
|
||||
"colors": ["blue"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["white","black"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["blue"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["white","black"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":5,
|
||||
"colors": ["blue"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [5,6]
|
||||
},
|
||||
{
|
||||
"count":1,
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["blue"],
|
||||
"rarity": ["rare"],
|
||||
"manaCosts": [7,8,9]
|
||||
"manaCosts": [5,6,7,8,9]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name":"Green",
|
||||
"mainDeck": [
|
||||
{
|
||||
"count":12,
|
||||
"cardName": "Forest"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"cardName": "Plains"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["green"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["white"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["green"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["white"],
|
||||
"rarity": ["Uncommon"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["green"],
|
||||
"rarity": ["rare"],
|
||||
"manaCosts": [5,6,7,8,9]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name":"Green",
|
||||
"mainDeck": [
|
||||
{
|
||||
"count":10,
|
||||
"cardName": "Forest"
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"cardName": "Plains"
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"cardName": "Mountain"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["green"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["white","red"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["green"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["red","white"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["green"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [5,6]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -17,37 +17,31 @@
|
||||
"count":6,
|
||||
"colors": ["green"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["white","red"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["green"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["red","white"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":5,
|
||||
"colors": ["green"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [5,6]
|
||||
},
|
||||
{
|
||||
"count":1,
|
||||
"count":6,
|
||||
"colors": ["green"],
|
||||
"rarity": ["rare"],
|
||||
"manaCosts": [7,8,9]
|
||||
"manaCosts": [5,6,7,8,9]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name":"Red",
|
||||
"mainDeck": [
|
||||
{
|
||||
"count":12,
|
||||
"cardName": "Mountain"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"cardName": "Forest"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["red"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["green"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["red"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["green"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["red"],
|
||||
"rarity": ["rare"] ,
|
||||
"manaCosts": [5,6,7,8,9]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name":"Red",
|
||||
"mainDeck": [
|
||||
{
|
||||
"count":10,
|
||||
"cardName": "Mountain"
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"cardName": "Forest"
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"cardName": "Swamp"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["red"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["green","black"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["red"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["green","black"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["red"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [5,6]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -17,37 +17,31 @@
|
||||
"count":6,
|
||||
"colors": ["red"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["green","black"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["red"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["green","black"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":5,
|
||||
"colors": ["red"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [5,6]
|
||||
},
|
||||
{
|
||||
"count":1,
|
||||
"count":6,
|
||||
"colors": ["red"],
|
||||
"rarity": ["rare"],
|
||||
"manaCosts": [7,8,9]
|
||||
"manaCosts": [5,6,7,8,9]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name":"White",
|
||||
"mainDeck": [
|
||||
{
|
||||
"count":12,
|
||||
"cardName": "Plains"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"cardName": "Forest"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["white"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["green"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["white"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["green"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["white"],
|
||||
"rarity": ["rare"],
|
||||
"manaCosts": [5,6,7,8,9]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name":"White",
|
||||
"mainDeck": [
|
||||
{
|
||||
"count":10,
|
||||
"cardName": "Plains"
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"cardName": "Forest"
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"cardName": "Island"
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["white"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["green","blue"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [1,2]
|
||||
},
|
||||
{
|
||||
"count":4,
|
||||
"colors": ["white"],
|
||||
"rarity": ["Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":2,
|
||||
"colors": ["green","blue"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":6,
|
||||
"colors": ["white"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [5,6]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -38,16 +38,10 @@
|
||||
"manaCosts": [3,4]
|
||||
},
|
||||
{
|
||||
"count":5,
|
||||
"colors": ["white"],
|
||||
"rarity": ["Uncommon","Common"],
|
||||
"manaCosts": [5,6]
|
||||
},
|
||||
{
|
||||
"count":1,
|
||||
"count":6,
|
||||
"colors": ["white"],
|
||||
"rarity": ["rare"],
|
||||
"manaCosts": [7,8,9]
|
||||
"manaCosts": [5,6,7,8,9]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user