From 832ff8a4ac8cf190424ea86a9035ec95140adff5 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Sat, 17 May 2025 21:19:55 +0400 Subject: [PATCH] other: added getAmount testable dialogs in cheat menu (part of #13638) --- .../testers/GetAmountTestableDialog.java | 60 +++++++++++++++++++ .../utils/testers/TestableDialogsRunner.java | 3 +- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 Mage.Common/src/main/java/mage/utils/testers/GetAmountTestableDialog.java diff --git a/Mage.Common/src/main/java/mage/utils/testers/GetAmountTestableDialog.java b/Mage.Common/src/main/java/mage/utils/testers/GetAmountTestableDialog.java new file mode 100644 index 00000000000..22a4659dd78 --- /dev/null +++ b/Mage.Common/src/main/java/mage/utils/testers/GetAmountTestableDialog.java @@ -0,0 +1,60 @@ +package mage.utils.testers; + +import mage.abilities.Ability; +import mage.game.Game; +import mage.players.Player; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * Part of testable game dialogs + *

+ * Supported methods: + * - player.getAmount() + * + * @author JayDi85 + */ +class GetAmountTestableDialog extends BaseTestableDialog { + + boolean isYou; // who choose - you or opponent + int min; + int max; + + public GetAmountTestableDialog(boolean isYou, int min, int max) { + super(String.format("player.getAmount(%s)", isYou ? "you" : "AI"), + String.format("from %d to %d", min, max), ""); + this.isYou = isYou; + this.min = min; + this.max = max; + } + + @Override + public List showDialog(Player player, Ability source, Game game, Player opponent) { + Player choosingPlayer = this.isYou ? player : opponent; + String message = "message with html"; + int chooseRes; + chooseRes = choosingPlayer.getAmount(this.min, this.max, message, source, game); + List result = new ArrayList<>(); + result.add(getGroup() + " - " + this.getName() + " selected " + chooseRes); + return result; + } + + static public void register(TestableDialogsRunner runner) { + List isYous = Arrays.asList(false, true); + for (boolean isYou : isYous) { + runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 0)); + runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 1)); + runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 3)); + runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 50)); + runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 500)); + runner.registerDialog(new GetAmountTestableDialog(isYou, 1, 1)); + runner.registerDialog(new GetAmountTestableDialog(isYou, 1, 3)); + runner.registerDialog(new GetAmountTestableDialog(isYou, 1, 50)); + runner.registerDialog(new GetAmountTestableDialog(isYou, 3, 3)); + runner.registerDialog(new GetAmountTestableDialog(isYou, 3, 10)); + runner.registerDialog(new GetAmountTestableDialog(isYou, 10, 10)); + } + } +} diff --git a/Mage.Common/src/main/java/mage/utils/testers/TestableDialogsRunner.java b/Mage.Common/src/main/java/mage/utils/testers/TestableDialogsRunner.java index 96e9c0a8b58..6217877dbce 100644 --- a/Mage.Common/src/main/java/mage/utils/testers/TestableDialogsRunner.java +++ b/Mage.Common/src/main/java/mage/utils/testers/TestableDialogsRunner.java @@ -30,7 +30,7 @@ import java.util.stream.Collectors; * [x] chooseUse * [x] choosePile * [x] announceX - * [ ] getAmount // TODO: implement + * [x] getAmount * [ ] getMultiAmountWithIndividualConstraints // TODO: implement *

* Support of priority dialogs (can be called by game engine, some can be implemented in theory): @@ -74,6 +74,7 @@ public class TestableDialogsRunner { ChoosePileTestableDialog.register(this); ChooseAmountTestableDialog.register(this); AnnounceXTestableDialog.register(this); + GetAmountTestableDialog.register(this); } void registerDialog(TestableDialog dialog) {