mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Merge pull request #1231 from kevlahnota/master
Starter deck for AdventurePlayer
This commit is contained in:
@@ -122,7 +122,7 @@ public class AdventurePlayer implements Serializable, SaveFileContent {
|
|||||||
avatarIndex = avatar;
|
avatarIndex = avatar;
|
||||||
isFemale = !male;
|
isFemale = !male;
|
||||||
|
|
||||||
if(fantasyMode){ //Set a random ColorID in fantasy mode.
|
if (fantasyMode){ //Set a random ColorID in fantasy mode.
|
||||||
setColorIdentity(MyRandom.getRandom().nextInt(5)); // MyRandom to not interfere with the unstable RNG.
|
setColorIdentity(MyRandom.getRandom().nextInt(5)); // MyRandom to not interfere with the unstable RNG.
|
||||||
} else setColorIdentity(startingColorIdentity + 1); // +1 because index 0 is colorless.
|
} else setColorIdentity(startingColorIdentity + 1); // +1 because index 0 is colorless.
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,6 @@ import com.badlogic.gdx.Gdx;
|
|||||||
import com.badlogic.gdx.Input;
|
import com.badlogic.gdx.Input;
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Event;
|
|
||||||
import com.badlogic.gdx.scenes.scene2d.EventListener;
|
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.CheckBox;
|
import com.badlogic.gdx.scenes.scene2d.ui.CheckBox;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Image;
|
import com.badlogic.gdx.scenes.scene2d.ui.Image;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
|
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
|
||||||
@@ -24,6 +22,7 @@ import forge.adventure.util.Controls;
|
|||||||
import forge.adventure.util.Selector;
|
import forge.adventure.util.Selector;
|
||||||
import forge.adventure.world.WorldSave;
|
import forge.adventure.world.WorldSave;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
|
import forge.deck.DeckProxy;
|
||||||
import forge.localinstance.properties.ForgePreferences;
|
import forge.localinstance.properties.ForgePreferences;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.player.GamePlayerUtil;
|
import forge.player.GamePlayerUtil;
|
||||||
@@ -49,7 +48,8 @@ public class NewGameScene extends UIScene {
|
|||||||
private ImageButton leftArrow, rightArrow;
|
private ImageButton leftArrow, rightArrow;
|
||||||
private TextButton backButton, startButton;
|
private TextButton backButton, startButton;
|
||||||
boolean fantasyMode = false;
|
boolean fantasyMode = false;
|
||||||
private CheckBox box;
|
boolean easyMode = false;
|
||||||
|
private CheckBox box, box2;
|
||||||
|
|
||||||
public NewGameScene() {
|
public NewGameScene() {
|
||||||
super(Forge.isLandscapeMode() ? "ui/new_game.json" : "ui/new_game_portrait.json");
|
super(Forge.isLandscapeMode() ? "ui/new_game.json" : "ui/new_game_portrait.json");
|
||||||
@@ -59,21 +59,18 @@ public class NewGameScene extends UIScene {
|
|||||||
if (selectedName.getText().isEmpty()) {
|
if (selectedName.getText().isEmpty()) {
|
||||||
selectedName.setText(NameGenerator.getRandomName("Any", "Any", ""));
|
selectedName.setText(NameGenerator.getRandomName("Any", "Any", ""));
|
||||||
}
|
}
|
||||||
Runnable runnable = new Runnable() {
|
Runnable runnable = () -> {
|
||||||
@Override
|
FModel.getPreferences().setPref(ForgePreferences.FPref.UI_ENABLE_MUSIC, false);
|
||||||
public void run() {
|
WorldSave.generateNewWorld(selectedName.getText(),
|
||||||
FModel.getPreferences().setPref(ForgePreferences.FPref.UI_ENABLE_MUSIC, false);
|
gender.getCurrentIndex() == 0,
|
||||||
WorldSave.generateNewWorld(selectedName.getText(),
|
race.getCurrentIndex(),
|
||||||
gender.getCurrentIndex() == 0,
|
avatarIndex,
|
||||||
race.getCurrentIndex(),
|
deck.getCurrentIndex(),
|
||||||
avatarIndex,
|
Config.instance().getConfigData().difficulties[difficulty.getCurrentIndex()],
|
||||||
deck.getCurrentIndex(),
|
fantasyMode, easyMode, deck.getText(), 0);
|
||||||
Config.instance().getConfigData().difficulties[difficulty.getCurrentIndex()],
|
GamePlayerUtil.getGuiPlayer().setName(selectedName.getText());
|
||||||
fantasyMode,0);
|
Forge.clearTransitionScreen();
|
||||||
GamePlayerUtil.getGuiPlayer().setName(selectedName.getText());
|
Forge.switchScene(SceneType.GameScene.instance);
|
||||||
Forge.clearTransitionScreen();
|
|
||||||
Forge.switchScene(SceneType.GameScene.instance);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
Forge.setTransitionScreen(new TransitionScreen(runnable, null, false, true));
|
Forge.setTransitionScreen(new TransitionScreen(runnable, null, false, true));
|
||||||
return true;
|
return true;
|
||||||
@@ -92,32 +89,21 @@ public class NewGameScene extends UIScene {
|
|||||||
avatarImage = ui.findActor("avatarPreview");
|
avatarImage = ui.findActor("avatarPreview");
|
||||||
gender = ui.findActor("gender");
|
gender = ui.findActor("gender");
|
||||||
gender.setTextList(new String[]{"Male", "Female"});
|
gender.setTextList(new String[]{"Male", "Female"});
|
||||||
gender.addListener(new EventListener() {
|
gender.addListener(event -> NewGameScene.this.updateAvatar());
|
||||||
@Override
|
|
||||||
public boolean handle(Event event) {
|
|
||||||
return NewGameScene.this.updateAvatar();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Random rand = new Random();
|
Random rand = new Random();
|
||||||
|
|
||||||
deck = ui.findActor("deck");
|
deck = ui.findActor("deck");
|
||||||
|
|
||||||
starterDeck = Config.instance().starterDecks();
|
starterDeck = Config.instance().starterDecks();
|
||||||
Array<String> stringList = new Array<>(starterDeck.length);
|
Array<String> stringList = new Array<>(starterDeck.length);
|
||||||
for (Deck deck : starterDeck)
|
for (Deck deck : starterDeck)
|
||||||
stringList.add(deck.getName());
|
stringList.add(deck.getName());
|
||||||
Array<String> chaos = new Array<>();
|
Array<String> chaos = new Array<>();
|
||||||
chaos.add("Preconstructed");
|
chaos.add("Preconstructed");
|
||||||
|
Array<String> easyDecks = new Array<>();
|
||||||
|
for (DeckProxy deckProxy : DeckProxy.getAllEasyStarterDecks())
|
||||||
|
easyDecks.add(deckProxy.getName());
|
||||||
deck.setTextList(stringList);
|
deck.setTextList(stringList);
|
||||||
|
|
||||||
race = ui.findActor("race");
|
race = ui.findActor("race");
|
||||||
race.addListener(new EventListener() {
|
race.addListener(event -> NewGameScene.this.updateAvatar());
|
||||||
@Override
|
|
||||||
public boolean handle(Event event) {
|
|
||||||
return NewGameScene.this.updateAvatar();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
race.setTextList(HeroListData.getRaces());
|
race.setTextList(HeroListData.getRaces());
|
||||||
difficulty = ui.findActor("difficulty");
|
difficulty = ui.findActor("difficulty");
|
||||||
|
|
||||||
@@ -136,30 +122,10 @@ public class NewGameScene extends UIScene {
|
|||||||
gender.setCurrentIndex(rand.nextInt());
|
gender.setCurrentIndex(rand.nextInt());
|
||||||
deck.setCurrentIndex(rand.nextInt());
|
deck.setCurrentIndex(rand.nextInt());
|
||||||
race.setCurrentIndex(rand.nextInt());
|
race.setCurrentIndex(rand.nextInt());
|
||||||
ui.onButtonPress("back", new Runnable() {
|
ui.onButtonPress("back", () -> NewGameScene.this.back());
|
||||||
@Override
|
ui.onButtonPress("start", () -> NewGameScene.this.start());
|
||||||
public void run() {
|
ui.onButtonPress("leftAvatar", () -> NewGameScene.this.leftAvatar());
|
||||||
NewGameScene.this.back();
|
ui.onButtonPress("rightAvatar", () -> NewGameScene.this.rightAvatar());
|
||||||
}
|
|
||||||
});
|
|
||||||
ui.onButtonPress("start", new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
NewGameScene.this.start();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
ui.onButtonPress("leftAvatar", new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
NewGameScene.this.leftAvatar();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
ui.onButtonPress("rightAvatar", new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
NewGameScene.this.rightAvatar();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
scrollPane = ui.findActor("scroll");
|
scrollPane = ui.findActor("scroll");
|
||||||
titleL = ui.findActor("titleL");
|
titleL = ui.findActor("titleL");
|
||||||
@@ -178,20 +144,56 @@ public class NewGameScene extends UIScene {
|
|||||||
difficultyL.setText(Forge.getLocalizer().getMessage("lblDifficulty"));
|
difficultyL.setText(Forge.getLocalizer().getMessage("lblDifficulty"));
|
||||||
deckL = ui.findActor("deckL");
|
deckL = ui.findActor("deckL");
|
||||||
deckL.setText(Forge.getLocalizer().getMessage("lblDeck"));
|
deckL.setText(Forge.getLocalizer().getMessage("lblDeck"));
|
||||||
|
box2 = Controls.newCheckBox("");
|
||||||
|
box2.addListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void changed(ChangeEvent changeEvent, Actor actor) {
|
||||||
|
if (((CheckBox) actor).isChecked()) {
|
||||||
|
box.setChecked(false);
|
||||||
|
easyMode = true;
|
||||||
|
fantasyMode = false;
|
||||||
|
deck.setTextList(easyDecks);
|
||||||
|
} else {
|
||||||
|
easyMode = false;
|
||||||
|
deck.setTextList(stringList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
box = Controls.newCheckBox("");
|
box = Controls.newCheckBox("");
|
||||||
box.addListener(new ChangeListener() {
|
box.addListener(new ChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void changed(ChangeEvent event, Actor actor) {
|
public void changed(ChangeEvent event, Actor actor) {
|
||||||
fantasyMode = ((CheckBox) actor).isChecked();
|
if (((CheckBox) actor).isChecked()) {
|
||||||
deck.setTextList(fantasyMode ? chaos : stringList);
|
box2.setChecked(false);
|
||||||
|
fantasyMode = true;
|
||||||
|
easyMode = false;
|
||||||
|
deck.setTextList(chaos);
|
||||||
|
} else {
|
||||||
|
fantasyMode = false;
|
||||||
|
deck.setTextList(stringList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
box.setBounds(deckL.getX()-box.getHeight(), deckL.getY()-box.getHeight(), deckL.getHeight(), deckL.getHeight());
|
//easy mode
|
||||||
Label label = Controls.newLabel("Chaos Mode");
|
box2.setBounds(deckL.getX()-box2.getHeight(), deckL.getY()-box2.getHeight(), deckL.getHeight(), deckL.getHeight());
|
||||||
|
Label label2 = Controls.newLabel("Starter");
|
||||||
|
label2.setColor(Color.BLACK);
|
||||||
|
label2.setBounds(box2.getX()+22, box2.getY(), box2.getWidth(), box2.getHeight());
|
||||||
|
ui.addActor(box2);
|
||||||
|
ui.addActor(label2);
|
||||||
|
//chaos mode
|
||||||
|
box.setBounds(label2.getX()+25, label2.getY(), box2.getWidth(), box2.getHeight());
|
||||||
|
Label label = Controls.newLabel("Chaos");
|
||||||
label.setColor(Color.BLACK);
|
label.setColor(Color.BLACK);
|
||||||
label.setBounds(box.getX()+22, box.getY(), box.getWidth(), box.getHeight());
|
label.setBounds(box.getX()+22, box.getY(), box.getWidth(), box.getHeight());
|
||||||
ui.addActor(box);
|
ui.addActor(box);
|
||||||
ui.addActor(label);
|
ui.addActor(label);
|
||||||
|
if (easyDecks.isEmpty()) {
|
||||||
|
box2.setDisabled(true);
|
||||||
|
box2.getColor().a = 0.5f;
|
||||||
|
label2.getColor().a = 0.5f;
|
||||||
|
}
|
||||||
leftArrow = ui.findActor("leftAvatar");
|
leftArrow = ui.findActor("leftAvatar");
|
||||||
rightArrow = ui.findActor("rightAvatar");
|
rightArrow = ui.findActor("rightAvatar");
|
||||||
backButton = ui.findActor("back");
|
backButton = ui.findActor("back");
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import forge.adventure.util.Config;
|
|||||||
import forge.adventure.util.SaveFileData;
|
import forge.adventure.util.SaveFileData;
|
||||||
import forge.adventure.util.SignalList;
|
import forge.adventure.util.SignalList;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
|
import forge.deck.DeckProxy;
|
||||||
import forge.deck.DeckgenUtil;
|
import forge.deck.DeckgenUtil;
|
||||||
import forge.localinstance.properties.ForgeConstants;
|
import forge.localinstance.properties.ForgeConstants;
|
||||||
import forge.player.GamePlayerUtil;
|
import forge.player.GamePlayerUtil;
|
||||||
@@ -119,13 +120,24 @@ public class WorldSave {
|
|||||||
return currentSave;
|
return currentSave;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WorldSave generateNewWorld(String name, boolean male, int race, int avatarIndex, int startingColorIdentity, DifficultyData diff, boolean isFantasy, long seed) {
|
public static WorldSave generateNewWorld(String name, boolean male, int race, int avatarIndex, int startingColorIdentity, DifficultyData diff, boolean isFantasy, boolean isEasy, String starter, long seed) {
|
||||||
currentSave.world.generateNew(seed);
|
currentSave.world.generateNew(seed);
|
||||||
currentSave.pointOfInterestChanges.clear();
|
currentSave.pointOfInterestChanges.clear();
|
||||||
Deck starterDeck = isFantasy ? DeckgenUtil.getRandomOrPreconOrThemeDeck("", false, false, false) : Config.instance().starterDecks()[startingColorIdentity];
|
Deck starterDeck;
|
||||||
|
int identity = startingColorIdentity;
|
||||||
|
if (isEasy) {
|
||||||
|
DeckProxy dp = DeckProxy.getAllEasyStarterDecks().get(startingColorIdentity);
|
||||||
|
starterDeck = dp.getDeck();
|
||||||
|
identity = dp.setStarterDeckColorIdentity();
|
||||||
|
} else {
|
||||||
|
starterDeck = isFantasy ? DeckgenUtil.getRandomOrPreconOrThemeDeck("", false, false, false) : Config.instance().starterDecks()[startingColorIdentity];
|
||||||
|
}
|
||||||
currentSave.player.create(name, startingColorIdentity, starterDeck, male, race, avatarIndex, isFantasy, diff);
|
currentSave.player.create(name, startingColorIdentity, starterDeck, male, race, avatarIndex, isFantasy, diff);
|
||||||
currentSave.player.setWorldPosY((int) (currentSave.world.getData().playerStartPosY * currentSave.world.getData().height * currentSave.world.getTileSize()));
|
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()));
|
currentSave.player.setWorldPosX((int) (currentSave.world.getData().playerStartPosX * currentSave.world.getData().width * currentSave.world.getTileSize()));
|
||||||
|
//after getting deck override starting color identity to match
|
||||||
|
if (identity != startingColorIdentity)
|
||||||
|
currentSave.player.setColorIdentity(identity);
|
||||||
currentSave.onLoadList.emit();
|
currentSave.onLoadList.emit();
|
||||||
return currentSave;
|
return currentSave;
|
||||||
//return currentSave = ret;
|
//return currentSave = ret;
|
||||||
|
|||||||
@@ -244,10 +244,10 @@ public class Assets implements Disposable {
|
|||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public synchronized <T> void load(String fileName, Class<T> type, AssetLoaderParameters<T> parameter) {
|
public synchronized <T> void load(String fileName, Class<T> type) {
|
||||||
if (type.equals(Texture.class)) {
|
if (type.equals(Texture.class)) {
|
||||||
if (parameter == null) {
|
if (parameter == null) {
|
||||||
parameter = (AssetLoaderParameters<T>) new TextureParameter();
|
parameter = getTextureFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
final AssetLoaderParameters.LoadedCallback prevCallback = parameter.loadedCallback;
|
final AssetLoaderParameters.LoadedCallback prevCallback = parameter.loadedCallback;
|
||||||
@@ -261,7 +261,7 @@ public class Assets implements Disposable {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
super.load(fileName, type, parameter);
|
super.load(fileName, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -235,7 +235,52 @@ public class DeckProxy implements InventoryItem {
|
|||||||
}
|
}
|
||||||
return deckIdentity;
|
return deckIdentity;
|
||||||
}
|
}
|
||||||
|
public int setStarterDeckColorIdentity() {
|
||||||
|
int adventureColorIdentity = 0;
|
||||||
|
int w = 0, u = 0, b = 0, g = 0, r = 0, highest = -1;
|
||||||
|
for (final Entry<DeckSection, CardPool> deckEntry : getDeck()) {
|
||||||
|
switch (deckEntry.getKey()) {
|
||||||
|
case Main:
|
||||||
|
case Sideboard:
|
||||||
|
case Commander:
|
||||||
|
for (final Entry<PaperCard, Integer> poolEntry : deckEntry.getValue()) {
|
||||||
|
if (poolEntry.getKey().getRules().getType().isLand())
|
||||||
|
continue;
|
||||||
|
w += poolEntry.getKey().getRules().getManaCost().getShardCount(ManaCostShard.WHITE);
|
||||||
|
u += poolEntry.getKey().getRules().getManaCost().getShardCount(ManaCostShard.BLUE);
|
||||||
|
b += poolEntry.getKey().getRules().getManaCost().getShardCount(ManaCostShard.BLACK);
|
||||||
|
g += poolEntry.getKey().getRules().getManaCost().getShardCount(ManaCostShard.GREEN);
|
||||||
|
r += poolEntry.getKey().getRules().getManaCost().getShardCount(ManaCostShard.RED);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break; //ignore other sections
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (w > highest) {
|
||||||
|
highest = w;
|
||||||
|
adventureColorIdentity = 1;
|
||||||
|
}
|
||||||
|
if (u > highest) {
|
||||||
|
highest = u;
|
||||||
|
adventureColorIdentity = 3;
|
||||||
|
}
|
||||||
|
if (b > highest) {
|
||||||
|
highest = b;
|
||||||
|
adventureColorIdentity = 2;
|
||||||
|
}
|
||||||
|
if (g > highest) {
|
||||||
|
highest = g;
|
||||||
|
adventureColorIdentity = 5;
|
||||||
|
}
|
||||||
|
if (r > highest) {
|
||||||
|
highest = r;
|
||||||
|
adventureColorIdentity = 4;
|
||||||
|
}
|
||||||
|
if (highest == 0)
|
||||||
|
adventureColorIdentity = 0;
|
||||||
|
return adventureColorIdentity;
|
||||||
|
}
|
||||||
public Deck.UnplayableAICards getAI() {
|
public Deck.UnplayableAICards getAI() {
|
||||||
return getDeck().getUnplayableAICards();
|
return getDeck().getUnplayableAICards();
|
||||||
}
|
}
|
||||||
@@ -619,6 +664,13 @@ public class DeckProxy implements InventoryItem {
|
|||||||
return decks;
|
return decks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<DeckProxy> getAllEasyStarterDecks() {
|
||||||
|
final List<DeckProxy> decks = new ArrayList<>();
|
||||||
|
final IStorage<Deck> easy = FModel.getDecks().getEasyStarterDecks();
|
||||||
|
addDecksRecursivelly("Constructed", GameType.Constructed, decks, "", easy, null);
|
||||||
|
return decks;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public static List<DeckProxy> getAllSealedDecks() {
|
public static List<DeckProxy> getAllSealedDecks() {
|
||||||
final List<DeckProxy> humanDecks = new ArrayList<>();
|
final List<DeckProxy> humanDecks = new ArrayList<>();
|
||||||
|
|||||||
@@ -89,6 +89,7 @@ public final class ForgeConstants {
|
|||||||
public static final String TUTORIAL_DIR = RES_DIR + "tutorial" + PATH_SEPARATOR;
|
public static final String TUTORIAL_DIR = RES_DIR + "tutorial" + PATH_SEPARATOR;
|
||||||
public static final String DECK_GEN_DIR = RES_DIR + "deckgendecks" + PATH_SEPARATOR;
|
public static final String DECK_GEN_DIR = RES_DIR + "deckgendecks" + PATH_SEPARATOR;
|
||||||
public static final String GENETIC_AI_DECK_DIR = RES_DIR + "geneticaidecks" + PATH_SEPARATOR;
|
public static final String GENETIC_AI_DECK_DIR = RES_DIR + "geneticaidecks" + PATH_SEPARATOR;
|
||||||
|
public static final String EASY_STARTER_DECK_DIR = RES_DIR + "easystarterdecks" + PATH_SEPARATOR;
|
||||||
|
|
||||||
|
|
||||||
private static final String QUEST_DIR = RES_DIR + "quest" + PATH_SEPARATOR;
|
private static final String QUEST_DIR = RES_DIR + "quest" + PATH_SEPARATOR;
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ public class CardCollections {
|
|||||||
private IStorage<Deck> tinyLeaders;
|
private IStorage<Deck> tinyLeaders;
|
||||||
private IStorage<Deck> brawl;
|
private IStorage<Deck> brawl;
|
||||||
private IStorage<Deck> genetic;
|
private IStorage<Deck> genetic;
|
||||||
|
private IStorage<Deck> easy;
|
||||||
|
|
||||||
public CardCollections() {
|
public CardCollections() {
|
||||||
}
|
}
|
||||||
@@ -154,4 +155,12 @@ public class CardCollections {
|
|||||||
}
|
}
|
||||||
return genetic;
|
return genetic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final IStorage<Deck> getEasyStarterDecks() {
|
||||||
|
if (easy == null) {
|
||||||
|
easy = new StorageImmediatelySerialized<>("Easy Starter decks",
|
||||||
|
new DeckStorage(new File(ForgeConstants.EASY_STARTER_DECK_DIR), ForgeConstants.RES_DIR));
|
||||||
|
}
|
||||||
|
return easy;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user