Add Ask AI button

This commit is contained in:
tool4EvEr
2021-06-11 23:04:39 +02:00
parent dbe1683ba9
commit 828d4e17c9
10 changed files with 43 additions and 0 deletions

View File

@@ -52,6 +52,7 @@ public final class CDev implements ICDoc {
view.getLblRemoveFromGame().addMouseListener(madRemoveFromGame);
view.getLblRiggedRoll().addMouseListener(madRiggedRoll);
view.getLblWalkTo().addMouseListener(madWalkToPlane);
view.getLblAskAI().addMouseListener(madAskAI);
}
public IGameController getController() {
return matchUI.getGameController();
@@ -309,6 +310,16 @@ public final class CDev implements ICDoc {
getController().cheat().planeswalkTo();
}
private final MouseListener madAskAI = new MouseAdapter() {
@Override
public void mousePressed(final MouseEvent e) {
askAI();
}
};
public void askAI() {
getController().cheat().askAI();
}
//========== End mouse listener inits
@Override

View File

@@ -81,6 +81,9 @@ public class VDev implements IVDoc<CDev>, IDevListener {
private final DevLabel lblRiggedRoll = new DevLabel(Localizer.getInstance().getMessage("lblRiggedRoll"));
private final DevLabel lblWalkTo = new DevLabel(Localizer.getInstance().getMessage("lblWalkTo"));
private final DevLabel lblAskAI = new DevLabel(Localizer.getInstance().getMessage("lblAskAI"));
private final CDev controller;
//========= Constructor
@@ -116,6 +119,7 @@ public class VDev implements IVDoc<CDev>, IDevListener {
viewport.add(this.lblUntapPermanent, halfConstraints);
viewport.add(this.lblRiggedRoll, halfConstraintsLeft);
viewport.add(this.lblWalkTo, halfConstraints);
viewport.add(this.lblAskAI, halfConstraintsLeft);
}
//========= Overridden methods
@@ -294,6 +298,10 @@ public class VDev implements IVDoc<CDev>, IDevListener {
return this.lblWalkTo;
}
public DevLabel getLblAskAI() {
return this.lblAskAI;
}
/**
* Labels that act as buttons which control dev mode functions. Labels are
* used to support multiline text.

View File

@@ -1989,6 +1989,7 @@ lblRepeatAddCard=Wiederhole letztes Karten-hinzufügen
lblRemoveFromGame=Entferne Karte aus dem Spiel
lblRiggedRoll=Gezinkter Weltenwürfelwurf
lblWalkTo=Weltenwandere zu
lblAskAI=Frage KI nach Vorschlag
#PhaseType.java
lblUntapStep=Enttappsegment
lblUpkeepStep=Versorgungssegment

View File

@@ -1989,6 +1989,7 @@ lblRepeatAddCard=Repeat Last Add Card
lblRemoveFromGame=Remove Card from Game
lblRiggedRoll=Rigged Planar Roll
lblWalkTo=Planeswalk to
lblAskAI=Ask AI for suggestion
#PhaseType.java
lblUntapStep=Untap step
lblUpkeepStep=Upkeep step

View File

@@ -1989,6 +1989,7 @@ lblRepeatAddCard=Repetir añadir última carta
lblRemoveFromGame=Quitar carta del juego
lblRiggedRoll=Rollo Plano montado
lblWalkTo=Planeswalk a
lblAskAI=Ask AI for suggestion
#PhaseType.java
lblUntapStep=Enderezar
lblUpkeepStep=Mantenimiento

View File

@@ -1989,6 +1989,7 @@ lblRepeatAddCard=Ripeti l''ultima azione aggiungi carta
lblRemoveFromGame=Rimuovi una carta dal gioco
lblRiggedRoll=Lancio di dado planare truccato
lblWalkTo=Viaggia tra i piani (scegli il piano)
lblAskAI=Ask AI for suggestion
#PhaseType.java
lblUntapStep=Sottofase di Stap
lblUpkeepStep=Sottofase di Mantenimento

View File

@@ -1990,6 +1990,7 @@ lblRepeatAddCard=最後の追加カードを再度追加
lblRemoveFromGame=ゲームからカードを削除
lblRiggedRoll=次元ダイスを指定
lblWalkTo=次元カードを指定
lblAskAI=Ask AI for suggestion
#PhaseType.java
lblUntapStep=アンタップ・ステップ
lblUpkeepStep=アップキープ・ステップ

View File

@@ -1990,6 +1990,7 @@ lblRepeatAddCard=重复上一张添加的牌
lblRemoveFromGame=从游戏中删除牌
lblRiggedRoll=触发时空骰
lblWalkTo=时空换入
lblAskAI=Ask AI for suggestion
#PhaseType.java
lblUntapStep=重置步骤
lblUpkeepStep=维持步骤

View File

@@ -59,6 +59,8 @@ public interface IDevModeCheats {
void planeswalkTo();
void askAI();
/**
* Implementation of {@link IDevModeCheats} that disallows cheating by
* performing no action whatsoever when any of its methods is called.
@@ -141,6 +143,9 @@ public interface IDevModeCheats {
@Override
public void removeCardsFromGame() {
}
@Override
public void askAI() {
}
};
}

View File

@@ -36,6 +36,7 @@ import com.google.common.collect.Multimap;
import forge.LobbyPlayer;
import forge.StaticData;
import forge.ai.GameState;
import forge.ai.PlayerControllerAi;
import forge.card.CardDb;
import forge.card.CardStateName;
import forge.card.CardType;
@@ -2942,6 +2943,18 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
}
});
}
public void askAI() {
PlayerControllerAi ai = new PlayerControllerAi(player.getGame(), player, player.getOriginalLobbyPlayer());
player.runWithController(new Runnable() {
@Override
public void run() {
List<SpellAbility> sas = ai.chooseSpellAbilityToPlay();
SpellAbility chosen = sas == null ? null : sas.get(0);
getGui().message(chosen == null ? "AI doesn't want to play anything right now" : chosen.getHostCard().toString(), "AI Play Suggestion");
}
}, ai);
}
}
private IMacroSystem macros;