From eaf3429ceac60257747dcc4ea63645e200f5b17a Mon Sep 17 00:00:00 2001 From: Sol Date: Mon, 4 Mar 2013 03:33:01 +0000 Subject: [PATCH] - Inform the human which turn position he's in during the Mulligan Input --- .../java/forge/control/input/InputMulligan.java | 17 +++++++++++++---- src/main/java/forge/game/GameState.java | 15 +++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/forge/control/input/InputMulligan.java b/src/main/java/forge/control/input/InputMulligan.java index 85c82714684..6939ff93c8c 100644 --- a/src/main/java/forge/control/input/InputMulligan.java +++ b/src/main/java/forge/control/input/InputMulligan.java @@ -62,10 +62,19 @@ public class InputMulligan extends Input { ButtonUtil.setButtonText("No", "Yes"); ButtonUtil.enableAllFocusOk(); - final String str = - (Singletons.getModel().getGame().getPhaseHandler().getPlayerTurn().equals(Singletons.getControl().getPlayer()) - ? "You're going first. " : "The computer is going first. "); - CMatchUI.SINGLETON_INSTANCE.showMessage(str + "Do you want to Mulligan?"); + GameState game = Singletons.getModel().getGame(); + Player startingPlayer = game.getPhaseHandler().getPlayerTurn(); + Player localPlayer = Singletons.getControl().getPlayer(); + + StringBuilder sb = new StringBuilder(); + sb.append(startingPlayer.getName()).append(" is going first. "); + + if (!startingPlayer.equals(localPlayer)) { + sb.append("You are going ").append(game.getOrdinalPosition(localPlayer, startingPlayer)).append(". "); + } + + sb.append("Do you want to Mulligan?"); + CMatchUI.SINGLETON_INSTANCE.showMessage(sb.toString()); } /** {@inheritDoc} */ diff --git a/src/main/java/forge/game/GameState.java b/src/main/java/forge/game/GameState.java index 9854253bdf4..ebe30d10398 100644 --- a/src/main/java/forge/game/GameState.java +++ b/src/main/java/forge/game/GameState.java @@ -478,6 +478,21 @@ public class GameState { return roIngamePlayers.get(iPlayer); } + + public String getOrdinalPosition(Player player, Player startingPlayer) { + int startPosition = roIngamePlayers.indexOf(startingPlayer); + int position = roIngamePlayers.indexOf(player) + startPosition + 1; + String[] sufixes = new String[] { "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th" }; + switch (position % 100) { + case 11: + case 12: + case 13: + return position + "th"; + default: + return position + sufixes[position % 10]; + + } + } /** * Only game knows how to get suitable players out of just connected clients.