mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 02:38:02 +00:00
Merge branch 'revert-9d32ec86' into 'master'
Revert "Merge branch 'paco-aicannotplaybyarea' into 'master'" See merge request core-developers/forge!6087
This commit is contained in:
@@ -2077,23 +2077,18 @@ public class AiController {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<DeckSection, List<? extends PaperCard>> complainCardsCantPlayWell(Deck myDeck) {
|
public Collection<? extends PaperCard> complainCardsCantPlayWell(Deck myDeck) {
|
||||||
Map<DeckSection, List<? extends PaperCard>> complaints = new HashMap<>();
|
List<PaperCard> result = Lists.newArrayList();
|
||||||
// When using simulation, AI should be able to figure out most cards.
|
// When using simulation, AI should be able to figure out most cards.
|
||||||
if (!useSimulation) {
|
if (!useSimulation) {
|
||||||
for (Entry<DeckSection, CardPool> ds : myDeck) {
|
for (Entry<DeckSection, CardPool> ds : myDeck) {
|
||||||
List<PaperCard> result = Lists.newArrayList();
|
|
||||||
for (Entry<PaperCard, Integer> cp : ds.getValue()) {
|
for (Entry<PaperCard, Integer> cp : ds.getValue()) {
|
||||||
if (cp.getKey().getRules().getAiHints().getRemAIDecks()) {
|
if (cp.getKey().getRules().getAiHints().getRemAIDecks())
|
||||||
result.add(cp.getKey());
|
result.add(cp.getKey());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!result.isEmpty()) {
|
|
||||||
complaints.put(ds.getKey(), result);
|
|
||||||
}
|
}
|
||||||
}
|
return result;
|
||||||
}
|
|
||||||
return complaints;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// this is where the computer cheats
|
// this is where the computer cheats
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import forge.card.MagicColor;
|
|||||||
import forge.card.mana.ManaCost;
|
import forge.card.mana.ManaCost;
|
||||||
import forge.card.mana.ManaCostShard;
|
import forge.card.mana.ManaCostShard;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.deck.DeckSection;
|
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.GameEntity;
|
import forge.game.GameEntity;
|
||||||
import forge.game.GameObject;
|
import forge.game.GameObject;
|
||||||
@@ -1126,12 +1125,7 @@ public class PlayerControllerAi extends PlayerController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void revealAISkipCards(String message, Map<Player, Map<DeckSection, List<? extends PaperCard>>> deckCards) {
|
public Collection<? extends PaperCard> complainCardsCantPlayWell(Deck myDeck) {
|
||||||
// Ai won't understand that anyway
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<DeckSection, List<? extends PaperCard>> complainCardsCantPlayWell(Deck myDeck) {
|
|
||||||
return brains.complainCardsCantPlayWell(myDeck);
|
return brains.complainCardsCantPlayWell(myDeck);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ import com.google.common.collect.Sets;
|
|||||||
import forge.GameCommand;
|
import forge.GameCommand;
|
||||||
import forge.StaticData;
|
import forge.StaticData;
|
||||||
import forge.card.CardStateName;
|
import forge.card.CardStateName;
|
||||||
import forge.deck.DeckSection;
|
|
||||||
import forge.game.ability.AbilityFactory;
|
import forge.game.ability.AbilityFactory;
|
||||||
import forge.game.ability.AbilityKey;
|
import forge.game.ability.AbilityKey;
|
||||||
import forge.game.ability.AbilityUtils;
|
import forge.game.ability.AbilityUtils;
|
||||||
@@ -1876,15 +1875,7 @@ public class GameAction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void revealUnplayableByAI(String title, Map<Player, Map<DeckSection, List<? extends PaperCard>>> unplayableCards) {
|
|
||||||
// Notify both players
|
|
||||||
for (Player p : game.getPlayers()) {
|
|
||||||
p.getController().revealAISkipCards(title, unplayableCards);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void revealAnte(String title, Multimap<Player, PaperCard> removedAnteCards) {
|
public void revealAnte(String title, Multimap<Player, PaperCard> removedAnteCards) {
|
||||||
// Notify both players
|
|
||||||
for (Player p : game.getPlayers()) {
|
for (Player p : game.getPlayers()) {
|
||||||
p.getController().revealAnte(title, removedAnteCards);
|
p.getController().revealAnte(title, removedAnteCards);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ public class Match {
|
|||||||
game.getTriggerHandler().clearDelayedTrigger();
|
game.getTriggerHandler().clearDelayedTrigger();
|
||||||
|
|
||||||
// friendliness
|
// friendliness
|
||||||
Map<Player, Map<DeckSection, List<? extends PaperCard>>> rAICards = new HashMap<>();
|
Multimap<Player, PaperCard> rAICards = HashMultimap.create();
|
||||||
Multimap<Player, PaperCard> removedAnteCards = ArrayListMultimap.create();
|
Multimap<Player, PaperCard> removedAnteCards = ArrayListMultimap.create();
|
||||||
|
|
||||||
final FCollectionView<Player> players = game.getPlayers();
|
final FCollectionView<Player> players = game.getPlayers();
|
||||||
@@ -315,9 +315,9 @@ public class Match {
|
|||||||
player.shuffle(null);
|
player.shuffle(null);
|
||||||
|
|
||||||
if (isFirstGame) {
|
if (isFirstGame) {
|
||||||
Map<DeckSection, List<? extends PaperCard>> cardsComplained = player.getController().complainCardsCantPlayWell(myDeck);
|
Collection<? extends PaperCard> cardsComplained = player.getController().complainCardsCantPlayWell(myDeck);
|
||||||
if (cardsComplained != null && !cardsComplained.isEmpty()) {
|
if (null != cardsComplained) {
|
||||||
rAICards.put(player, cardsComplained);
|
rAICards.putAll(player, cardsComplained);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//reset cards to fix weird issues on netplay nextgame client
|
//reset cards to fix weird issues on netplay nextgame client
|
||||||
@@ -334,7 +334,7 @@ public class Match {
|
|||||||
|
|
||||||
final Localizer localizer = Localizer.getInstance();
|
final Localizer localizer = Localizer.getInstance();
|
||||||
if (!rAICards.isEmpty() && !rules.getGameType().isCardPoolLimited()) {
|
if (!rAICards.isEmpty() && !rules.getGameType().isCardPoolLimited()) {
|
||||||
game.getAction().revealUnplayableByAI(localizer.getMessage("lblAICantPlayCards"), rAICards);
|
game.getAction().revealAnte(localizer.getMessage("lblAICantPlayCards"), rAICards);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!removedAnteCards.isEmpty()) {
|
if (!removedAnteCards.isEmpty()) {
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import forge.card.ICardFace;
|
|||||||
import forge.card.mana.ManaCost;
|
import forge.card.mana.ManaCost;
|
||||||
import forge.card.mana.ManaCostShard;
|
import forge.card.mana.ManaCostShard;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.deck.DeckSection;
|
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.GameEntity;
|
import forge.game.GameEntity;
|
||||||
import forge.game.GameObject;
|
import forge.game.GameObject;
|
||||||
@@ -239,11 +238,10 @@ public abstract class PlayerController {
|
|||||||
public abstract boolean chooseCardsPile(SpellAbility sa, CardCollectionView pile1, CardCollectionView pile2, String faceUp);
|
public abstract boolean chooseCardsPile(SpellAbility sa, CardCollectionView pile1, CardCollectionView pile2, String faceUp);
|
||||||
|
|
||||||
public abstract void revealAnte(String message, Multimap<Player, PaperCard> removedAnteCards);
|
public abstract void revealAnte(String message, Multimap<Player, PaperCard> removedAnteCards);
|
||||||
public abstract void revealAISkipCards(String message, Map<Player, Map<DeckSection, List<? extends PaperCard>>> deckCards);
|
|
||||||
|
|
||||||
// These 2 are for AI
|
// These 2 are for AI
|
||||||
public CardCollectionView cheatShuffle(CardCollectionView list) { return list; }
|
public CardCollectionView cheatShuffle(CardCollectionView list) { return list; }
|
||||||
public Map<DeckSection, List<? extends PaperCard>> complainCardsCantPlayWell(Deck myDeck) { return null; }
|
public Collection<? extends PaperCard> complainCardsCantPlayWell(Deck myDeck) { return null; }
|
||||||
|
|
||||||
public abstract void resetAtEndOfTurn(); // currently used by the AI to perform card memory cleanup
|
public abstract void resetAtEndOfTurn(); // currently used by the AI to perform card memory cleanup
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ import forge.card.MagicColor;
|
|||||||
import forge.card.mana.ManaCost;
|
import forge.card.mana.ManaCost;
|
||||||
import forge.card.mana.ManaCostShard;
|
import forge.card.mana.ManaCostShard;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.deck.DeckSection;
|
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.GameEntity;
|
import forge.game.GameEntity;
|
||||||
import forge.game.GameObject;
|
import forge.game.GameObject;
|
||||||
@@ -595,11 +594,6 @@ public class PlayerControllerForTests extends PlayerController {
|
|||||||
// test this!
|
// test this!
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void revealAISkipCards(final String message, final Map<DeckSection, List<? extends PaperCard>> removedUnplayableCards) {
|
|
||||||
// TODO test this!
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PaperCard> chooseCardsYouWonToAddToDeck(List<PaperCard> losses) {
|
public List<PaperCard> chooseCardsYouWonToAddToDeck(List<PaperCard> losses) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import java.util.LinkedHashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.Range;
|
import org.apache.commons.lang3.Range;
|
||||||
@@ -2089,34 +2088,6 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void revealAISkipCards(final String message, final Map<Player, Map<DeckSection, List<? extends PaperCard>>> unplayable) {
|
|
||||||
for (Player p : unplayable.keySet()) {
|
|
||||||
final Map<DeckSection, List<? extends PaperCard>> removedUnplayableCards = unplayable.get(p);
|
|
||||||
final List<String> labels = new ArrayList<>();
|
|
||||||
for (final DeckSection s: removedUnplayableCards.keySet()) {
|
|
||||||
labels.add("=== " + getLocalizedDeckSection(s) + " ===");
|
|
||||||
labels.addAll(removedUnplayableCards.get(s).stream().map(a -> a.toString()).collect(Collectors.toList()));
|
|
||||||
}
|
|
||||||
getGui().reveal(localizer.getMessage("lblActionFromPlayerDeck", message, Lang.getInstance().getPossessedObject(MessageUtil.mayBeYou(player, p), "")),
|
|
||||||
ImmutableList.copyOf(labels));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getLocalizedDeckSection(DeckSection d) {
|
|
||||||
switch (d) {
|
|
||||||
case Avatar: return localizer.getMessage("lblAvatar");
|
|
||||||
case Commander: return localizer.getMessage("lblCommanderDeck");
|
|
||||||
case Main: return localizer.getMessage("lblMainDeck");
|
|
||||||
case Sideboard: return localizer.getMessage("lblSideboard");
|
|
||||||
case Planes: return localizer.getMessage("lblPlanarDeck");
|
|
||||||
case Schemes: return localizer.getMessage("lblSchemeDeck");
|
|
||||||
case Conspiracy: return /* TODO localise */ "Conspiracy";
|
|
||||||
case Dungeon: return /* TODO localise */ "Dungeon";
|
|
||||||
default: return /* TODO better handling */ "UNKNOWN";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PaperCard> chooseCardsYouWonToAddToDeck(final List<PaperCard> losses) {
|
public List<PaperCard> chooseCardsYouWonToAddToDeck(final List<PaperCard> losses) {
|
||||||
return getGui().many(localizer.getMessage("lblSelectCardstoAddtoYourDeck"), localizer.getMessage("lblAddTheseToMyDeck"), 0, losses.size(), losses, null);
|
return getGui().many(localizer.getMessage("lblSelectCardstoAddtoYourDeck"), localizer.getMessage("lblAddTheseToMyDeck"), 0, losses.size(), losses, null);
|
||||||
|
|||||||
Reference in New Issue
Block a user