mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user