Fixes to ensure deckchooser AI status is set correctly before decks are generated and that the list of card-based decks is updated to show only AI playable cards as required.

This commit is contained in:
austinio7116
2018-03-10 20:23:34 +00:00
committed by maustin
parent ec1ad333cd
commit 4dd52e6f82
8 changed files with 108 additions and 6 deletions

View File

@@ -530,6 +530,10 @@ public class FDeckChooser extends FScreen {
}
}
public void refreshDeckListForAI(){
refreshDecksList(selectedDeckType,true,null);
}
private void refreshDecksList(DeckType deckType, boolean forceRefresh, FEvent e) {
if (selectedDeckType == deckType && !forceRefresh) { return; }
selectedDeckType = deckType;

View File

@@ -2,6 +2,7 @@ package forge.screens.constructed;
import java.util.*;
import forge.deck.*;
import org.apache.commons.lang3.StringUtils;
import com.badlogic.gdx.Gdx;
@@ -14,10 +15,6 @@ import forge.Graphics;
import forge.ai.AIOption;
import forge.assets.FSkinColor;
import forge.assets.FSkinFont;
import forge.deck.CardPool;
import forge.deck.Deck;
import forge.deck.DeckSection;
import forge.deck.DeckType;
import forge.game.GameType;
import forge.interfaces.ILobbyView;
import forge.interfaces.IPlayerChangeListener;
@@ -410,6 +407,43 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
return playerPanels.get(playernum).isArchenemy();
}
@Override
public final void update(final int slot, final LobbySlotType type) {
final FDeckChooser deckChooser = playerPanels.get(slot).getDeckChooser();
DeckType selectedDeckType = deckChooser.getSelectedDeckType();
switch (selectedDeckType){
case STANDARD_CARDGEN_DECK:
case MODERN_CARDGEN_DECK:
case COLOR_DECK:
case STANDARD_COLOR_DECK:
case MODERN_COLOR_DECK:
deckChooser.refreshDeckListForAI();
break;
default:
break;
}
final FDeckChooser commanderDeckChooser = playerPanels.get(slot).getCommanderDeckChooser();
selectedDeckType = commanderDeckChooser.getSelectedDeckType();
switch (selectedDeckType){
case RANDOM_CARDGEN_COMMANDER_DECK:
case RANDOM_COMMANDER_DECK:
commanderDeckChooser.refreshDeckListForAI();
break;
default:
break;
}
final FDeckChooser tinyLeaderDeckChooser = playerPanels.get(slot).getTinyLeadersDeckChooser();
selectedDeckType = tinyLeaderDeckChooser.getSelectedDeckType();
switch (selectedDeckType){
case RANDOM_CARDGEN_COMMANDER_DECK:
case RANDOM_COMMANDER_DECK:
tinyLeaderDeckChooser.refreshDeckListForAI();
break;
default:
break;
}
}
@Override
public void update(final boolean fullUpdate) {
int playerCount = lobby.getNumberOfSlots();

View File

@@ -339,6 +339,7 @@ public class PlayerPanel extends FContainer {
LobbySlot slot = screen.getLobby().getSlot(index);
slot.setType(type);
screen.update(index,type);
//update may edit in-case it changed as a result of the AI change
setMayEdit(screen.getLobby().mayEdit(index));