Completed random commander deck generation refactoring to work on Desktop, to support partner commanders and corrected a number of bugs found during testing. Full support on android and desktop for saving of selected deck states for the new features added.

This commit is contained in:
austinio7116
2018-02-21 09:28:17 +00:00
committed by maustin
parent 3cf215dbd0
commit ced56ec4cd
18 changed files with 313 additions and 238 deletions

View File

@@ -10,6 +10,7 @@ import com.badlogic.gdx.math.Rectangle;
import forge.Forge;
import forge.Graphics;
import forge.assets.FSkinImage;
import forge.deck.DeckProxy;
import forge.game.GameView;
import forge.game.card.CardView;
import forge.item.IPaperCard;
@@ -123,6 +124,10 @@ public class CardZoom extends FOverlay {
if (item instanceof CardView) {
return (CardView)item;
}
if (item instanceof DeckProxy) {
DeckProxy deck = ((DeckProxy)item);
return new CardView(-1, null, deck.getName(), null, deck.getImageKey(false));
}
if (item instanceof IPaperCard) {
return CardView.getCardForUi((IPaperCard)item);
}

View File

@@ -148,7 +148,8 @@ public class FDeckChooser extends FScreen {
public void handleEvent(FEvent e) {
if (selectedDeckType != DeckType.STANDARD_COLOR_DECK && selectedDeckType != DeckType.STANDARD_CARDGEN_DECK
&& selectedDeckType != DeckType.MODERN_CARDGEN_DECK && selectedDeckType != DeckType.MODERN_COLOR_DECK &&
selectedDeckType != DeckType.COLOR_DECK && selectedDeckType != DeckType.THEME_DECK) {
selectedDeckType != DeckType.COLOR_DECK && selectedDeckType != DeckType.THEME_DECK
&& selectedDeckType != DeckType.RANDOM_COMMANDER_DECK && selectedDeckType != DeckType.RANDOM_CARDGEN_COMMANDER_DECK) {
FDeckViewer.show(getDeck());
}
}
@@ -269,6 +270,8 @@ public class FDeckChooser extends FScreen {
case COLOR_DECK:
case STANDARD_COLOR_DECK:
case STANDARD_CARDGEN_DECK:
case RANDOM_CARDGEN_COMMANDER_DECK:
case RANDOM_COMMANDER_DECK:
case MODERN_CARDGEN_DECK:
case MODERN_COLOR_DECK:
case THEME_DECK:
@@ -453,7 +456,9 @@ public class FDeckChooser extends FScreen {
case TinyLeaders:
cmbDeckTypes.addItem(DeckType.CUSTOM_DECK);
cmbDeckTypes.addItem(DeckType.RANDOM_DECK);
cmbDeckTypes.addItem(DeckType.RANDOM_CARDGEN_COMMANDER_DECK);
if(!FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.LOAD_CARD_SCRIPTS_LAZILY)) {
cmbDeckTypes.addItem(DeckType.RANDOM_CARDGEN_COMMANDER_DECK);
}
cmbDeckTypes.addItem(DeckType.RANDOM_COMMANDER_DECK);
cmbDeckTypes.addItem(DeckType.NET_DECK);
break;

View File

@@ -1,6 +1,7 @@
package forge.deck;
import forge.Forge;
import forge.GuiBase;
import forge.assets.FImage;
import forge.assets.FSkin;
import forge.assets.FSkinImage;

View File

@@ -983,6 +983,9 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
if (cbxSortOptions != null) {
return cbxSortOptions.getWidth();
}
if(filters.size()==0){
return 0f;
}
return filters.get(filters.size() - 1).getWidget().getWidth();
}
}

View File

@@ -149,8 +149,8 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
FThreads.invokeInBackgroundThread(new Runnable() {
@Override
public void run() {
playerPanels.get(0).initialize(FPref.CONSTRUCTED_P1_DECK_STATE, DeckType.PRECONSTRUCTED_DECK);
playerPanels.get(1).initialize(FPref.CONSTRUCTED_P2_DECK_STATE, DeckType.COLOR_DECK);
playerPanels.get(0).initialize(FPref.CONSTRUCTED_P1_DECK_STATE, FPref.COMMANDER_P1_DECK_STATE, FPref.TINY_LEADER_P1_DECK_STATE, DeckType.PRECONSTRUCTED_DECK);
playerPanels.get(1).initialize(FPref.CONSTRUCTED_P2_DECK_STATE, FPref.COMMANDER_P2_DECK_STATE, FPref.TINY_LEADER_P2_DECK_STATE, DeckType.COLOR_DECK);
/*playerPanels.get(2).initialize(FPref.CONSTRUCTED_P3_DECK_STATE, DeckType.COLOR_DECK);
playerPanels.get(3).initialize(FPref.CONSTRUCTED_P4_DECK_STATE, DeckType.COLOR_DECK);
playerPanels.get(4).initialize(FPref.CONSTRUCTED_P5_DECK_STATE, DeckType.COLOR_DECK);
@@ -475,12 +475,15 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
Deck deck;
if (hasVariant(GameType.Commander)) {
deck = playerPanel.getCommanderDeck();
playerPanel.getCommanderDeckChooser().saveState();
}
else if (hasVariant(GameType.TinyLeaders)) {
deck = playerPanel.getTinyLeadersDeck();
playerPanel.getTinyLeadersDeckChooser().saveState();
}
else {
deck = playerPanel.getDeck();
playerPanel.getDeckChooser().saveState();
}
Deck playerDeck = deck;
@@ -505,8 +508,6 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
playerDeck.putSection(DeckSection.Avatar, avatarPool);
}
playerPanel.getDeckChooser().saveState();
decks[playerIndex] = playerDeck;
if (playerChangeListener != null) {
playerChangeListener.update(playerIndex, UpdateLobbyPlayerEvent.deckUpdate(playerDeck));

View File

@@ -109,25 +109,43 @@ public class PlayerPanel extends FContainer {
lstCommanderDecks = new FDeckChooser(GameType.Commander, isAi, new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
btnCommanderDeck.setText("Commander Deck: " + ((DeckManager)e.getSource()).getSelectedItem().getName());
if( ((DeckManager)e.getSource()).getSelectedItem() != null) {
btnCommanderDeck.setText("Commander Deck: " + ((DeckManager) e.getSource()).getSelectedItem().getName());
lstCommanderDecks.saveState();
}else{
btnCommanderDeck.setText("Commander Deck");
}
}
});
lstTinyLeadersDecks = new FDeckChooser(GameType.TinyLeaders, isAi, new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
btnTinyLeadersDeck.setText("Tiny Leaders Deck: " + ((DeckManager)e.getSource()).getSelectedItem().getName());
if( ((DeckManager)e.getSource()).getSelectedItem() != null) {
btnTinyLeadersDeck.setText("Tiny Leaders Deck: " + ((DeckManager) e.getSource()).getSelectedItem().getName());
lstTinyLeadersDecks.saveState();
}else{
btnTinyLeadersDeck.setText("Tiny Leaders Deck");
}
}
});
lstSchemeDecks = new FDeckChooser(GameType.Archenemy, isAi, new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
btnSchemeDeck.setText("Scheme Deck: " + ((DeckManager)e.getSource()).getSelectedItem().getName());
if( ((DeckManager)e.getSource()).getSelectedItem() != null){
btnSchemeDeck.setText("Scheme Deck: " + ((DeckManager)e.getSource()).getSelectedItem().getName());
}else{
btnSchemeDeck.setText("Scheme Deck");
}
}
});
lstPlanarDecks = new FDeckChooser(GameType.Planechase, isAi, new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
btnPlanarDeck.setText("Planar Deck: " + ((DeckManager)e.getSource()).getSelectedItem().getName());
if( ((DeckManager)e.getSource()).getSelectedItem() != null){
btnPlanarDeck.setText("Planar Deck: " + ((DeckManager)e.getSource()).getSelectedItem().getName());
}else{
btnPlanarDeck.setText("Planar Deck");
}
}
});
lstVanguardAvatars = new FVanguardChooser(isAi, new FEventHandler() {
@@ -217,10 +235,10 @@ public class PlayerPanel extends FContainer {
cbTeam.setEnabled(false);
}
public void initialize(FPref savedStateSetting, DeckType defaultDeckType) {
public void initialize(FPref savedStateSetting, FPref savedStateSettingCommander, FPref savedStateSettingTinyLeader, DeckType defaultDeckType) {
deckChooser.initialize(savedStateSetting, defaultDeckType);
lstCommanderDecks.initialize(null, DeckType.RANDOM_DECK);
lstTinyLeadersDecks.initialize(null, DeckType.RANDOM_DECK);
lstCommanderDecks.initialize(savedStateSettingCommander, DeckType.COMMANDER_DECK);
lstTinyLeadersDecks.initialize(savedStateSettingTinyLeader, DeckType.TINY_LEADERS_DECKS);
lstPlanarDecks.initialize(null, DeckType.RANDOM_DECK);
lstSchemeDecks.initialize(null, DeckType.RANDOM_DECK);
}
@@ -666,6 +684,15 @@ public class PlayerPanel extends FContainer {
return deckChooser;
}
public FDeckChooser getCommanderDeckChooser() {
return lstCommanderDecks;
}
public FDeckChooser getTinyLeadersDeckChooser() {
return lstTinyLeadersDecks;
}
public Deck getDeck() {
return deckChooser.getDeck();
}

View File

@@ -82,7 +82,7 @@ public class NewGauntletScreen extends LaunchScreen {
if (numOpponents == null) { return; }
ListChooser<DeckType> chooser = new ListChooser<DeckType>(
"Choose allowed deck types for opponents", 0, 7, Arrays.asList(new DeckType[] {
"Choose allowed deck types for opponents", 0, 9, Arrays.asList(new DeckType[] {
DeckType.CUSTOM_DECK,
DeckType.PRECONSTRUCTED_DECK,
DeckType.QUEST_OPPONENT_DECK,